Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Межсервисное взаимодействие. Посылает один, принимает другой / 8 сообщений из 8, страница 1 из 1
07.03.2013, 21:23
    #38177794
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Межсервисное взаимодействие. Посылает один, принимает другой
Книгу я пока до конца не дочитал и пока не все понял.
Но надо делать.

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

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

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

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

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

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

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

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

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

Или я просто неправильно представляю взаимодействие?
...
Рейтинг: 0 / 0
07.03.2013, 22:30
    #38177829
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Межсервисное взаимодействие. Посылает один, принимает другой
Про кодировку: жесть какая-то. А почему именованные каналы? Не хочешь проблем на ровном месте, кури классические http байдинги.
...
Рейтинг: 0 / 0
07.03.2013, 23:27
    #38177872
i see
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Межсервисное взаимодействие. Посылает один, принимает другой
Cat2Как бы ему узнать об этом каналеНу пусть этот канал подпишется в П с коллбэк-методом, что ли. Или как у тебя сделано?
...
Рейтинг: 0 / 0
08.03.2013, 09:15
    #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
08.03.2013, 14:31
    #38178091
i see
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Межсервисное взаимодействие. Посылает один, принимает другой
Cat2А как это сделать?Погугли по реализациям паттерна Publish-Subscribe, как я понял из твоего описания проблемы, он тут будет в самый раз

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


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


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