服務訊息、業務實體以及資料實體

來源:互聯網
上載者:User

標籤:http   使用   strong   資料   問題   代碼   工作   sp   on   

名次解釋

 

服務訊息 - 分布式應用中各個服務之間傳遞的訊息,以WCF為例的話就是資料契約。

業務實體 - 業務物件模型、領域模型中和業務相關的實體。

資料實體 - 完全和關係型資料庫結構對應的資料實體。

 

問題

 

    今天有人在MSN上問了我一個問題引發了我的思考,問題大致如下:

最近在學習3.0的一些技術,比如WCF和LINQ,我嘗試使用這些技術寫一個分布式的新聞系統,系統的構架如下:

※     一個資料訪問層,其中包含了一個資料實體(自動產生的)。資料訪問層使用Linq To SQL進行資料訪問操作,並且把資料從資料實體轉化為領域模型中的業務實體。

※     一個商務邏輯層,以領域模型為核心。商務邏輯層使用Linq To Object再把業務實體轉化為WCF的資料契約。

這樣,整個項目中就有了三個實體:

※     資料實體 - 和資料庫對應的實體:新聞類、評論類;

※     業務實體 - 有層次及依賴關係的一些類:新聞基類、普通新聞類和重要新聞類分別繼承新聞基類,新聞基類持有評論類的彙總;

※     服務訊息 - 供WCF作為訊息的實體:還是新聞類和評論類,和資料實體相比少了一些不必要的屬性。

等新聞系統做好之後我就非常鬱悶,我不知道我幹了一些什麼:

※     從資料實體到業務實體之間的轉換非常麻煩,而業務實體又不適合作為資料契約。業務實體的意義何在?

※     幾次轉換再加上WCF(基於HTTP),整個系統的效能奇差,WCF以及Linq先進的構架反而不如以前ADO.NET加上單物理伺服器的構架?

 

討論

 

    這位朋友的疑惑涉及到很多已經討論了很久的話題:

※     ORM的意義?

※     分布式(或者說面向服務)的意義?

※     領域模型的意義?

我認為:

※     很多時候,我們的思考都反了,不是說要OO才ORM,而是我們在建立了領域模型之後需要做持久化的工作,完善的ORM架構能幫我們做這個轉換、儲存的工作,減少了代碼量。

※     Linq To SQL主要還是針對資料庫模型(資料實體),並不能處理非常複雜的領域模型的持久化,可以關注ADOEF。

※     很多時候我們覺得一個概念沒有什麼意義,或者說帶來的反面效果比正面效果還大的時候往往是因為拿大炮打蚊子了。領域模型、SO、OO都是由於當前的理念滿足不了大型項目的要求而產生的,不是所有的項目都適合這些概念的。

※     有的時候看問題站在一個比較高的角度來看更客觀。比如從一個操作來看待效能問題不太客觀,應該從整個項目乃至整個系統(無數伺服器)的角度來看。

 

請大家討論…………

(由於大部分內容直接從MSN的對話中複製過來,所以比較亂,如果dudu覺得不合適馬上移走)

服務訊息、業務實體以及資料實體

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.