繁体   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