Помогите выбрать привязку (WCF) - PullRequest
3 голосов
/ 21 февраля 2011

Мне нужно создать приложение WCF, которое будет работать с картинками. Позволяет получить изображение в виде потока и отправить изображение на сервер (в виде потока). Он будет работать в режиме потоковой передачи. В данный момент я сомневаюсь в этом выборе. BasicHttpBinding или NetTcpBinding? Какие различия между ними? Преимущества и недостатки. Что будет лучше для этой проблемы?

Ответы [ 2 ]

5 голосов
/ 21 февраля 2011

Проверьте это сообщение в блоге (или много других, похожих)

Диаграмма выбора правильного переплета - из книги Ювала Лоуи Programming WCF Services и дает лучшее руководство, действительно:

enter image description here

Теперь ваше дополнительное требование потоковой передачи ограничивает количество вариантов, очевидно - о net.msmq, очевидно, не может быть и речи.

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

Таким образом, выбор действительно сводится к basicHttpBinding против netTcpBinding. basicHttp работает через http-соединения и порт 80, поэтому он хорошо подходит для Интернета и сценариев «открытого доступа», в то время как netTcp может быть немного быстрее, но требует определенных портов, которые должны быть открыты на сервере и / или брандмауэрах - так что он, вероятно, лучше подходит для корпоративных сетей, но не для общего Интернета как такового.

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

2 голосов
/ 21 февраля 2011

Режим потоковой передачи не является оптимальным режимом, если у вас нет очень больших потоков.Скажем, если ваши фотографии имеют размер в пару КБ или даже до 100 КБ, вам может быть лучше использовать буферизованный TransferMode.Вы можете иметь потоковый контракт и буферизованный режим передачи, в котором все данные фактически буферизируются, но контракт данных позволяет вам обращаться к нему как к потоку.

...