淺談自己去設計的一套簡單的系統架構

來源:互聯網
上載者:User

     這篇文章談一談如果我是個軟體架構師(自己還遠遠不夠一個架構師),自己如何去設計一套系統。當然自己才疏學淺,考略不周,但是寫的都是自己思考過的和掌握的知識。

    我沒做過多資料庫和多種語言開發的系統,所以這裡的資料庫只限定於SqlServer和dotnet平台。

資料庫訪問部分:

    這裡的核心是預存程序。我設計的這套系統的架構資料訪問部分以預存程序為核心。分為四個部分:

    1、預存程序:資料庫操作都是預存程序。

    2、實體層:實體類的屬性和資料庫表的欄位一一對應,有多少個表就有多少實體類。

    3、資料訪問層:資料訪問層的代碼是用來調用預存程序的。

    4、資料商務邏輯層:資料商務邏輯層用來調用資料訪問層。

    這裡只想談談資料的查詢。這個簡單的架構中,使用DataSet來取值,對於一條記錄的查詢(也就是根據主鍵來查詢的操作),我將擷取的DataSet中的DataTable的第一筆記錄,並轉換成一個實體,將這個實體將由資料訪問層傳遞到資料商務邏輯層。對於串連查詢或者多筆記錄的查詢,直接使用DataTable或者DataSet來傳遞(對於串連查詢如果使用List我感覺十分不便,使用DataTable或則DataSet卻非常方便)。資料查詢都通過分頁處理。

    說明:這些資料庫訪問的代碼可以由CodeSimith,或者自己寫的代碼產生器去產生。

資料通訊部分(服務):

    這個使用WCF技術,將前面述說的資料庫訪問層的代碼放在WCF服務中。

    根據用戶端的需求情況定義WCF的服務契約。在WCF服務契約中調用資料訪問部分中的資料商務邏輯層。

    使用WCF的好處在於你可以不用考略用戶端是使用什麼技術開發的,方便的進行分布式開發。

    WCF服務與用戶端資料交換使用字串。如果有資料商務邏輯層返回的是一個實體,則將此實體序列化為字串;如果是DataTable,也序列化為字串。

用戶端部分(UI):

    這裡以ASP.NET MVC實現用戶端為例。當然用戶端可以多種多樣,你也可以使用Windows Form、WPF、ASP.NET等。

    我們知道ASP.NET MVC,可以分成 Model、View、Controller。

    Model:使用Repository模式。會在Repository中定義一些方法去調用WCF。對於實體類,一部分可以直接沿用第一部分的資料訪問中的實體類。我們還可以定義一些ViewModel。由於在WCF服務中擷取的資料是字串,這個需要一個步驟將它們轉換為實體或者DataTable。對於是實體的字串,直接還原序列化就行了。對於DataTable,還原序列化為DataTable之後,還將它轉換成List。對於多表串連查詢的情況,我們在MVC項目中會定義一個對應的ViewModel,將此類預存程序查詢出的DataTable轉換成ViewModel的List。

    Controller:使用依賴注入的方式。通過Controller的建構函式注入Repository。

    View:這部分重點是美工。

異常處理:

    可以參考我翻譯的這篇文章異常處理準則

Tlog:

   

緩衝:

    Memcached

總結:這個是我自己思考出的一個東西,並沒有在實際中運用。歡迎大家批評指正。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.