我明白這可能會被解釋爲一個意見問題,但它是技術和我目前正在努力解決的問題。Prism中的共享接口應該放在哪裏?
在Prism文檔中,聲明模塊應該有沒有直接引用的鬆散耦合,只能通過共享接口。像下面的圖片:
我的問題是,如果只有幾個模塊所需的IOrdersRepository
,基礎設施是它的錯了地方,因爲這包含了所有的模塊共享代碼。如果我將接口放置在另一個模塊中,則兩個模塊都需要直接引用該接口,從而打破鬆耦合。
我應該簡單地創建一個包含此接口並且不遵循模塊模式的庫嗎?
感謝, 盧克
我明白這可能會被解釋爲一個意見問題,但它是技術和我目前正在努力解決的問題。Prism中的共享接口應該放在哪裏?
在Prism文檔中,聲明模塊應該有沒有直接引用的鬆散耦合,只能通過共享接口。像下面的圖片:
我的問題是,如果只有幾個模塊所需的IOrdersRepository
,基礎設施是它的錯了地方,因爲這包含了所有的模塊共享代碼。如果我將接口放置在另一個模塊中,則兩個模塊都需要直接引用該接口,從而打破鬆耦合。
我應該簡單地創建一個包含此接口並且不遵循模塊模式的庫嗎?
感謝, 盧克
它應該是絕對Infrastructure
模塊。 Markus的觀點是完全正確的 - 你不應該爲每個共享的接口集創建單獨的程序集。具有很多接口的Infrastructure
模塊更適合每個模塊都帶有一些接口的模塊。想象一下,有一次你會發現,你的2個「接口集」應該使用一些共享接口!你會怎麼做?爲這個「超級共享」接口添加一個程序集?或者將這些模塊組合到一個?我想是錯的。
所以 - 絕對Infrastructure
模塊!
PS。試想一下,即.NET框架有1000個圖書館 - 一個用於收藏,anotherone數學函數等....
UPDATE:
其實,我用Infrastructure
模塊主要用於界面和非常基本的DTO。全部分享代碼我搬到另一個程序集(如YourApplication.UIControls
,YourApplication.DAL
等)。我沒有足夠的理由這樣做,但這是我理解Prism的建議的方法。只是恕我直言。
更新2:
如果你想這麼寬分享您服務 - 我認爲這絕對讓SENCE有結構,如:
YourApplication.Infrastructure
- 「非常共享」接口(如IPaymentService
)YourApplication.Modules.PaymentModule
- 「非常共享」 實現你的PaymentServiceYourApplication.WPF.Infrastucture
的 - 基礎設施您WPF應用程序(除了YourApplication.Infrastructure
YourApplication.WPF.Modules.PaymentUI
- 一些WPF UI特有您YourApplication.Modules.PaymentModule
YourApplication.WebSite.Modules.PaymentUI
- UI爲Web站點等等..所以,你的模塊將擁有幾乎總是YourApplication.Infrastructure
和YourApplication.TYPEOFAPP.Infrastructure
,引用其中TYPEOFAPP
可以WPF,網站,WINSERVICE等。或者你也可以像YourApplication.Modules.PaymentUI.WPF
命名..
有啥打算?每次當一個接口不被「所有模塊」共享時,創建一個獨立的程序集?我將它放在基礎結構中,因爲這是所有模塊共享的代碼 –
我正在考慮爲每個共享的一組接口(例如處理訂單的所有接口)創建一個單獨的程序集。但是你所說的話是有道理的,我只關心基礎設施項目將充滿大多數模塊不需要的接口。 – Lukazoid
@ chopikadze的回答之後,我想知道如果我想要在其他應用程序中重新使用某些服務,該解決方案將如何工作?例如,單獨的接口程序集和實現模塊的方法意味着該服務可以在網站上使用。 – Lukazoid