[英]IIS hosting for WCF service with 2 contracts or hosting 2 services with dependencies
我正在開發一個WCF服務,該服務具有一個名為MyApp.IOperationService的合同。
<service name="MyApp.OperationService">
<endpoint address="OperationService" binding="basicHttpBinding" contract="MyApp.IOperationService" />
</service>
對於服務行為,我使用InstanceContextMode = InstanceContextMode.Single和ConcurrencyMode = ConcurrencyMode.Multiple,因為應用程序使用共享的物理資源。
我需要此服務的管理界面,首先我在同一服務中添加了新合同。 這種方法對我而言並不有吸引力,因為管理合同是通過元數據通過使用操作合同向客戶公開的。
然后,我選擇了完全創建另一個服務。
<service name="MyApp.AdminService">
<endpoint address="Admin" binding="netTcpBinding" contract="MyApp.IAdminService" />
</service>
該服務具有一個名為Login的操作,該操作會將密碼傳播到OperationService對象。
namespace MyApp
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single, UseSynchronizationContext = false)]
public class AdminService : IAdmin
{
MyApp.OperationService objOperationService = null;
public AdminService(MyApp.OperationService objOperationService)
{
m_objOperationService = objOperationService;
}
public void Login(string pincode)
{
m_objOperationService.Login(pincode);
}
}
}
在自托管環境中,我創建一個MyApp.OperationService對象,然后將該對象傳遞給MyApp.AdminService的構造函數。 對於IIS托管,我發現我需要使用WCF擴展點並實現IInstanceProvider,然后使用ServiceHostFactory。
在這一點上,我停了下來,想知道這是否將完全起作用,因為我的AdminService期望由IIS控制的已經創建的MyApp.OperationService,對於我卑微的目的來說似乎已經非常復雜了。
問題是,是否可以通過另一種方式來實現(現有服務的管理合同/接口未通過元數據公開)?
謝謝。
除了使用WCF可擴展性點之外,我找不到解決該問題的方法。 我使用Microsoft.Practices.Unity通過IoC管理服務,然后在.svc文件中使用了Factory屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.