Какой из них лучше Remoting или WebServices в .NET? - PullRequest
2 голосов
/ 06 апреля 2009

Это может быть вопрос новичка, но я хочу знать,

В чем основное отличие Remoting от веб-сервисов?

Какой из них лучше?

Ответы [ 3 ]

1 голос
/ 06 апреля 2009

«Лучше» здесь вполне материально.

Remoting использует двоичную сериализацию, поэтому занимает меньше места на проводе и, как правило, быстрее, но будет работать только с .net на обоих концах. Версии ваших dll должны совпадать, и вы можете размещать конечные точки сервера в приложениях, не требуя IIS.

Веб-сервисы немного более гибкие, поскольку они сделаны с использованием XML и предназначены для взаимодействия с другими провайдерами (Java, Python и т. Д.).

Кроме того, взгляните на WCF ( Windows Communication Foundation ), так как именно в этом направлении движется мир .net. Это позволяет вам написать код один раз, а затем разместить его на различных конечных точках

0 голосов
/ 06 апреля 2009

Это зависит от того, что вы хотите сделать; удаленное взаимодействие становится непригодным для истинных «отдаленных» сценариев; в общем, для связи между системами предпочтительнее использовать сервисный интерфейс, например, через WCF.

Удаленное взаимодействие по-прежнему важно для связи между доменами приложений в одном приложении.

Обратите внимание, что удаленное взаимодействие доступно не для всех платформ .NET - например, Silverlight не поддерживает удаленное взаимодействие, но WCF и такие вещи, как http / (raw) сокеты, подходят.

Если можете, посмотрите в сторону WCF. Если WCF не вариант, посмотрите на обычные веб-сервисы.

В частности, проблемы с удаленным взаимодействием:

  • связывает клиента и сервера с .NET
  • связывает клиента и сервера в одну и ту же двоичную реализацию
  • это приводит к плохо продуманным границам (очень легко просачивать неправильные объекты по проводу, что может привести к большим задержкам)

и т.д.

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

Также возможно использование бинарных файлов на веб-сервисах; например, protobuf-net предоставляет ловушку WCF для использования двоичного (основанного на контракте) формата Google «буфер буфера протокола» над службой WCF (предостережение: тогда это протокол на заказ, и вам потребуется инструмент на обоих концах).

Существуют и другие способы общения между системами, все они, возможно, предпочтительнее, чем удаленное взаимодействие (даже если они менее универсальны - иногда минимализм является достоинством):

  • розетки (нестандартные коммуникации)
  • http (простые сообщения POX и т. Д.)
  • промежуточное ПО (msmq, biztalk и т. Д.)
0 голосов
/ 06 апреля 2009

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

Имейте в виду, что вся платформа Webservices построена на основе Remoting. IOW, веб-сервисы - это абстракция, созданная из Remoting. Поэтому, хотя веб-сервисы ASP.NET предоставляют гораздо более простую модель программирования и большую функциональную совместимость, Remoting предлагает полную гибкость и мощь пространства имен System.Net.Remoting, требует гораздо большего технического ноу-хау и меньшей функциональной совместимости. Тем не менее, удаленное взаимодействие с использованием TCP, несомненно, работает лучше, чем веб-сервисы по HTTP.

Вот статья MSDN , в которой объясняется, какую из них следует выбрать при каких обстоятельствах. И еще , в котором подробно рассматриваются внутренние различия.

...