簡體   English   中英

客戶端到WCF服務的應用程序體系結構

[英]Application architecture for client to WCF service

我對構建包含以下內容(需要重構)的應用程序的正確方法感到好奇:

Excel加載項COM-Visible客戶端庫,其中包括暴露給Excel的WinForms和方法(計算調用和表單激活方法),然后使用客戶端庫中的功能連接到WCF服務。 WCF服務當前包含計算邏輯,驗證邏輯,通過ORM工具的數據庫訪問。

即Addin->客戶端DLL中的Winform / Direct調用-> WCF-> DB或計算

目前,這僅存在於2個項目中。 我的第一步雖然是重新架構,如下所示:

客戶端項目

  • Excel“視圖”(Project.Client.Excel),這將COM可見性級別限制為一個項目。
  • WinForm“視圖”(Project.Client.UI)
  • 兩組“視圖”的演示(Project.Client.Presenter)

服務器端項目

  • WCF的“視圖”包括數據傳輸對象? (Project.Server.WCF或服務)
  • 服務器端演示者(Project.Server.Presenter)?
  • 業務邏輯(Project.Business)
  • 數據訪問層(Project.DAL)

我的問題是:

  1. DTO應該在WCF項目中還是作為自己的圖書館/項目坐在哪里?
  2. 實體轉換例程在哪里(數據實體<>業務實體<> DTO)? 全部在業務邏輯層中,還是全部在服務器演示器中?
  3. 這種方案的正確架構應該是什么?
  4. 還有很多我可能想念的嗎?

重構的部分想法是糾正體系結構,分離關注點等,並使單元測試包含在設計中。

DTO應該在WCF項目中還是作為自己的圖書館/項目坐在哪里?

您不希望它們出現在WCF項目中,因為這意味着客戶端將不得不引用該服務器端項目。 最好將DTO,WCF服務合同(接口)等保存在服務器和客戶端項目都可以引用的單獨的“公共”項目中。

實體轉換例程在哪里?

數據訪問層中的數據實體<->業務實體; 業務邏輯中的業務實體<-> DTO。 當然,在所有層上使用數據實體也是完全可以接受的,從而避免了需要保持更新的所有這些不同實體和映射代碼。 我想這取決於您系統的復雜性,但請看一下EF4 POCO。

至於您的其他問題,在不了解您的要求和設計的更多信息的情況下,您看起來正處於項目清單的正確位置。

這就是我的結構方式,但是這個問題沒有100%正確的答案。 在使您的工作舒適之前,許多變化都是有意義的。

  • Excel“視圖”(Project.Client.Excel),這將COM可見性級別限制為一個項目。
  • WinForm“視圖”(Project.Client.UI)
  • 兩組“視圖”的演示(Project.Presenter)
  • WCF主機(Project.Service)-具有* .svc文件的網站(如果您在IIS中托管)(此處沒有合同)。 這里沒有太多的業務代碼,僅用於BLL中實現的托管方法。
  • 業務邏輯(Project.Business)
  • 數據訪問層(Project.DAL)
  • 合同(Project.Contract)-操作和數據合同。 這是WCF客戶端,服務器和BLL都使用的庫。
  • 共享(Project.Shared)-更好的結構依賴關系的通用幫助器。

DTO應該在WCF項目中還是作為自己的圖書館/項目坐在哪里?

合約

實體轉換例程在哪里(數據實體<>業務實體<> DTO)? 全部在業務邏輯層中,還是全部在服務器演示器中?

中小型項目業務。

這種方案的正確架構應該是什么?

你似乎還好。

服務器端演示者(Project.Server.Presenter)-這對我來說沒有意義,因為沒有使用它的GUI

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM