Общие сведения о разработке клиента EWS для ExchangeEWS client design overview for Exchange

Советы по разработке с использованием EWS для Exchange.Learn about the design considerations for developing with EWS for Exchange.

В этой статье приведены общие сведения о создании приложения веб-служб Exchange (EWS).This article provides overview information about designing an Exchange Web Services (EWS) application. С помощью этих сведений можно определить, подходит ли API EWS для вашего приложения и какой тип реализации клиента вам нужен.You can use this information to determine whether EWS is the right API for your application, and if so, what type of client implementation you should use. Эта статья также содержит рекомендации по созданию приложений для Office 365, Exchange Online и версий Exchange, и версий Exchange, начиная с Exchange 2007, с использованием одной базы данных кода. Кроме того, она помогает решить, для какой среды лучше разрабатывать решения — для локальных серверов Exchange Server или Exchange Online.This article also provides best practice information for designing applications that can target Office 365, Exchange Online, and versions of Exchange starting with Exchange 2007, in one code base, and important decision points for targeting on-premises Exchange servers versus targeting Exchange Online.

Подходит ли API EWS для вашего приложения?Is EWS the right API for your application?

Прежде чем приступать к созданию приложения, необходимо определить, подходит ли вам API EWS.Before you begin to design your application, it is important to consider whether EWS is the right API for you. Если вы разрабатываете решение для Exchange Server или Exchange Online, EWS предпочтительной будет технология клиентского доступа.If you are developing against Exchange Server or Exchange Online, EWS is the preferred client access technology. Разработка решений клиентского доступа для версий Exchange, начиная с Exchange 2007, в основном ориентировалась на EWS.Client access development for versions of Exchange starting with Exchange 2007 has primarily been focused on EWS. EWS используется для работы новых функций клиентского доступа, реализованных в Outlook. К последним относится отображение состояния "нет на месте" и сведений о доступности, впервые доступное в Exchange 2007, а также функции подсказок и получения помещений, представленные в Exchange 2010.New client access functionality that is implemented in Outlook uses EWS, including the Out of Office (OOF) and Availability features introduced in Exchange 2007, and the MailTips and Get Rooms functionality introduced in Exchange 2010. И для внутренних, и для внешних партнеров, разрабатывающих клиентские приложения Exchange, это говорит в пользу обязательности вложений в EWS.This represents a committed investment in EWS for both internal and external partners who develop Exchange client applications.

API EWS — основной API клиентского доступа для клиентских приложений Exchange. Но в некоторых случаях для разработки клиентских приложений могут пригодиться другие API Exchange. Например, Exchange ActiveSync обладает следующими преимуществами перед EWS:EWS is the primary client access API for your Exchange client applications. However, in some cases, you might consider other Exchange APIs for client application development. For example, Exchange ActiveSync provides the following advantages over EWS:

  • Чтобы сделать протокол Exchange ActiveSync более компактным, проведена разметка структуры XML.The XML structure has been tokenized to make Exchange ActiveSync a more compact protocol.
  • Exchange ActiveSync позволяет с помощью политик управлять клиентским доступом и использовать другие надежные решения для обмена мобильными сообщениями на предприятии.Exchange ActiveSync contains a policy mechanism to control client access and to provide other robust enterprise mobile messaging solutions.

Примечание

Для разработки клиентов Exchange ActiveSync нужна лицензия.You need a license in order to develop Exchange ActiveSync clients. Дополнительные сведения о различиях между Exchange ActiveSync и EWS см. в статье Choosing between Exchange ActiveSync and Exchange Web Services (EWS).To learn about the differences between Exchange ActiveSync and EWS, see Choosing between Exchange ActiveSync and Exchange Web Services (EWS).

MAPI RPC/HTTP — это еще один вариант для программирования клиентских приложений Exchange. Но тем не менее MAPI RPC/HTTP не обладает интуитивно понятным интерфейсом для связи между клиентами и сервером.MAPI RPC over HTTP is another programmability option for Exchange client applications. However, MAPI RPC over HTTP does not provide an intuitive interface for communicating between clients and the server.

Дополнительные сведения о технологиях разработки для Exchange см. в статье Explore the EWS Managed API, EWS, and web services in Exchange.For more information about Exchange development technologies, see Explore the EWS Managed API, EWS, and web services in Exchange.

Способы разработки клиента EWSOptions for EWS client development

Существует несколько способов разработки для Exchange с использованием EWS. Выбор оптимального варианта зависит от платформы разработки, инструментов, доступных реализаций и требований к приложениям для организации. Для создания клиентских приложений EWS доступны четыре основных варианта:Several options are available for developing against Exchange by using EWS. The best option for you will depend on the development platform, tools, available implementations, and application requirements for your organization. The following are the four primary options that are available for building EWS client applications:

  • управляемый API EWS;The EWS Managed API
  • Java API EWS;The EWS Java API
  • автоматически созданные прокси EWS;The EWS autogenerated proxies
  • настраиваемый клиентский API EWS.A custom EWS client API

Управляемый API EWSEWS Managed API

EWS Managed API является настраиваемым клиентом веб-службы.The EWS Managed API is a custom web service client. Он является стандартным API клиентского доступа для приложений .NET Framework.It is the standard client access API for .NET Framework applications.

Вот несколько преимуществ управляемого API EWS:The following are some of the benefits of using the EWS Managed API:

  • позволяет использовать интуитивно понятную объектную модель;It provides an intuitive object model.
  • устраняет сложности описания служб в файлах схемы и WSDL;It abstracts the complexities of the service description in the WSDL and schema files.
  • включает в себя клиентскую бизнес-логику;It includes client-side business logic.
  • обрабатывает веб-запросы и веб-отклики, а также сериализацию и десериализацию объектов;It handles the web requests and responses and object serialization and deserialization.
  • его поддерживает корпорация Майкрософт.It is Microsoft-supported.

Обратите внимание, что управляемый API EWS — не полное решение.Note, however, that the EWS Managed API is not a complete solution. В управляемом API EWS не реализованы некоторые функции.Some functionality is not implemented in the EWS Managed API. Несмотря на то что управляемый API EWS не обладает всеми функциями EWS, он может оказаться лучшим вариантом для разработки клиентских приложений по следующим причинам:Although the EWS Managed API doesn't implement all EWS functionality, it might be the best choice for your client application development, for the following reasons:

  • для разработки можно использовать .NET Framework;You can use the .NET Framework for development.
  • интерфейс позволяет реализовать автообнаружение в дополнение к большинству элементов объектной модели EWS;It implements Autodiscover in addition to most parts of the EWS object model.
  • он реализует клиентскую бизнес-логику для работы с EWS в классе ExchangeService.It implements client-side business logic for working with EWS, in the ExchangeService class.

API веб-службы EWS может подойти вам больше, чем управляемый API EWS, по одной из следующих причин:You might choose to use the EWS web service API instead of the EWS Managed API for any of the following reasons:

  • ваше приложение не использует .NET Framework;Your application does not use the .NET Framework.
  • вы не хотите распространять сборку управляемого API EWS;You don't want to distribute the EWS Managed API assembly.
  • для приложения требуются функции, не доступные в управляемом API EWS.Your application uses features that aren't implemented in the EWS Managed API.

Для получения дополнительной информации см. статью Get started with EWS Managed API client applications.To learn more, see Get started with EWS Managed API client applications.

Примечание

Управляемое API EWS теперь доступно в качестве проекта с открытым кодом на GitHub.The EWS Managed API is now available as an open source project on GitHub. Вы можете использовать библиотеку открытого кода, чтобы:You can use the open source library to:

  • добавлять исправления ошибок и улучшения в API;Contribute bug fixes and enhancements to the API.
  • получать исправления ошибок и улучшения до того, как они станут доступны в официальном выпуске;Get fixes and enhancements before they are available in an official release.
  • получать доступ к самой полной и актуальной реализации API, которую можно использовать для справки или для создания новых библиотек на новых платформах.Access the most comprehensive and up-to-date implementation of the API, to use as a reference or to create new libraries on new platforms.

Мы будем рады вашему вкладу в GitHub.We welcome your contributions via GitHub.

Java API веб-служб EWSEWS Java API

Java API EWS — это проект с открытым исходным кодом на сайте GitHub, который сообщество может обновлять и расширять.The EWS Java API is an open source project on GitHub that can be updated and extended by the community. Стилистически он похож на EWS Managed API и использует сетевые запросы и ответы EWS SOAP.It is stylistically similar to the EWS Managed API and uses EWS SOAP requests and responses over the wire. Хотя с помощью Java API EWS невозможно получить доступ ко всем операциям EWS SOAP, но мы надеемся, что после недавнего создания проекта с открытым кодом сообщество поможет преодолеть это препятствие.Although you can't access all EWS SOAP operations by using the EWS Java API, with the recent creation of the open source project, we are looking to the community to bridge this gap. Обратите внимание, что при наличии соответствующего контракта о поддержке служба поддержки Майкрософт поможет разобраться со всеми вопросами, связанными с протоколом SOAP EWS, но не с самим Java API EWS.Note that Microsoft Support, with an appropriate support contract, will address any questions related to the EWS SOAP protocol but not the EWS Java API itself. Java API EWS доступен для скачивания на сайте GitHub, где члены сообщества могут внести свой вклад в его развитие.The EWS Java API is available for download and community contribution on GitHub.

Автоматически созданные прокси EWSEWS autogenerated proxies

Клиентские API могут быть созданы автоматически с использованием определений схем XML и WSDL EWS. Генераторы клиентских объектных моделей доступны для многих языков. Как правило, автоматически созданные объектные модели управляют сериализацией и десериализацией объектов. Такие модели не включают бизнес-логику. Кроме того, автоматическое создание часто приводит к появлению артефактов, усложняющих работу с объектной моделью. Поддержка Exchange распространяется на XML-код, который клиент отправляет и получает, но не на объектную модель.Autogenerated client APIs are generated from the EWS WSDL and XML schema definitions. Client object model generators are available for many languages. In general, the autogenerated object models manage object serialization and deserialization. They do not include business logic and the autogeneration process often creates artifacts that make the object model less intuitive to use. Exchange support covers the XML that is sent and received by the client but not the object model.

Настраиваемый клиентский API EWSCustom EWS client API

Для некоторых приложений, которые используют лишь малую часть возможностей EWS, можно создать настраиваемый клиентский API для связи с Exchange. Такой способ позволит сократить использование системных ресурсов. Это удобно для клиентов, работающих на устройствах с ограниченной памятью (например, использующих .NET Micro Framework).For some applications that use a small set of EWS functionality, you might create a custom client API to communicate with Exchange. This enables you to consume fewer system resources. This is useful for clients that run on memory-constrained devices, such as clients running the .NET Micro Framework.

Возможности клиента EWSEWS client features

Какой бы вариант разработки вы ни выбрали, следует обдумать способ реализации возможностей EWS в клиенте. Доступность возможностей зависит от версии схемы EWS, для которой будете создавать приложение. Схемы EWS обратно и прямо совместимы. Если вы создаете приложение для более ранней версии схемы (например, Exchange Server 2007 с пакетом обновления 1), оно также будет работать с более поздними версиями схемы (например, с Exchange Online и службой Exchange Server 2013 с пакетом обновления 1). Regardless of the development option that you choose, you should consider how EWS features are implemented in your client. Feature availability is based on the EWS schema version that your application targets. Because EWS schemas are backward- and forward-compatible, if you create an application that targets an earlier schema version, such as Exchange Server 2007 SP1, your application will also work against a later schema version, such as the Exchange Server 2013 SP1 service, as well as Exchange Online.

Так как функции и их обновления зависят от схемы, рекомендуем использовать наиболее раннюю базу общего кода, которая относится к тем возможностям EWS, которые нужно реализовать в клиентском приложении. Многие приложения могут работать с версией Exchange2007_SP1, потому что схема Exchange 2007 с пакетом обновления 1 содержит почти все основные возможности Exchange для работы с элементами и папками в хранилище Exchange. Рекомендуем сохранять ветви кода для каждой версии схемы EWS. Ниже приведены версии схем, доступные в настоящее время. Because features and feature updates are driven by the schema, we recommend that you use the earliest common code base that targets the EWS features that you want to implement in your client application. Many applications can target the Exchange2007_SP1 version, because the Exchange 2007 SP1 schema contains almost all the core Exchange functionality for working with items and folders in the Exchange store. We recommend that you maintain code forks for each EWS schema version. The following are the schema versions that are currently available.

  <xs:simpleType name="ExchangeVersionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Exchange2007" />
      <xs:enumeration value="Exchange2007_SP1" />
      <xs:enumeration value="Exchange2010" />
      <xs:enumeration value="Exchange2010_SP1" />
      <xs:enumeration value="Exchange2010_SP2" />
      <xs:enumeration value="Exchange2013" />
      <xs:enumeration value="Exchange2013_SP1" />
    </xs:restriction>
  </xs:simpleType>

Версии схем хранятся в простом типе ExchangeVersionType.The schema versions are maintained in the ExchangeVersionType simple type.

Сведения о возможностях, доступных в каждой из версий схем EWS, см. в статье EWS schema versions in Exchange.For information about the features that are available in each EWS schema version, see EWS schema versions in Exchange.

В этой статьеIn this section

См. такжеSee also