WCF Общение с Хостом - PullRequest
       0

WCF Общение с Хостом

0 голосов
/ 17 марта 2011

Я пишу приложение, в котором есть одна служба Windows, которая должна взаимодействовать с другой службой Windows.«Целевая» служба примет запрос от «исходной» службы и выполнит задачу.Служба «источника» не будет ожидать ответа, поэтому запрос должен быть возвращен как можно скорее.

Планировалось, что «целевая» служба будет размещать службу WCF, с которой «источник» будет связываться с,Как только запрос получен, мне нужно связаться с хост-службой Windows, чтобы сказать ему, чтобы он выполнял свою работу.Я думал, что «целевой» сервис WCF поместит сообщение в MSMQ, который будет отслеживать «целевой» сервис Windows.После этого служба WCF может вернуться обратно к вызывающей стороне.

Похоже ли это на разумный подход, позволяющий службе WCF сообщать службе Windows хоста о выполнении задачи?

ВидС уважением

Майкл

Ответы [ 3 ]

1 голос
/ 17 марта 2011

Позвольте мне не согласиться. Просто основываясь на том, что вы описали, использование MSMQ для связи между «целевой» службой WCF и хостинговой службой Windows кажется мне чрезвычайно тяжелым. MSMQ позволяет различным процессам взаимодействовать безотказно. В вашем случае служба WCF размещается в том же процессе, что и служба Windows. Таким образом, хотя MSMQ как механизм связи между ними будет работать, в этом нет необходимости.

Кроме того, использование привязки MSMQ между «целевой» службой WCF и «исходной» службой WCF имеет смысл , если , то две службы WCF не всегда работают одновременно , Например, если «целевая» служба WCF не всегда работает, привязка MSMQ позволит «исходной» службе WCF по-прежнему отправлять задачи. Эти задачи будут сохранены в MSMQ для извлечения при запуске «целевой» службы WCF. Однако, похоже, что обе службы будут работать, поэтому я не вижу необходимости в привязке MSMQ.

Для выбора привязок WCF см. Этот пост SO.

C # - WCF - межпроцессное взаимодействие

Позвольте мне затронуть еще одну вещь. Когда ваша «целевая» служба WCF получает запрос задачи от «источника», простое сообщение задачи обратно службе Windows не будет ничего делать само по себе. Да, служба Windows работает, но у нее нет потока выполнения, который вы можете использовать. Дело в том, что для того, чтобы сделать обработку задачи асинхронной, вам нужно запустить поток для управления задачей (ями). Я бы предложил использовать для этого ThreadPool.

Надеюсь, это поможет.

0 голосов
/ 17 марта 2011

@ Мэтт

Спасибо за вашу помощь.

Подумав немного об этом, и посмотрите, как ваш подход облегчит настройку и использование.Мне нужно, чтобы «целевой» сервис отправлял результаты работы обратно «исходному тексту», поэтому я, вероятно, буду использовать nettcp и обратный вызов.Тогда план состоит в том, чтобы настроить новый поток, выполнить работу и после его завершения отправить ответ обратно «источнику».

@ Andy

Спасибо за помощь.

Я посмотрел на msmq, но, видя, что мне, вероятно, придется настраивать новый поток, как только я получу сообщение, я мог бы также позволить веб-службе выполнить всю работу.

0 голосов
/ 17 марта 2011

Да, это хороший подход.MSMQ идеально подходит для этой задачи - исходная служба может отправить запрос к цели, поместив сообщение в очередь через WCF.MSMQ хорош в любое время, когда вы хотите отправить запрос в службу для асинхронной обработки, особенно если вам не нужно возвращать ответ.Если вам нужен ответ, вы можете также настроить источник в качестве службы WCF, и цель может при необходимости отправить сообщение обратно.Есть несколько разных способов сделать это с помощью привязки MSMQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...