序
這篇日記是記錄我在開發
wcf中所遇到的問題,以及解決的方法。這個專案並不是乙個從零開發的專案,某種程度上可以被看作是從
2層架構到
3層的遷移。
其中遇到了很多問題,包括技術的和非技術的。這些都將會被我一一記錄。這些經驗和技術實踐可以被用作
soa專案的參考。
專案的總覽:
wcf和
wpf都是
ms的新技術,
wpf被用來構造新一代的ui,
wcf則是新一代分布計算的開發平台。與
com+
不同wcf
有著學習曲線平緩,開發周期短的優勢。
現在我要做的工作是將同事之前開發的
wpf + database 的2
層應用移植成為
3 層的
soa。個人認為這是一種重構,這是一種從
c/s => soa
的重構。
問題1,
如何分層
(how to layer?)
3層presentation, domain and database
毫無疑問,這是被無數次企業開發實踐證明過的,可行的方法。現在的問題是
domain layer(
微軟稱之為
biz logic)
內部是什麼樣子的。是把所有邏輯混雜在一起嗎?
我們說當然不是,
fine-design
是為了更好的可重用和更好的擴充套件。那麼如何可以讓我們
domain
是fine-design
?這是個問題,每個人有自己的解決方案,包括
martin fowler 在中
也說過,他的意見只是參考,乙個好的架構師不能失去的是自己的想法和判斷力。要想邏輯清晰當然要分層,我的想法是在
domain
內部也要分層。第1
層,也就是最外那層。當然是
service layer
,它的任務很簡單負責和
ui互動,提供
ui所需要的一切服務。當然在
ui所需要的所有介面中,可以根據邏輯和行為對它們(所有的介面函式)進行介面的劃分。這樣一來,可重用和擴充套件性都有了保障。感謝
wcf它為我們做了這一切,在
wcf中可以使用稱之為
contract
的概念將不同的介面函式劃分成可重用的介面。第2
層是真正的
domain layer
,這一層的實現的方法很多,最簡單的方法就是使用乙個類,它的每乙個函式就是乙個訪問資料庫的邏輯,當然了,它的劣勢是擴充套件性差。如果是小型的企業應用,這種方法無疑是最好的。另一種方法複雜些,不過有著更好的擴充套件性。將不同的訪問邏輯提取出抽象介面,根據
strategy pattern
暴露給上層應用。
strategy pattern
保證了良好的擴充套件性。即使有新的邏輯加入,所需要的也不過是乙個性的邏輯類,當然這個類要實現
strategy
的所有介面。 第
3層資料訪問層,
object to relation
的相互對映乙個是乙個問題。類是物件導向的而資料庫是面向
record
的。無數人給出了
的方法,包括
linq
技術。使用
.net
作為開發平台某種程度上避免了這種痛苦
datatable, datarow and dataset
讓我們的工作輕鬆了很多。它同時也讓
memory-update
成為可能。
MAS開發日記 1
我一直認為,乙個良好的軟體開發企業,必須有以下品質 1。軟體質量穩定 2。開發效率高 3。可維護性,以及持續性維護性要高 4。產品或服務針對某個細分市場,具有獨特的價值。根據我們小型軟體團隊的實際情況,我們總結了一套軟體開發的標準管理規範和操作指引,並自主研發了乙個軟體開發的平台,通過這些工作,我們...
專案開發日記(1)
今天是2022 04 15,系統已經開發到v1.1了。我亂命名的,我也不懂怎麼給版本命名。就這樣把,v1.0也就是前兩天的事,當時把整個系統主要一點的功能做出來了,做出來就算成功!v1.1就是接著v1.0繼續把功能實現下去。亂命名的,搞的後面都不知道該是v1.2還是v1.1.1了。目前是大四馬上畢業...
wcf學習日記 2014 7 1
wcf的所有的服務都會公開契約,即描述服務功能的基本方式 wcf的契約有4種 服務契約 描述客戶端能夠執行的服務操作 資料契約 描述與服務互動的資料型別 int,string隱式定義了契約 錯誤契約 描述服務出錯如何處理 訊息契約 允許服務可以直接和訊息互動 定義和實現服務契約 servicecon...