在Windows服务下自托管

时间:2011-02-17 11:35:33

标签: c# wcf

我正在尝试构建一个Windows服务,它将激活我们服务器上的某个进程。

我还添加了一个wcf主机,通过UI程序和wcf客户端来传达服务。

但是我将数据从服务获取到客户端有一些问题,因此数据类是服务类。当我接到电话时,不再使用数据创建课程。

我试图给他wcf单例实例,但它不是在开头创建的。

一些例子:

partial class ProcessLoaderService : ServiceBase
{
    private InnerChannelHost _host;

    public ProcessLoaderService()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        try
        {
            _host = new InnerChannelHost(componentUID);
        }
        catch (Exception e)
        {
            ErrorManager.WriteException("Process loader has failed to initialize.",e);
            Stop();
        }
    }

    protected override void OnStop()
    {
        // Add code here to perform any tear-down necessary to stop your service.
    }
}

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple , 
                 InstanceContextMode = InstanceContextMode.Single, 
                 UseSynchronizationContext = false)]
class ProcessLoader : IInnerChannelService
{
    public void Run(string processLoaderUID)
    {
       // some data saved in members
    }

    public void GetComponents(ref ProcessContract[] processContracts)
    {
        // get the stored data
        processContracts = ConvertProcessToContract();
    }
}

我可以将类实现为单例,并在不同类中调用单例方法的接口。还有其他想法吗?

0 个答案:

没有答案