我有一個由Web應用程序和多重Windows服務組成的應用程序,根據使用的是哪個版本的後端軟件,只安裝一個Windows服務。WCF服務體系結構查詢
當前,數據由Web應用程序保存在數據庫中,然後安裝相關服務,然後將數據提取到已安裝的後端系統中。
我想改變這個使用WCF服務,所以結果數據直接返回到Web應用程序。
我以前沒有使用WCF服務,但我假設我可以做這樣的事情。
WebApp.Objects.Dll - 包含數據庫對象,例如PurchaseOrder的對象
WebApp.Service.Contracts.dll - 在這裏我可以描述的服務方法,這將參考WebApp.Objects.dll這樣我就可以拿了一個採購訂單對象作爲參數
WebApp.Service.2011.dll - 這將是2011年版的後端系統的實際服務,這將引用dll的WebApp.Service.Contracts
WebApp.Service .2012.dll - 這將是2012版後端系統的實際服務,這將引用因此,我的問題是,Web應用程序是否需要知道有關後端WCF服務的具體使用情況?我只想調用具有指定接口的服務,而不關心其實現方式或內部執行方式,而只是返回在後端系統中創建的採購訂單(無論它是返回接口還是具體的類)
我能否創建服務客戶端而無需知道其2011或2012年WCF服務是否正在使用?
嗨,多數民衆贊成在此我非常感謝,有一個單一的dll來存儲合同,所有版本的服務引用這個以確保它們是相同的,多個後端服務都做同樣的事情,並且有相同的參數,他們只是使用一組不同的引用到後端軟件,這就是爲什麼我不希望網絡應用程序直接引用它們。如果所有的網絡應用程序的需求是一個合同和地址,將工作得很好! – WraithNath
@WraithNath:我不知道所有的細節,但也許你根本不需要WCF(會降低部署和配置的複雜性,請求時間)。 WCF的一個原因是,如果你想將服務部署到不同的機器上。只需爲所有後端版本(合同)聲明一個通用接口。在每個版本的後端的獨立程序集中實現接口。在Web應用程序中,配置要使用的具體實例並使用Activator.CreateInstance創建它。 – Markus
謝謝,我目前有一些dll,根據它是什麼版本進入bin目錄,如果它們在那裏,它會通過反射裝載它們。這確實工作得很好,但這確實意味着後端系統需要安裝在Web服務器上,而這有時並不是最終用戶想要的,我們的應用程序部署在跨服務器的某些情況下,已經可以公開訪問Web服務器,所以後端財務系統不希望理想地在同一個盒子上。謝謝! – WraithNath