日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[原创].NET 分布式架构开发实战之一 故事起源

發布時間:2025/4/14 asp.net 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [原创].NET 分布式架构开发实战之一 故事起源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

閱讀: 1320 評論: 18 作者: 小洋(燕洋天工作室) 發表于 2010-05-23 09:03 原文鏈接

.NET 分布式架構開發實戰之一 故事起源

?

  前言:本系列文章主要講述一個實實在在的項目開發的過程,主要包含:提出問題,解決問題,架構設計和各個邏輯層的實現以及新問題的出現和代碼的重構。本系列文章以故事的形式展開,而且文章列舉的很多項目的名稱,大家也用太關心,很多都是虛擬的。

?

?????? 本篇主要講述項目的一些背景。

?????? 新人Richard被分配到了一個企業自動化信息管理項目組--Automation Information Management Project(后面簡稱AIM),當Richard進入項目組的時候,這個項目已經開始了,項目的架構也已經在兩周之前構建好了--SOA架構,而且使用的主要技術也敲定了:WCF, Linq.

?????? :因為項目是首次采用"新技術"(因為以前沒有使用WCF,Linq,所以被稱為新技術),項目就這樣開始進行了。

?

?????? 半年之后問題就開始出現了(其實問題就一開始就出現了,只是大家還認為問題不大):因為當初在設計的時候,項目的架構是由項目組的其他兩個人設計的,整個項目開發基本上就沒有采用面向對象的思想來開發,而且雖然在架構設計上分了:數據層,業務層,服務層,和UI層,但是各層之前是緊緊的耦合,可以說是“牽一發而動全身”:如數據訪問層稍微一改,業務層就跟著動,然后改變一層層的開始波及。

?

?????? 大家都開始覺得這樣很累,但是項目已經做到這個階段了,不可能重來。每次新需求一來,項目的的改動可以說是天翻地覆。而且當初設計架構的那位仁兄也就項目一開始的一個月后就走了。

?

?????? 下面的圖就展示項目中的架構設計:

   

??????

  ?咋一看起來還是不錯的,一般的架構都是這樣設計的。下面就開始講述它們之間的一些調用關系,看看有什么問題:

?????? 數據訪問層:

??????

?

????public?class?EmployeeDAL
????{
????????
public?List<Employee>?GetAllEmplyees()
????????{
????????????
//...
????????}???????????
????}

?

??????

?????? 其中Employee就是Linq生成的一個實體對象。

?

?????? 業務層:

?

??????

代碼 ????public?class?EmployeeBL
????{
????????
public?List<Employee>?GetAllEmplyees()
????????{
????????????EmployeeDAL?employeeDAL?
=?new?EmployeeDAL();
????????????
return?employeeDAL.GetAllEmplyees();
????????}
????}

?

?

?????? 服務層:

??????

???????

?

代碼 ????public?interface?IEmployeeServices
????{
????????List
<Employee>?GetAllEmplyees();
????}


????
public?class?EmployeeServices?:?IEmployeeServices
????{
????????
public?List<Employee>?GetAllEmplyees()
????????{
????????????EmployeeBL?employeeBL?
=?new?EmployeeBL();
????????????
return?employeeBL.GetAllEmplyees();
????????}
????}

?

?

?????? 然后就是在客戶端生成代理,然后在UI中就調用了提供的方法。

?

?????? 現在一個最明顯的問題就是:把數據層的數據實體Employee一層層的傳遞,最后到了客戶端的UI代碼中,而業務層中的EmployeeBL基本上沒有起到什么作用,只是起到一個過渡的作用,只是在Insert Update,Delete的時候,對一些字段進行了相應的CheckValidation,如Email格式是否正確等等。其他的一些流程的Check也是代碼的堆積,業務類很""。

?

?????? 總的看起來就是"牽一發而動全身"的效果。

?????? 而且在開發過程,分層的好處基本沒有體現出來。

?

?????? 在業務類的設計的時候,所有的業務類都顯得比較的"",之所以這么說,主要是基于這樣的一個思想:

?????? 都知道,在面向“對象”設計的過程中,每個類就好比一個人,實例化一個類就好比生成了一個人,這個人可以在一出生就具備很多的能力(天生秉異),如異常處理,日志跟蹤,緩存,通用的驗證機制等等;也可以一出生什么都不會(或者只會做最基本的幾件事情)。之前的業務類實例化之后就生成一個非常普通的人。每個類都得重寫很多的基礎代碼,說到通用那就只是copy代碼。如果想要使得新生成的類很強大,具備很多功能,在設計的時候可以讓這些類繼承一個功能比較強大的基類。當然繼承只是實現方式的一種。

?

?????? 現在Richard已經被分到了另外的一個項目組(也是本系列文章要講述的一個項目,就稱為項目進度管理系統—Project Process Management(PPM)),而且擔任了架構的設計和開發(之前的架構設計Richard沒有發言權)。有了前車之鑒,在新項目開發之前的幾個月,Ricahrd首先就開始了通用架構的設計,目的有兩個:

?????? 1.解決之前項目的問題:不靈活,不通用,每次都做重復性的事情等。

?????? 2.結合自己的考慮,開發一個Framework,使得開發更加的快速,靈活,強大。

?

?????? 其實在項目真正開始了之后,不可能給你幾個月的時間去設計架構的。其實在AIM出現問題之后,Richard就已經在構思如果開發一個通用的Framework通用”--不表示就是到處可用,因為公司的一直是開發某一領域軟件的,比如現在的公司就擅長開發企業管理的一些軟件,所以開發出一個基于領域模型的架構和框架還是有可能的)。Richard也想挽救AIM,由于諸多原因,想法終究只是成了想法。

?

?????? 在從AIM項目出來之后,Richard又開始了另外的一個項目的開發,名稱我們暫時就虛擬的稱為EMS(Employee Management System),EMS項目不是很大,公司解決讓Richard一個人開發這個項目。這個項目給了Richard很多的時間來考慮架構設計和Framework設計的時間,因為EMS項目不是很復雜,而且技術和進度都在掌控之中,在正常上班時間就可以到時候定期交付。所以每天下班之后,Richard開始加班去構思Framework的設計,開發的時間越長,技術就應該沉淀的越多,如以通用類庫,組件的方式或者解決問題方案的文檔等出現。只有這樣,下次的開發才更加的快速。

?

?????? 3個月下來,EMS項目完成了。而且Richard設計的Framework也有了雛形。準確的說,還只能稱為 基礎架構基本完成。EMS沒有采用這個Framework來開發,因為Framework的設計和實現于EMS是同步進行的。

?

?????? Richard心里是這樣認為的:設計通用的架構,然后在項目中不斷的錘煉,更新,產生出通用的代碼,然后演化為Framework。只有設計出了自己的Framework,以后的開發才有可能進入"光速開發"。

?

?????? 在這個項目開始之初,Richard就和其他幾個組員討論了如何實現,同時也推出了自己開發的成果。商量之后,決定采用Richard的設計。

?

?????? Richard在設計架構的時候,也參考了現在流行的一個Framework,Spring.NET ,CSLA.NET, Nhibernate,主要吸收它們的一些思想,同時也分析了這些Framework對自己項目的利弊。而且認為:沒有絕對萬能的技術,一個架構的實現需要在很多的因素之間權衡,技術不是用來show的,而是用來解決問題,這就是技術的價值。

?

?????? 本系列文章就展示整個構思,設計,實現的過程。本系列文章所要開發的項目的價值可能不大,本系列文章的價值在于架構的思考和設計過程,一步步的演化過程。?  

  謝謝大家:)

  下篇文章:.NET 分布式架構開發實戰之二 草稿設計

?

  歡迎大家參加企業級項目開發團隊

?

  版本規個人和博客所有,轉載請標明出去和作者。

?

??????

?

?

?

評論: 18 查看評論 發表評論

有道難題2010網易編程挑戰賽


最新新聞:
· Google談搜索:微軟財大氣粗 需時刻提防(2010-05-24 11:51)
· 盛大文學進軍網頁游戲 業內人擔心難逃同質化(2010-05-24 11:49)
· 丁磊開始買紅酒:聯手溫州資本開酒莊(2010-05-24 11:43)
· 微軟Windows、McAfee、Firefox漏洞回顧(2010-05-24 11:33)
· HTML簡史:HTML5將于2012年被接納為候選標準(2010-05-24 11:29)

編輯推薦:為什么硅谷最牛的人都是在創業公司?

網站導航:博客園首頁??個人主頁??新聞??閃存??小組??博問??社區??知識庫

轉載于:https://www.cnblogs.com/tanshuicai/archive/2010/05/23/1742677.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的[原创].NET 分布式架构开发实战之一 故事起源的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。