1. 程式人生 > >ATK-DataPortal 設計框架(一)

ATK-DataPortal 設計框架(一)

無論是簡單的還是複雜的框架,總需要一個開始的原點,ATK-DataPortal中包含了所有基礎類的定義。

一、業務框架基礎類

1、BusinessBase:所有業務類的根類,要使用ATK庫的類,必需繼承此類。

2、BusinessEditBase:可編輯業務類根類;

3、BusinessListBase<D>:所有業務列表類的基類,要使用ATK庫的列表類,必需繼承此類,此類與BusinessBase。

(一)、業務類的基類 BusinessBase

[Serializable]

public abstract class BusinessBase : IBusinessObject, IBusinessTrace, IBusinessContext

    {

    }

由於此類是所有業務類的根類,要使其能適應大多應用場景,其功能不能定義過多,否則易形成藕合。框架本身是需要支援分佈環境,因此定義了一些基本的能攜帶訪問資訊的屬性。

1、AccessPath:當前訪問是一個簡單三層設計時,其值一為本地“Local-out”,當是通過WCF服務訪問時,其值為WCF終結點名;

2、AccessAddress:當訪問為本地訪問時,其值為“Local Access”,當是通過WCF服務訪問時,其值為WCF終結點設定的訪問地址資訊;

3、State:攜帶類訪問資料時的附加資訊,如資料訪問記錄數,是否訪問成功,如果未訪問成功,攜帶回訪問錯誤資訊。

4、Context:上下文管理,由DataPortalContext提供在客戶端和伺服器之間提供一致的上下文資訊資料門戶物件。

5、Criteria:類訪問引數,為BusinessCriteria定義,是資料訪問的重要信使;

6、Op:使用者訪問許可權,由RecordOperater定義

這個類基本定義就這麼多。

(二)、可編輯業務類 BusinessEditBase

此類直接繼承於BusinessBase,沒有增加更多的定義,為後期擴充套件時使用;

 [Serializable]

 public abstract class BusinessEditBase : BusinessBase

    {

    }

(三)、業務列表類的基類 BusinessListBase<D>

[Serializable]

public class BusinessListBase<D> : List<D>, IBusinessListObject, IBusinessTrace, IBusinessListContext

        where D : BusinessBase

    {

    }

此類是所有業務列表類的根類,其中除其是列表業務類外,大多屬性與業務類BusinessBase相同。

以上三個型別為整個框架的基本型別,定義簡單,儘量設定成與使用者介面無關型別。

二、基類是否過於簡單

我們在設定框架時,需定義一些基礎型別,我們並非是從一個毫無基礎的情況下設定,不論是基於.Net的哪個版本,還是java還是其他別的語言等都有相應的非常豐富的基礎框架庫,這些基本框架定義了足夠多功能的型別讓我使用。

設計一個滿足大多場景的框架,幾乎是不太可能的,在面對不同的作業系統,不同的硬體互動,不同的互動協議。應用的本身是一系列訊息的互動,這些訊息要麼顯示出來讓人類理解,要麼轉換成硬體所能理解的指令,本質上都是各種訊息的傳遞和轉換。我們所設計的型別、各種功能庫,不過是去如何處理好這此訊息,並將這些訊息轉化成各方理解的指令、資訊。

當我們在經驗尚少時,總是想設計出一個一蹴而就的類或庫,最終在各種需求變化和技術變化中變得難以修改和使用,在不斷的型別增加和修加,系統程式碼變得越來越難以維護,加之文件的缺失、開發人員的變動,最終變得無約可救,一功又迴歸重構,新的一次輪迴再次上演。 低藕合、高內聚、分離關注點這些觀點現在在大多資料開發人員熟悉,但要做到確實是一件較難的事,技術的傳承本就是一件難事,企業的興衰、市場的逐利,讓我們不斷的重複製造著輪子。

三、輔助類

1、BusinessCriteria:引數類

2、BusinessTraceSign:資料訪問跟蹤類;

----

1、一個完整支援分散式服務框架;

2、程式碼生成工具,可快速生成基於服務框架的應用;

3、其他支援庫

4、完整程式碼可在GitHub的https://github.com/azthinker ;開源中國 https://gitee.com/azthinker

目標:使應用開發,低程式碼、高效率、快迭代

有興趣的請在QQ群中參與討論、聯絡作者  QQ群名稱:ATK高效開發 ,QQ群號:747049962

也可發郵件至:[email protected]

Demo中的資料庫、編譯好的程式碼工具連結:https://pan.baidu.com/s/1B9RQm7_-SFyhLb_HLIGs0w 密碼:85q6

ATK Demo使用的資料庫 : https://download.csdn.net/download/xftyyyyb/10675497

ATK自動程式碼工具 :https://download.csdn.net/download/xftyyyyb/10675490