【问题标题】:Communication between two different applications两个不同应用程序之间的通信
【发布时间】:2011-08-06 07:38:48
【问题描述】:

我们有两个应用程序在单台机器上运行,其中一个是通过读取 xml 文档来响应每个请求的 Web 应用程序。我们希望添加一个案例,即当创建新的 xml 文件或替换现有文件时,应用程序在文件全部更改之前不得读取文件,并且在案件发生时,它必须以旧文件响应。

由于网络应用程序适用于请求/响应周期,我们决定不应该干扰这个周期,因为知道文件更改和请求时间之间的时间在实时运行的系统中是模糊的,我们必须拆分文件读取过程。为此目的,我们在本地机器上使用 FileSystemWatcher 与 windows 或控制台应用程序(或其他人说使用 WCF 代替)。

现在我们在上述案例中提出问题,说我们如何沟通这两个(或更多)应用程序?

【问题讨论】:

  • 你用 WCF 尝试过事件吗?当 wcf 完成修改文件时,它会触发客户端捕获并处理的事件?
  • 恐怕我无法弄清楚你在这里问什么。您想在 Web 应用程序和其他应用程序之间进行通信吗?你想交流什么?
  • Windows 应用程序监视文件(使用 FileSystemWatcher),Web 应用程序正在读取新文件。我们在会话中保存信息,当文件更改时,会话中的对象也必须更改。因为我们不知道 windows 如何应用程序可以更改 Web 应用程序中的变量或会话值。这不清楚

标签: c# asp.net wcf windows


【解决方案1】:

您似乎对命名管道感兴趣以启用 IPC,请查看 this link 示例,或查看 this MSDN link

NamedPipeServerStream page of MSDN 获取代码最简单的说明(请参阅客户端的NamedPipeClientStream page):

using (NamedPipeServerStream pipeServer =
    new NamedPipeServerStream("testpipe", PipeDirection.Out))
{
    Console.WriteLine("NamedPipeServerStream object created.");

    // Wait for a client to connect
    Console.Write("Waiting for client connection...");
    pipeServer.WaitForConnection();

    Console.WriteLine("Client connected.");
    try
    {
        // Read user input and send that to the client process.
        using (StreamWriter sw = new StreamWriter(pipeServer))
        {
            sw.AutoFlush = true;
            Console.Write("Enter text: ");
            sw.WriteLine(Console.ReadLine());
        }
    }
    // Catch the IOException that is raised if the pipe is broken
    // or disconnected.
    catch (IOException e)
    {
        Console.WriteLine("ERROR: {0}", e.Message);
    }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多