天天看點

[原創].NET 分布式架構開發實戰五 Framework改進篇

.NET 分布式架構開發實戰五 Framework改進篇

  前言:本來打算這篇文章來寫DAL的重構的,現在計劃有點改變。之前的文章,園子裡的朋友給出了不少的回報,特别感謝金色海洋和Virus兩位朋友的一些回報。周末的這兩天,對文章中開發的那個Framework做了一些改進,雖然說系列文章會慢慢的給出代碼,但是這兩天的一些想法讓我很興奮,迫不及待的和大家分享一下,也當是對文章中以後給出的Framework先睹為快吧。

  系列文章連結:

<a href="http://www.cnblogs.com/yanyangtian/archive/2010/05/24/1742432.html">[原創].NET 分布式架構開發實戰之二 草稿設計</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/05/26/1744064.html">[原創].NET 分布式架構開發實戰之三 資料通路深入一點的思考</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/05/28/1746334.html">[原創].NET 分布式架構開發實戰之四 建構從理想和實作之間的橋梁(前篇)</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/05/31/1747811.html">[原創].NET 分布式架構開發實戰五 Framework改進篇</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/06/03/1750444.html">[原創].NET 業務架構開發實戰之六 DAL的重構</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/06/07/1752921.html">[原創].NET 業務架構開發實戰之七 業務層初步構想</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/06/09/1754426.html">[原創].NET 業務架構開發實戰之八 業務層Mapping的選擇政策</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/06/17/1759327.html">[原創].NET 業務架構開發實戰之九 Mapping屬性原理和驗證規則的實作政策</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/06/28/1766442.html">[原創].NET 業務架構開發實戰之十 第一階段總結,深入淺出,水到渠成(前篇)</a> <a href="http://www.cnblogs.com/yanyangtian/archive/2010/06/28/1766460.html">[原創].NET 業務架構開發實戰之十 第一階段總結,深入淺出,水到渠成(後篇)</a>

  本篇文章涉及技術不多,主要是些想法(代碼部分正在實作)。

  最主要的改進主要在于業務層開發的簡化。

  大家都知道系統的核心就是業務邏輯層了,業務邏輯的代碼往往得我們一行行的敲代碼,而且不同的系統,每次都得一行一行的重頭來寫,這樣的開發的效率可想而知了。基于這個原因,是以很有必要用一些工具和方法來加速開發。

  經過這兩天的思考,個人認為最大的改進就是:業務邏輯類的圖形化配置。我先給出圖的示例,然後再詳細的說明這個思想。

[原創].NET 分布式架構開發實戰五 Framework改進篇

  大家知道,在一個BLL類中包含了大量的業務規則和驗證規則,而且這些規則往往需要手工來寫,特别是一個業務類的一些屬性,要對他們的資料類型,長度,格式,狀态更改跟蹤,是否可以讀寫等進行驗證,雖然說現在已經有了一些類庫可以使用,如Enterprise Library中的Validation元件,但是我們還是要寫代碼,如果把這些規則通過圖形化的拖拽的方式,或者圖形的配置方式來生成C#代碼,然後需要定制的部分再手動的修改,這樣開發就簡化多了(甚至可以把自動生成的代碼和需要手寫的代碼分别放在partial類中,大家可以想想VS中開發Window程式時,VS就把那些自動生成的代碼放到了另外的一個partial類中)。用過Enterprsie Library的朋友已經很清楚那個圖形化配置工具的威力。

  首先,來看第一個圖(設計的草圖)。

  當我們新添加了一個業務類的以後,假設這個業務類的為 Product,在”解決方案”管理器中點選右鍵,選擇”配置業務類”,就會彈出圖形化的配置窗體,從草圖中可以看出:

1.       Properties,為業務類添加的屬性。

2.       DataProvider,這個配置表明了業務類使用哪個資料提供者:AdoDotNetProvider,LinqProvider,EntityFrameworkProvider.(這些Provider就是之前DAL系列文章最終會完成的那些Provider)

3.       MappingType這個業務類和那個資料來源體映射,這裡有兩個選擇:DataTable,DataEntity(Linq實體或者EF實體,DataTable 的改進是來源于金色海洋和virus,thanks)

4.       MappingTypeName:這個配置項就表明這個業務類會和哪個資料來源體的屬性進行映射,如,在上面選擇了MappingType為DataEntity,而且選擇DataEntity的名字MS_Product(通過Linq生成的實體,對應資料庫中的MS_Product表)。當然,一個業務類的屬性字段可能來自多個DataEntity的組合,是以,這裡的MappingTypeName是多個。

  下面來看第二個草圖。

            這個圖的出現時當點選了第一個圖中的Properties出現的,這個界面就是專門來配置業務類的具體的屬性的。

    Name:就是屬性的名字。

    MappingTo:就是指出要和哪個資料實體的哪個屬性映射。(之前第一個界面已經制定的資料實體)。

    ValidationRules:用來指定為這個屬性使用哪些規則。

    下面就來看看第三個草圖。

    這個草圖和之前的第二個草圖類似,隻補過這個界面是專門用來給特定的屬性配置驗證規則的。

    就介紹到這裡了,希望大家以後多多提出意見,便于進一步的改進,最後開發的Framework會以源代碼的形式給出的。