Связь между двумя разными приложениями - PullRequest
5 голосов
/ 15 апреля 2011

У нас есть два приложения, работающие на одном компьютере, одно из которых является веб-приложением, которое отвечает на каждый запрос, читая XML-документ (ы). Мы хотим добавить случай, когда новый файл XML создается или заменяется существующий файл,приложение не должно читать файл до тех пор, пока все не изменится, и к тому времени, когда это произойдет, оно должно ответить старым файлом.

Поскольку веб-приложения работают для цикла запрос / ответ, мы решили, что этот цикл не должен вмешиватьсязная, что время между изменением файла и временем запроса скрыто в работающей системе, мы должны разделить процесс чтения файла. Для этого мы используем FileSystemWatcher на локальном компьютере с Windows или консольным приложением (или некоторые другие говорят, что вместо этого используется WCF).

Теперь, когда мы подошли к вопросу в вышеприведенном случае, спрашивая, как мы можем связать эти два (или более) приложения?

1 Ответ

12 голосов
/ 15 апреля 2011

Похоже, вас заинтересуют Именованные каналы для включения IPC, посмотрите эту ссылку для примера или эту ссылку MSDN .

Получение кода со страницы NamedPipeServerStream MSDN иллюстрирует наиболее просто (см. Страницу NamedPipeClientStream для клиентской стороны):

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...