2011-03-01 36 views
1

我們正在從零開始構建一個新系統,並決定使用SL4,WCF RIA Services和EF4。如何架構業務層或wcf ria服務

因此,我將WCF RIA服務看作SL客戶端的業務邏輯,但它可以用作通用業務邏輯層,可供應用程序的其他部分使用。作爲一個例子,WCF RIA服務將實現安全性(例如,誰可以使用哪些對象)。但是這個安全實現應該也是由系​​統的其他部分來實現的,而不僅僅是SL客戶端。

爲避免重複這個邏輯,我的想法是使用WCF RIA服務作爲一般業務層,這意味着如果系統的其他部分需要訪問數據層,則需要通過該層。

但是這是WCF RIA的好用嗎?

感謝

+0

我們已決定僅將RIA服務層用作Silverlight客戶端的服務層。系統的其他部分必須通過另一個業務層訪問數據層。這將允許我們爲SL客戶端提供一些自定義業務規則。 – kimtiede 2011-03-05 20:03:18

回答

0

什麼你所描述的是標準的WCF RIA模式,是怎樣的WCF RIA團隊設計了系統的正常工作。

WCF RIA將允許您獲得對EF4實體的端到端訪問,並將您的業務邏輯隱藏在RIA服務接口之後。您可以在類級別(服務合約中的所有方法)或方法級別將服務定義(域服務類)中的實體的身份驗證和授權屬性應用於更細化的控制。

我在計劃中看到的唯一主要缺陷是「系統的其他部分需要訪問數據層,他們需要通過此層」。在這個階段,WCF RIA只能和Silverlight搭配使用(也許ASP.NET MVC?我不確定)。微軟最終打算擴展RIA服務以供任何.NET應用程序使用,但在現階段它確實是一個Silverlight專用的東西。這意味着你會錯過很多WCF RIA好東西和其他非Silverlight應用程序。但是我相信你仍然可以將WCF RIA服務公開爲普通的WCF服務,包括認證/授權層。你會錯過自動代理,代碼生成等。

但是,仍然有幾種使用Silverlight之外的服務層的方法。您可以使用OData端點或SOAP/REST服務公開您的EF4實體。欲瞭解更多詳情,請查看this article

0

在大RIA項目中,我們通常有很多模塊(業務模塊,授權,授權,審計模塊等),顯然還有一些模塊需要跨越其他模塊以及跨SL客戶端訪問。所以我相信你的擔心是一個典型的體系結構方面,你如何使它在一個大的應用程序中正確分發。與任何.NET項目一樣,您可以將它模塊化爲不同的庫項目。這意味着您可以適當地製作一些作爲RIA Service Class Library項目或其他典型的可重用.net庫(例如,日誌庫)