C# 两个不同应用程序之间的通信
我们有两个应用程序在一台机器上运行,其中一个是web应用程序,它通过读取xml文档来响应每个请求。我们希望添加这样一种情况,即当创建新的xml文件或替换现有文件时,应用程序必须在其全部更改之前,以及在该情况发生时,才能读取该文件,它必须以旧文件响应 由于web应用程序的工作周期是请求/响应周期,我们决定不应该干扰这个周期,因为在实时运行的系统中,文件更改和请求时间之间的时间是模糊的,所以我们必须拆分文件读取过程。为此,我们在本地计算机上使用FileSystemWatcher,使用windows或控制台应用程序(或者其他人说用WCF代替)C# 两个不同应用程序之间的通信,c#,asp.net,wcf,windows,C#,Asp.net,Wcf,Windows,我们有两个应用程序在一台机器上运行,其中一个是web应用程序,它通过读取xml文档来响应每个请求。我们希望添加这样一种情况,即当创建新的xml文件或替换现有文件时,应用程序必须在其全部更改之前,以及在该情况发生时,才能读取该文件,它必须以旧文件响应 由于web应用程序的工作周期是请求/响应周期,我们决定不应该干扰这个周期,因为在实时运行的系统中,文件更改和请求时间之间的时间是模糊的,所以我们必须拆分文件读取过程。为此,我们在本地计算机上使用FileSystemWatcher,使用windows或
既然我们在上面的例子中遇到了问题,说我们如何通信这两个(或更多)应用程序?看起来您可能对启用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);
}
}