在Windows服务和表单应用程序之间发送和接收消息的最佳方式



我正在尝试实现IPC,但我所做的与我看到的文档有些不同。

我需要使用服务和表单应用程序异步发送、接收和响应。

//Service1.cs
serverPipe = new NamedPipeServerStream(@"testpipe", PipeDirection.InOut, 
   1, PipeTransmissionMode.Message, PipeOptions.Asynchronous);
//LoginForm.cs
clientPipe = new NamedPipeClientStream(@".", @"testpipe", PipeDirection.InOut
    PipeOptions.Asynchronous);

我相信这对双方都有利。

从一个写到另一个:

//In Service1.cs and Login.cs
private void pipeWriter()
{
    StreamWriter write = null;
    write = new StreamWriter(clientPipe);
    if (clientPipe.IsConnected)
    {
        write.Write(clientPipe);
        write.Flush();
    }
}

并读取:

//In Service1.cs and Login.cs
private void pipeReader()
{
    try
    {
        while (true)
        {
            using (StreamReader sr = new StreamReader(clientPipe))
            {
                string message;
                while ((message = sr.ReadLine()) != null)
                {
                    //read and respond to messages written to stream
                }
            }
        }
    }
    catch (Exception ex)
    {
    }
}

我坐的是正路吗?在Windows服务和表单应用程序之间有其他(更好的)通信方式吗?

既然你在.NET中,我想你应该研究WCF-Windows Communication Foundation,你可以定义合约(服务合约、数据合约),发布服务并使用服务,而不必担心协议,因为你可以通过配置服务器和客户端应用程序来选择它。

你可以看看这些链接,了解一些信息:

  • http://www.codeproject.com/Articles/29243/A-Windows-Communication-Foundation-WCF-Overview
  • http://msdn.microsoft.com/en-us/library/ee958158.aspx

希望能有所帮助,干杯

相关内容

  • 没有找到相关文章

最新更新