Выбор вариантов взаимодействия в .NET

С появлением .NET Framework 3.0 и Windows Communication Foundation (WCF) несколько различных технологий были сведены вместе в рамках единой модели программирования. WCF выступает в роли следующей версии служб Enterprise Services, веб-служб ASMX, расширения веб-службы (WSE), MSMQ и удаленного взаимодействия .NET. Следующий раздел относится к .NET Framework 2.0. Дополнительные сведения о WCF и .NET Framework 3.0 см. в разделе Windows Communication Foundation.

В .NET Framework имеется несколько способов взаимодействия с объектами в различных доменах приложений, каждый из которых предполагает определенный уровень квалификации и гибкости. Например, развитие Интернета превратило XML-веб-службы в привлекательный способ обеспечения взаимодействия, поскольку в основе этих служб лежит стандартная инфраструктура протокола HTTP и форматирования SOAP, использующего XML. Это общедоступные стандарты, и их можно использовать с существующими инфраструктурами Интернета, не задумываясь о возможных проблемах, связанных с прокси-серверами и брандмауэрами.

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

ASP.NET, Enterprise Services или удаленное взаимодействие .NET

ASP.NET, Enterprise Services и удаленное взаимодействие .NET — это реализации систем межпроцессного взаимодействия. Технология ASP.NET обеспечивает инфраструктуру, размещаемую в службах IIS, которая хорошо обрабатывает базовые типы, поддерживает протоколы некоторых веб-служб более высокого уровня (при использовании с расширениями веб-службы) и знакома разработчикам веб-приложений. Службы Enterprise Services — это управляемая реализация COM+, которая обеспечивает гибкость и широту возможностей архитектуры COM+. Удаленное взаимодействие .NET — это универсальная и расширяемая система межпроцессного взаимодействия, размещаемая резидентно или в службах IIS и позволяющая разрабатывать и развертывать распределенные объектно-ориентированные приложения. Архитектура удаленного взаимодействия .NET позволяет применять пользовательские протоколы и форматы подключения.

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

  1. Требования безопасности

    Из трех моделей программирования службы Enterprise Services обладают наиболее широким набором функций по обеспечению безопасности и могут применяться в большинстве ситуаций. Технология ASP.NET обеспечивает проверку подлинности с помощью служб IIS и шифрование по протоколу SSL, что делает ее удобной при обеспечении безопасности интернет-приложений. Уровень безопасности удаленного взаимодействия .NET вырос с появлением последнего выпуска .NET Framework. В предыдущих версиях удаленного взаимодействия .NET для шифрования вызовов или проверки подлинности клиентов требовалось использовать приложения на базе протокола HTTP, размещаемые в службах IIS, как для приложений ASP.NET, так и для приложений удаленного взаимодействия. В текущей версии классы TcpChannel и HttpChannel поддерживают шифрование SSPI и встроенную проверку подлинности Windows. IpcChannel также поддерживает проверку подлинности Windows и прямую настройку списка управления доступом в именованном канале. Поскольку использовать удаленные объекты в Интернете не рекомендуется, имеется несколько ситуаций, требующих HttpChannel. Если требуется обеспечить взаимодействие через Интернет, рекомендуется создавать XML-веб-службы, используя ASP.NET.

    8119f66k.note(ru-ru,VS.100).gifПримечание
    По соображениям безопасности настоятельно рекомендуется обеспечивать доступ к конечным точкам удаленного взаимодействия через безопасные каналы. Никогда не делайте незащищенные конечные точки удаленного взаимодействия видимыми через Интернет.

  2. Взаимодействие

    Если необходимо взаимодействие различных операционных систем, необходимо использовать XML-веб-службы, создаваемые ASP.NET. Файлы ASP.NET предоставляют заметно большую гибкость в определении формы и стиля связи SOAP по сравнению со средствами удаленной работы .NET. Эта гибкость упрощает взаимодействие с различными платформами и клиентами. Удаленное взаимодействие .NET не предназначено для взаимодействия с платформами, отличными от .NET.

    Удаленное взаимодействие .NET Framework не предназначено для взаимодействия с веб-службами. Дополнительные сведения о выборе между веб-службами и удаленным взаимодействием см. в разделе "Выбор между веб-службами, удаленным взаимодействием и Enterprise Services" в Основные рекомендации по обеспечению производительности и Руководство по выбору между веб-службами, Enterprise Services и удаленным взаимодействием .NET.

  3. Скорость

    Если скорость имеет значение, то службы Enterprise Services обеспечивают наибольшую производительность распределенных приложений. Между удаленным взаимодействием .NET и файлами ASP.NET почти нет различий в производительности, если приложению требуется обработка в реальном времени. При использовании удаленного взаимодействия .NET класс TcpChannel с BinaryFormatter обеспечивает наибольшую производительность взаимодействия между компьютерами. На одном компьютере следует использовать класс IpcChannel с BinaryFormatter.

  4. Масштабируемость

    Размещение приложения в службах IIS обеспечивает необходимый уровень масштабируемости. Резидентное размещение при использовании удаленного взаимодействия .NET требует построения собственной инфраструктуры масштабирования. Если предполагается для обеспечения масштабируемости использовать службы IIS с удаленным взаимодействием .NET, следует рассмотреть возможность использования вместо этого веб-служб, созданных с помощью ASP.NET.

  5. Использование функций среды CLR

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

    • Интерфейсы.

    • CallContext.

    • Свойства.

    • Индексаторы.

    • C++.

    • Единство типов, используемых клиентскими и серверными приложениями.

    Если эти функции критически необходимы, следует, если это возможно, выбирать Enterprise Services, а затем удаленное взаимодействие .NET.

  6. Разработка объектно-ориентированных приложений

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

    • Ссылки объектов на удаленные объекты.

    • Несколько вариантов активации объектов.

    • Объектно-ориентированное управление состоянием.

    • Управление временем существования распределенных объектов.

    Если эти функции критически необходимы, следует, если это возможно, выбирать Enterprise Services, а затем удаленное взаимодействие .NET.

  7. Пользовательские протоколы и форматы подключения

    Если требуется поддержка пользовательских протоколов (например, протокола UDP) или форматов подключения (например, CSV), удаленное взаимодействие .NET является единственной подключаемой архитектурой, позволяющей удовлетворить эти требования.

  8. Взаимодействие между доменами приложений

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

В следующих разделах представлена краткая сводка некоторых различий между XML-веб-службами, созданными с помощью ASP.NET, пространством имен System.Net, службами Enterprise Services и удаленным взаимодействием .NET.

XML-веб-службы

XML-веб-службы, созданные с помощью ASP.NET, хорошо работают при построении приложений ASP с использованием модели веб-приложений и среды выполнения HTTP ASP.NET, включая мощную поддержку в Microsoft Visual Studio .NET. Инфраструктура XML-веб-служб позволяет легко создавать компоненты для других приложений или использовать компоненты, которые другие приложения создали, используя протоколы, форматы и типы данных, которые лучше всего подходят для веб-приложений. Точное соответствие типов между компьютерами не поддерживается, а в качестве аргументов можно передавать значения только некоторых типов. Дополнительные сведения см. в разделе XML-веб-службы, созданные с помощью ASP.NET, и клиенты веб-служб с поддержкой XML.

Пространство имен System.Net

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

Enterprise Services

Службы Enterprise Services основаны на инфраструктуре удаленного взаимодействия .NET и обеспечивают всю широту функциональных возможностей и гибкость модели распределенных объектов COM+, включая поддержку широко распространенных транзакций.

Удаленное взаимодействие .NET

Удаленное взаимодействие .NET обеспечивает средства для решения многих сложных задач взаимодействия, включающих XML-веб-службы. Применение удаленного взаимодействия .NET позволяет:

  • публиковать службы в домене приложения любого типа, будь то домен в консольном приложении, форма Windows Forms, службы IIS, XML-веб-служба или служба Windows, а также получать доступ к этим службам;

  • сохранять единство системы типов полностью управляемого кода при обмене данными в двоичном формате, включая поддержку универсальных типов;

    8119f66k.note(ru-ru,VS.100).gifПримечание
    XML-веб-службы используют форматирование SOAP, которое не сохраняет все особенности типов.

  • передавать объекты по ссылке и возвращать результаты конкретным объектам в конкретных доменах приложений;

  • напрямую управлять параметрами активации и временем существования объектов;

  • реализовывать и использовать сторонние каналы и протоколы для расширения возможностей взаимодействия, чтобы удовлетворять конкретным требованиям;

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

См. также

Другие ресурсы

Удаленное взаимодействие .NET
Общие сведения о средствах удаленного взаимодействия платформы .NET Framework
Примеры удаленного взаимодействия
Расширенное удаленное взаимодействие
Windows Communication Foundation