Служба WCF TCP / Ip против протокола Http для Интернета против потребления услуг интрасети - PullRequest
2 голосов
/ 18 октября 2011

У меня есть служба WCF, которую можно использовать через веб-приложение на основе jQuery в Интернете, а также через приложение WPF в локальной интрасети.

Должен ли я выбрать протокол http или TCP ИЛИ сделать две похожие службыпротокол http для интернета и протокол TCP для интранета.

Ответы [ 3 ]

2 голосов
/ 07 декабря 2012

Честно говоря, я рекомендую сделать и то, и другое, что я и сделал.Я думаю, что было бы неплохо предоставить сервис «x» и иметь возможность подключаться либо через «y», либо «z» в зависимости от потребностей потребляющих сторон.

Когда я 1-й решил это сделать, я решил выставить множественное связываниетипы для одного и того же сервиса будут тривиальными.В конце концов, WCF - это все о опциях, так почему бы не выставить пару опций, как вы хотите, верно?Сложность в том, что вы не можете иметь (2) разные сервисы с разными привязками (скажем, HTTP и netTCP), которые используют один и тот же контракт на обслуживание.Вы получите сообщение об ошибке при попытке разместить такой сервис.

Я придумал простую абстракцию с использованием дополнительного интерфейса, чтобы разрешить эту самую вещь.Теперь у вас будет (2) отдельные контракты для реализации, по 1 для каждого типа привязки, но под ними будет только одна имплиментированная база кода.Взгляните на статью, которую я написал, которая объясняет это далее примером кода:

Предоставление нескольких типов привязки для одного и того же класса обслуживания в WCF

1 голос
/ 18 октября 2011

Я не эксперт WCF, но вот мои два цента:

в привязках WCF - это только вопрос конфигурации, то есть web.config для конечной точки WCF и app.config для вашего WPFclient.

Вам нужен только один сервис и в конечном итоге несколько привязок / конечных точек на сервере. web.config

клиентские приложения будут подключаться с использованием одной из двух конечных точек и привязки клиента / протокола по мере необходимости.без необходимости иметь две службы или вносить какие-либо конкретные изменения.

в интрасети netTCPbinding, вероятно, самый быстрый вариант, поскольку он передает двоичные данные, в Интернете httpBinding должен работать хорошо;Обратите внимание, что вы можете использовать httpBinding также в интрасети без проблем, и если это будет намного медленнее или полностью эквивалентно привязке netTcp, все это должно быть доказано в зависимости также от вашего типа / контента транслятора использования.

1 голос
/ 18 октября 2011

Я бы предложил использовать HTTP, он будет работать как для интернета, так и для интрасети. Также для предоставления сервиса обоим вам не нужно создавать 2 сервиса, просто создайте правильные привязки в конфигурации, и тогда один и тот же сервис будет открыт для обоих протоколов.

...