青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

流量統計:
Rixu Blog (日需博客)
日需博客,每日必需來踩踩哦..
posts - 108,comments - 54,trackbacks - 0

        在我們剛開始學習架構的時候,首先會想到分層的概念,分層架構比較經典的是三層架構,那么,什么是三層架構呢?它包括表現層,業務層,數據訪問層;而對于一個新手來說,從抽象意義上的三層架構,邏輯上就劃分為三個層。

image

這個是最基本的三層架構模式。

表現層充當系統的界面呈現以及UI邏輯的角色,也就是說,UI(用戶界面)屬于表現層;

舉一個對于asp.net WebForm來說,人們喜歡把對于UI的控制邏輯(服務器控件的讀取、設置、事件等等)寫在頁面的后置隱藏代碼中,并且依賴業務邏輯層。當然,服務器控件支持數據綁定的功能,可以通過數據源進行綁定控件。這樣就可以節省在后置隱藏中的代碼。

 

因此,我們就可以把表現層分為UI用戶界面以及UI邏輯:

image

UI用戶界面的職責只是作為數據輸入和輸出后的展示工作。

UI邏輯的職責是負責業務邏輯層以及UI用戶界面之間的數據交互,并且盡可能地讓UI邏輯不依賴于UI技術

其中UI用戶界面的實現方式有很多,包括ASP.NET,WinForm,WPF,Silverlight,移動Web,智能設備等等。

image

將表現層中UI頁面和UI邏輯分離的策略中,當前使用最多的兩種模式是MVC模式和MVP模式。

MVC模式,即模型-視圖-控制器模式,通過視圖觸發并執行某個操作,調用控制器,通過控制器去操作業務層,最終返回模型,在視圖中進行展示。這里的模型可以是一個領域模型(DM),也可以是一個數據遷移對象(DTO)。

MVP模式,即模型-視圖-展示器模式,和MVC模式有點像,不同的是MVP中視圖和模型是被完全分離出來的,視圖中定義一個接口,而展示器通過調用該接口的方法以控制視圖。因此,視圖和模型是松散的,展示器也充當了一個控制器的角色,同時它也不依賴于UI技術。

另外再介紹一種模式PM(Preentation Model),它可以說是MVP的變體,在PM中,視圖不定義接口,這里的模型只是表示視圖狀態的類,視圖中的元素被直接綁定到模型屬性上。例如在WPF中,WPF就先天的具有數據雙向綁定機制以及事件通知屬性機制。

所以它特別適用于WPF,Sliverlight等等。

image

 

在開始業務層之前,不得不說一個前提,在一個小型項目中,直接讓表現層調用業務層,足以解決所有問題。但是,當項目大到使用多種表現形式,如使用了各種UI技術,ASP.NET,WPF,移動設備等等,就要考慮在你的表現層和業務層之間增加一個層,以至于讓表現層和業務層解耦,因為業務層作為一個業務中間件的平臺,最好不要暴露于表現層中,這個層就是傳說中的服務層。架構圖又演化為:

image

服務層實際上并不執行任何具體的工作,其功能在于組織各個業務對象,服務層將業務層所有的細節對表現層都隱藏起來,服務器將組織業務邏輯層中的組件,并且通過數據遷移對象(DTO)與表現層交互,因此就產生一個DTO模型。

為了實現服務的可重用性,需要使用服務接口,表現層通過規定的接口訪問功能。服務的實現繼承服務接口,而服務的實現專注于業務層的調用

image

對于服務層,常用的方法包括Web服務、.NET Remoting、Rest以及WCF技術。

本人比較建議使用WCF作為服務,因為可以方便地通過配置達到遠程調用服務的目的。

服務層消除了兩個表現層和業務層之間的耦合,服務層可以實現一個遠程接口,達到多UI技術甚至多平臺上的通信。

當然增加服務層也有缺點,假如使用WCF服務,會增加系統的調用開銷,進而影響性能。

image

 

業務層中包含系統所需要業務過程上的實現,并與下層的數據訪問層交互。

我們通常也叫做業務層叫做業務邏輯層,但我認為業務邏輯層是屬于業務層的一方面,業務邏輯更專注于業務上邏輯算法的實現。因為業務層還可以包括其他的方面。

業務層必須包括對業務實體盡心建模的對象模型,表達了客戶的所有策略和需求的業務規則,因此就產生了領域模型

(PS:如果這里你不使用領域模型,那么需要采用業務規則層進行業務功能上的業務規則的驗證和控制)

領域模型包括對實體的屬性定義,方法定義以及實體與實體之間的關系。從這個角度上看,UML建模至關重要,通過對UML動態圖和靜態圖的描述,可以映射到領域模型中。

從服務層剛才講到了DTO模型,這里需要一個機制將DTO轉化為領域模型,所以產生了DTO映射層(DTOMapper)。

另外業務層還包括核心中間件技術,包括第三方組件,以及工作流引擎等等。

image

 

業務層需要考慮到一些與數據訪問層交互的設計模式,模式中包括事物腳本模式、表模塊模式、活動記錄模式、領域模型模式。

事物腳本模式是通過方法來執行業務流程,它是一個過程式模型,事物腳本的每個方法都有一個特定的事物腳本,它側重于業務上一系列流程上的順序操作,它實現起來很簡單,但是它有個致命的缺點就是它會造成很多重復的代碼。

表模塊模式比起事物腳本模式,具有一定的結構,它的思想也很簡單,每個數據表都定義一個業務組件(實體類,實體操作類),在.NET中更多的使用DataSet作為表模型的數據交互。但是它也有一個缺點就是它是從數據庫驅動它不適合于大量的數據表以及數據表之間的復雜關系。

活動記錄模式中的對象中,可以包含數據和方法。它接近于數據表的結構,它的對象中執行方法中可以包含CRUD操作,驗證算法,以及其他的計算功能。一般來說,領域模型不是太復雜,活動記錄模式是個好選擇。當然他也存在問題,同樣地,它對于復雜的業務上,維護的成本也很高,并且如果需求變更導致數據庫修改,就需要調整記錄對象模型中的相關代碼。

經典應用:LINQ-TO-SQL以及Castle ActiveRecord。

領域模型模式是從領域驅動設計中衍生來的,它是以業務為核心的設計模式。它對于復雜的業務邏輯,相當適用。前三種方式使用的是以數據驅動方式,數據驅動方式特點簡單,但是當系統到了一定的規模后,就會到難以維護的程度。

image

 

數據訪問層的目的很明確,主要作為提供數據持久化的功能,包括數據的讀取和寫入,另外還必須包括事務處理,并發控制等等。

操作數據庫的方法可以有兩種方式,ORM方式,ADO.NET方式。

ORM可以采用一些第三方的ORM框架來實現,ADO.NET采用ASP.NET自帶的數據庫操作來實現。

不同的數據庫具有不同的持久化實現,因此這里添加一個存儲倉庫接口層,來適應不同的數據庫實現,這里你可以使用IOC依賴注入方式進行數據庫選型,可以利用Unity、Spring.NET、Castle的IOC容器等等。

image

 

最后各個層中都可以依賴于公共基礎設施層

公共基礎設施層可以包括Common通用模塊,Logging日志模塊,Exception異常模塊,Configuration配置模塊,DI依賴注入模塊,單元測試模塊以及第三方組件(例如NHibernate、Sprint.NET、Castle、Quartz計劃任務等等)

最終圖:

image

 

總結:項目類型、項目規模以及業務上的需求,都影響著系統架構的設計,系統架構并不是一層不變的,沒有最好的架構,只有更好的架構,并且從項目中多思考系統的擴展性。文中對于架構的分析,只是從通常的角度上去考慮,在項目中,您還需要根據實際情況去做調整。

謝謝大家閱讀!

Logo
作者:Gezidan
出處:http://www.rixu.net    
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

本文轉載自 http://www.cnblogs.com/liping13599168/archive/2011/05/11/2043127.html
posted on 2011-09-30 09:26 日需博客 閱讀(273) 評論(0)  編輯 收藏 引用 所屬分類: 技術文章轉載
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美中文字幕在线| 一本色道久久综合亚洲精品不卡| 久热re这里精品视频在线6| 亚洲国产精品成人久久综合一区| 亚洲小说春色综合另类电影| 欧美经典一区二区三区| 亚洲高清av| 久久资源在线| 欧美在线二区| 国产综合第一页| 久久久高清一区二区三区| 亚洲一区二区在线| 国产精品入口麻豆原神| 欧美亚洲在线播放| 午夜精品影院| 国产综合精品一区| 浪潮色综合久久天堂| 久久国产精品一区二区三区| 国产专区欧美精品| 欧美成人免费视频| 模特精品在线| 在线视频你懂得一区| 日韩视频免费观看高清完整版| 欧美日韩午夜精品| 午夜精品久久久久久99热| 亚洲深夜福利| 国产亚洲成人一区| 欧美二区不卡| 欧美视频一区二区| 欧美一区二区高清| 久久久久久久久久久久久久一区| 亚洲国产精品悠悠久久琪琪| 亚洲精品乱码久久久久久久久| 欧美日韩精品国产| 欧美一区二区三区免费视| 欧美在线观看日本一区| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲国产另类久久精品| 欧美日韩免费观看一区=区三区 | 欧美主播一区二区三区美女 久久精品人 | 国产曰批免费观看久久久| 麻豆av一区二区三区久久| 欧美大片网址| 欧美在线free| 欧美成人网在线| 亚洲欧美一区二区原创| 久久亚洲国产精品一区二区| 夜久久久久久| 久久国产精品久久国产精品 | 99国产精品久久久久久久成人热| 国产精品入口66mio| 亚洲二区精品| 国产网站欧美日韩免费精品在线观看| 欧美阿v一级看视频| 在线成人www免费观看视频| 久久综合九色| 欧美激情中文字幕乱码免费| 欧美一级专区免费大片| 免费在线欧美黄色| 久久久久久久综合狠狠综合| 欧美精品一区在线| 久久最新视频| 国产欧美短视频| 日韩视频不卡| 亚洲美女淫视频| 久久天天躁夜夜躁狠狠躁2022| 亚洲一区二区三区在线观看视频| 久久久久五月天| 午夜欧美大片免费观看| 欧美成人中文| 老鸭窝毛片一区二区三区| 国产欧美日韩另类一区| 国产日韩一区在线| 91久久久久久久久| 国产综合色精品一区二区三区| 91久久国产综合久久| 精品99视频| 午夜在线一区| 午夜一区二区三视频在线观看| 欧美福利影院| 欧美肥婆在线| 激情六月婷婷综合| 欧美在线视频网站| 欧美一级二级三级蜜桃| 欧美日韩在线大尺度| 亚洲国产一区在线观看| 最近中文字幕mv在线一区二区三区四区 | 国产综合自拍| 久久成人精品视频| 欧美一区二区精品| 国产精品久久久久久久午夜| 一区二区三区精品视频| 亚洲色图自拍| 欧美性片在线观看| 9色porny自拍视频一区二区| 亚洲特级片在线| 国产精品高精视频免费| 亚洲一区二区三区精品视频 | 久久激情婷婷| 久久综合九色欧美综合狠狠| 精品99一区二区三区| 久久久久九九九| 欧美阿v一级看视频| 亚洲精品偷拍| 欧美日韩中文另类| 亚洲伊人一本大道中文字幕| 亚洲欧洲av一区二区| 国产日韩一区二区| 久久久国产午夜精品| 欧美激情aⅴ一区二区三区| 91久久精品视频| 欧美视频一区在线| 午夜精品理论片| 麻豆九一精品爱看视频在线观看免费| 在线免费观看成人网| 亚洲国产精品黑人久久久| 麻豆国产精品777777在线| 欧美一区成人| 亚洲第一黄色网| 欧美日韩国产天堂| 一卡二卡3卡四卡高清精品视频| 亚洲免费视频成人| 国产一区二区三区在线播放免费观看 | 亚洲欧美一区在线| 亚洲第一福利社区| 欧美视频一区二区三区…| 欧美一区综合| 亚洲精品国产精品国自产观看| 亚洲综合激情| 一区二区自拍| 欧美午夜不卡在线观看免费| 久久九九精品| 亚洲视频在线观看网站| 久久综合亚州| 亚洲在线1234| 亚洲国产精品精华液2区45| 欧美午夜激情小视频| 久久久欧美精品| 亚洲一级在线观看| 亚洲国产成人在线| 久久―日本道色综合久久| 一本久道久久综合中文字幕| 激情视频一区二区| 国产精品红桃| 欧美精品成人91久久久久久久| 欧美中文字幕在线观看| 亚洲视频精选在线| 亚洲品质自拍| 欧美丰满少妇xxxbbb| 久久久精品999| 午夜精彩视频在线观看不卡| 一本不卡影院| 亚洲人成在线观看| 黄色成人在线免费| 国产精品地址| 欧美日韩一区国产| 欧美黄色片免费观看| 久久青草欧美一区二区三区| 亚洲一区二区三区午夜| 野花国产精品入口| 亚洲三级免费电影| 亚洲国产精品尤物yw在线观看| 久久一区中文字幕| 久久精品首页| 欧美一区二区在线视频| 亚洲尤物视频网| 亚洲一区亚洲| 亚洲欧美国产日韩中文字幕| 一本久久综合亚洲鲁鲁五月天| 亚洲黄色免费| 亚洲狠狠丁香婷婷综合久久久| 伊人狠狠色丁香综合尤物| 国产综合香蕉五月婷在线| 国产精品综合视频| 国产精品午夜春色av| 国产欧美一区二区视频| 国产欧美欧洲在线观看| 国产乱理伦片在线观看夜一区| 国产精品久久久久av免费| 国产精品亚洲精品| 国产老肥熟一区二区三区| 国产精品理论片| 国产精品影片在线观看| 国产一区二区主播在线| 狠狠色2019综合网| 欧美视频一区| 国产日韩欧美一区二区| 国产一区二区三区高清在线观看| 欧美不卡视频一区发布| 女生裸体视频一区二区三区| 夜夜爽av福利精品导航| 一区二区三区日韩欧美| 亚洲一区二区三区精品动漫| 在线一区亚洲| 午夜伦理片一区| 久久夜色精品亚洲噜噜国产mv| 免费观看成人| 亚洲国产日韩美| 一区二区三区日韩| 欧美一级在线视频|