Подтвердить что ты не робот

WCF Bindings - так много! Как мне выбрать?

У нас есть R Server  (R - язык программирования, используемый в статистическом анализе), который в основном принимает файл script и csv, обрабатывает некоторые данные и возвращает результаты как текст.

Мне нужно написать службу на сервере R, чтобы клиенты .net(могут быть .Net Windows Forms или ASP.Net) могли подключаться к серверу R, отправлять файлы script и CSV и получать результаты назад.

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

Кроме того, лучше ли запускать службу в IIS или в качестве отдельной службы прослушивания типа "командной строки" (последнее кажется уродливым по сравнению с IIS, и я не знаю, почему кто-то захочет сделать это, если они смогут запустить это в IIS)?

4b9b3361

Ответ 1

Лично я бы рекомендовал простейшую привязку, которая дает то, что вам нужно. Я сделал довольно много WCF (некоторые довольно сложные), и мне никогда не приходилось использовать ничего, кроме BasicHttpBinding; это также позволяет максимально возможную совместимость с не-NET-клиентами и позволяет использовать такие вещи, как MTOM для эффективной двоичной передачи.

Повторный хостинг; IIS действительно самый простой для настройки клиент/сервер; две особенности:

  • легко настроить SSL (т.е. вы просто настроите IIS, и WCF будет использовать его)
  • легко загрузить баланс (просто балансируйте баланс своей веб-фермы)

(Я считаю, что WCF, работающий над BasicHttpProfile, может также использовать настройку сжатия IIS [GZip/Deflate], но не цитируйте меня...)

Вы можете использовать автономный хост (обычно через службу Windows), если (например) вам нужен сервер с длительным состоянием. У IIS есть эта привычка (по дизайну) утилизации приложений, что плохо, если вы что-то храните в памяти! Другим примером является то, что вы хотите, чтобы он уже запускался для быстрого "первого удара" (вместо того, чтобы ждать, когда IIS/ASP.NET начнет вращаться). Пример, охватывающий оба из них, может содержать сервер WF (рабочий процесс).

Опять; если вам не нужна эта сложность, пройдите самый простой вариант: хостинг в IIS.

Ответ 2

Действительно, есть много вариантов.

Привязка

Связи, доступные из WCF, представляют собой набор протоколов для общих сценариев. Он указывает информацию о транспорте, сообщении и безопасности.

При выборе привязки вам нужно выяснить, какую функцию вам нужно. например вам может понадобиться способ

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

Если вы знаете, что клиенты всегда с точки net, вы можете использовать привязку net tcp, которая быстрее, чем basicHttpbinding. Однако basicHttpBinding - это совместимый протокол, даже клиенты php или java могут без проблем разговаривать с ним.

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

хостинг

IIS более масштабируема. Если ваша служба не требует состояния, которое должно быть размещено в процессе работы с длинным сроком (служба Windows или консольное приложение), IIS является выбором, так как легко включить сжатие и шифрование для ваших служб.

Подробнее о привязке

Если вы хотите, чтобы ваша служба вызывалась в браузере, то есть javascript WebHttpBinding - это хорошая точка, определенная для вас. Вы можете использовать enbableWebScript, чтобы служба поняла JSON для javascript.

Доступность

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

Ответ 3

Я бы предложил обратиться к книге Джуно Лоуи "Программирование WCF-сервисов".

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

http://www.code-magazine.com/article.aspx?quickid=0605051&page=3

Ответ 4

Извлечь из книги WCF4 из wros "Все эти встроенные привязки построены на стандартах, которые работают для определенных сценариев, но также будут работать, если вы выберете неправильный или менее эффективный. Итак, как вы выбираете, какой из них для вас?

Наиболее очевидные решения, если вам нужно взаимодействовать с приложениями, отличными от WCF. Если ваша служба связывается с клиентами WCF, вы можете использовать привязки с префиксом "net". Помните, что вы можете определить несколько конечных точек для той же службы, которая будет использовать разные привязки. Это позволяет вам использовать оптимизацию производительности для клиентов WCF, но при этом поддерживать поддержку служб ASMX и стандартов WS- *. Они обеспечивают дополнительную безопасность и другие функции, которые многие клиенты используют f.

Например, если вы хотите установить связь WCF с WCF, выбирая NetTcpBinding с двоичной кодировкой, ace сообщение четыре или пять раз быстрее, чем BasicHttpBinding с текстовым кодированием.

Эти привязки, привязанные к WCF, должны охватывать большинство случаев, которые вам нужны: однако, если вам нужно изменить или изменить привязку целиком, WCF позволяет сделать это очень просто "