簡體   English   中英

使用插件擴展WCF接口

[英]Extending WCF Interface with Plugins

我正在使用Silverlight前端構建應用程序,該前端通過WCF與后端服務進行通信。 我的服務有一個接口,可以處理與前端的所有核心通信。

可以使用各種插件來擴展后端,我計划加載自定義的silverlight模塊,以使用Arizona配置這些插件。 問題是,這些插件將添加不屬於基本WCF接口的其他功能。 我想為我的所有通信維護一個端點(即不需要額外的路由器配置)。

我正在尋找有關如何實現此實現的一些想法。 我目前的“最佳”想法是在我的核心接口中有一個函數,該函數接受一個函數名和一個參數列表,並使用反射來找到要在特定插件中調用的函數,我不喜歡這個出於很多原因。

您對在單個端點上構建可擴展的WCF接口有何建議?

謝謝

我可以想到兩種通常的處理方式:

  1. XML合同-基本上,您的服務只不過是帶有XML返回值的XML參數。 然后,您可以解析或序列化/反序列化客戶端和服務器之間的命令。 由於您的合同僅公開單個XML,因此“內部”操作由您決定。 您可以做一些事情,例如為新方法傳輸模式以驗證在客戶端上構造的調用等。

  2. RESTful服務-這是另一種簡單的方法。 由於REST合同是URL,因此添加新擴展名與提供新URL格式一樣簡單。 您可以通過格式化程序與客戶端進行通信,以了解如何調用擴展方法的新調用並在構建應用程序時對其進行管理。

但是,實際上,我懷疑您的字體末端是否能夠處理所有邊緣情況,並在擴展服務器端時動態構建新的屏幕和驗證。 在這種情況下,我認為更好的方法是使用MEF將Silverlight應用程序構造為模塊應用程序。 當服務器上有擴展名時,只需為客戶端提供擴展名XAP。 您可以讓服務器在插件目錄中枚舉XAP文件,並將其發送到Silverlight應用程序,因此,當一個新插件可用時,它可以動態加載這些文件。 XAP將包含連接到新的WCF合同以獲取擴展功能的代碼。

暫無
暫無

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

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