C# 两个不同应用程序之间的通信

C# 两个不同应用程序之间的通信,c#,asp.net,wcf,windows,C#,Asp.net,Wcf,Windows,我们有两个应用程序在一台机器上运行,其中一个是web应用程序,它通过读取xml文档来响应每个请求。我们希望添加这样一种情况,即当创建新的xml文件或替换现有文件时,应用程序必须在其全部更改之前,以及在该情况发生时,才能读取该文件,它必须以旧文件响应 由于web应用程序的工作周期是请求/响应周期,我们决定不应该干扰这个周期,因为在实时运行的系统中,文件更改和请求时间之间的时间是模糊的,所以我们必须拆分文件读取过程。为此,我们在本地计算机上使用FileSystemWatcher,使用windows或

我们有两个应用程序在一台机器上运行,其中一个是web应用程序,它通过读取xml文档来响应每个请求。我们希望添加这样一种情况,即当创建新的xml文件或替换现有文件时,应用程序必须在其全部更改之前,以及在该情况发生时,才能读取该文件,它必须以旧文件响应

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


既然我们在上面的例子中遇到了问题,说我们如何通信这两个(或更多)应用程序?

看起来您可能对启用IPC的命名管道感兴趣,请查看示例,或者

从中获取代码最简单地说明了(有关客户端,请参阅):


您是否尝试使用WCF处理事件?当WCF完成修改文件时,它会触发一个事件,客户端会捕获并处理该事件?恐怕我无法理解您在这里提出的问题。您想在web应用程序和其他应用程序之间通信吗?您想通信的是什么?Windows应用程序会监视该文件(使用FileSystemWatcher),web应用程序正在读取新文件。我们在会话中保存信息,当文件更改时,会话中的对象也必须更改。因为我们不知道windows应用程序如何更改web应用程序中的变量或会话值。这不清楚。您还可以将WCF配置为使用命名管道作为传输:
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);
    }
}