使用Signalr对Windows服务连接的WCF服务

时间:2018-02-09 19:06:48

标签: c# .net web-services wcf service

我在我的机器上创建了Windows服务,并创建并托管了另一个WCF服务。我想知道如何使用Signalr来传达WCF服务和Windows服务。问题是我不知道如何将WCF和Windows服务结合在一起以使连接紧密。

另一方面,如果我的WCF服务有一些数据,我想立即将该数据传递给Windows服务。

以下是我在Windows服务中的代码段。

命名空间POCWindowsService {     public partial class TestService:ServiceBase     {         System.Timers.Timer timeDelay;         int count;

    public TestService()
    {
        InitializeComponent();
        timeDelay = new System.Timers.Timer();
        timeDelay.Elapsed += new System.Timers.ElapsedEventHandler(WorkProcess);

    }

    public void WorkProcess(object sender, System.Timers.ElapsedEventArgs e)
    {
        string process = "Timer Tick" + count;
        LogService(process);
    }

    protected override void OnStart(string[] args)
    {
        LogService("POC Service Started");
        timeDelay.Enabled = true;

    }

    private void LogService(string content)
    {
        FileStream fs = new FileStream(@"F:\Test\TestServiceLog.txt", FileMode.OpenOrCreate);
        var sw = new StreamWriter(fs);
        sw.BaseStream.Seek(0, SeekOrigin.End);
        sw.WriteLine(content);
        sw.Flush();
        sw.Close();
    }

    protected override void OnStop()
    {
        LogService("POC Service Stopped");
        timeDelay.Enabled = false;

    }
}

}

我的WCF服务在http://localhost:8080/上运行,我的Windows服务名称为POCWindowsService。

我想知道如何使用Signalr连接这两项服务。

由于

1 个答案:

答案 0 :(得分:0)

我不认为它的WCF相关问题。您只需将信号R库添加到您的服务然后调用它。也许是这样的:

private async void ConnectAsync()
{
    Connection = new HubConnection("http://localhost:8080");
    HubProxy = Connection.CreateHubProxy("YourHub");

    //Handle incoming event from server: use Invoke to write to console from SignalR's thread
    HubProxy.On<string, string>("YourMethod", (params1, params2) => Invoke((Action)(() => LogService(String.Format("{0}: {1}" + Environment.NewLine, params1, params2)))));

    await Connection.Start();
}