簡體   English   中英

IIS托管具有2個合同的WCF服務或托管具有依賴性的2個服務

[英]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.

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