powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Межсервисное взаимодействие. Посылает один, принимает другой
8 сообщений из 8, страница 1 из 1
Межсервисное взаимодействие. Посылает один, принимает другой
    #38177794
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Книгу я пока до конца не дочитал и пока не все понял.
Но надо делать.

Задача.
На сервере болтается Главный Сервис (ГС), который может выполнять ВСЕ.

К нему обращается веб-сервис (ВС) через именованные каналы.
Они на одной машине крутятся. Насколько я понял, в пределах одной машины это самый лучший способ.

Получив запрос от ВС, ГС запускает на удаленной машине Процесс (П), который, как минимум, должен сообщить, что он запустился.

В настоящее время я ловлю в ГС консольный вывод от П. Все хорошо, но иногда этот вывод в кодировке 1251, а иногда - в 866. Что не нравится пользователям
Попытки понять кодировку у меня не получились, да и все равно, это не очень хороший способ.

Я знаю как поймать сообщение от П.
Но поймает его не тот сервис, который ожидает ответа.

Что делать?
...
Рейтинг: 0 / 0
Межсервисное взаимодействие. Посылает один, принимает другой
    #38177795
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Но поймает его не тот сервис, который ожидает ответа.Почему не тот?
...
Рейтинг: 0 / 0
Межсервисное взаимодействие. Посылает один, принимает другой
    #38177804
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
i seeCat2Но поймает его не тот сервис, который ожидает ответа.Почему не тот?

Между ВС и ГС есть канал. ВС ожидает отклика от метода ГС.1.

Но процесс П, запущеный ГС.1 ничего не знает об этом канале. Он тупо посылает сообщение на другой слушатель, ГС.2.

Как бы ему узнать об этом канале или передать сообшение от одного (ГС.2) слушателя другому (ГС.1)?

Или я просто неправильно представляю взаимодействие?
...
Рейтинг: 0 / 0
Межсервисное взаимодействие. Посылает один, принимает другой
    #38177829
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про кодировку: жесть какая-то. А почему именованные каналы? Не хочешь проблем на ровном месте, кури классические http байдинги.
...
Рейтинг: 0 / 0
Межсервисное взаимодействие. Посылает один, принимает другой
    #38177872
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Как бы ему узнать об этом каналеНу пусть этот канал подпишется в П с коллбэк-методом, что ли. Или как у тебя сделано?
...
Рейтинг: 0 / 0
Межсервисное взаимодействие. Посылает один, принимает другой
    #38177973
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУА почему именованные каналы?
Я по книжке делаю. Там написано, что это самый надежный способ, если взаимодействие в пределах одной машины.
i seeНу пусть этот канал подпишется в П с коллбэк-методом, что ли
А как это сделать? Я что-то совсем туплю

Схема примерна такая

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
interface IDgnContract
    {
        [OperationContract]
        string Command2(string message);

        [OperationContract]
        string Command1(string message);
    }

    class DgnService : IDgnContract
    {
        public string Command2(string message)
        {
            /*
             * Тут через  http-канал получаются данные от запущенного Процесса. 
             * Процесс ответа не слушает
             * Надо принятый параметр возвратить в Command1
             * Что-то я тут туплю :(
             */
              
            return message;
        }

        public string Command1(string message)
        {
            //Тут через  pipe-канал получаются данные от веб-сервиса
            return StartRemoteProcess(message); 
        }

        string StartRemoteProcess(string message)
        {
            string reply = "";
            /*
             *Тут Процесс через PsExec запускается с параметром message и возвращает данные c консоли. Это сейчас.
             * А надо получить данные из Command2
             */
            return reply;
        }
    }
...
Рейтинг: 0 / 0
Межсервисное взаимодействие. Посылает один, принимает другой
    #38178091
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2А как это сделать?Погугли по реализациям паттерна Publish-Subscribe, как я понял из твоего описания проблемы, он тут будет в самый раз

ИМХО, вот этот подойдёт.
...
Рейтинг: 0 / 0
Межсервисное взаимодействие. Посылает один, принимает другой
    #38181112
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в П можно передать параметр?
если да, то пусть П принимает этот параметр, делает свою работу и складывает результат на wcf службу в которой просто будет List(of ...) на параметр и результат.
А потом ВС забирает этот результат по параметру.


Да и вообще просто в базу можешь писать свои ответы.
servicecontract это не , чтото изолированное.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Межсервисное взаимодействие. Посылает один, принимает другой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]