Versões de esquema EWS no Exchange
Saiba mais sobre o esquema EWS e como projetar seu aplicativo para trabalhar com ele, bem como os recursos disponíveis com cada versão do esquema e como o esquema se relaciona com a versão do serviço do Exchange.
O esquema EWS define as estruturas de dados que podem ser enviadas e retornadas pelo Exchange. Cada nova versão do Exchange que contém uma alteração significativa na funcionalidade EWS conterá um novo esquema. O EWS e o esquema EWS são ao contrário e, em alguns casos, compatíveis com o encaminhamento – os aplicativos projetados em versões anteriores do EWS funcionarão, na maioria dos casos, com versões posteriores do EWS e aplicativos que visam versões posteriores do EWS funcionarão se a mesma funcionalidade foi incluída em uma versão anterior. Este artigo ajudará você a entender a função do esquema EWS, como funciona a versão do esquema, a relação entre a versão do esquema e a versão do serviço e como projetar seu aplicativo para trabalhar com o esquema EWS.
Função do esquema EWS
O esquema EWS faz o seguinte:
Define o conjunto de recursos que está disponível para um cliente. Um cliente pode obter a lista das versões de esquema com suporte usando o serviço SOAP Autodiscover. Em seguida, o cliente pode determinar quais recursos ele pode acessar, pois cada versão do esquema representa um conjunto de recursos EWS. Cada novo esquema lançado para EWS contém as entidades de esquema da versão anterior mais as definições de esquema para qualquer nova funcionalidade. Dessa forma, o EWS dá suporte a aplicativos que visam uma versão anterior do EWS.
Fornece uma descrição geral do contrato de API. Você pode usar esse contrato para determinar as estruturas de dados que podem ser enviadas e recebidas do Exchange.
Fornece um mecanismo de versão para o envio de solicitações. O servidor exchange contém todas as versões de esquema EWS com suporte em seu diretório virtual.
Projetar seu aplicativo com a versão do esquema em mente
Tenha os seguintes pontos em mente ao projetar seu aplicativo para trabalhar com diferentes versões do esquema EWS:
Ativar/desativar a funcionalidade com base na versão do esquema. Você deseja mapear a funcionalidade do cliente para a versão do esquema e, em alguns casos, para a versão do serviço. O exemplo a seguir retornará um PropertySet com base na versão do esquema e do serviço.
private static PropertySet InitPropertySetByVersion(ExchangeService service) { PropertySet props; // The schema version to target to access the NormalizedBody property // is Exchange2013 or later. The server version to target to access the // NormalizedBody property on an email is 15 or later, which // equates to Exchange 2013. if (service.RequestedServerVersion >= ExchangeVersion.Exchange2013 && service.ServerInfo.MajorVersion >= 15) { props = new PropertySet(EmailMessageSchema.NormalizedBody); } else { props = new PropertySet(EmailMessageSchema.Body); } return props; }
Versão de suas solicitações com a versão mais antiga do esquema EWS que dá suporte à funcionalidade que você deseja usar. Isso tornará seu cliente aplicável a um número maior de servidores do Exchange em potencial. Isso é menos importante se você estiver desenvolvendo um aplicativo de linha de negócios para direcionar apenas os servidores da sua organização, mas é muito importante se você estiver criando um aplicativo para um público mais amplo do Exchange.
Recursos por versão de esquema
As versões de esquema disponíveis para um cliente são identificadas no tipo simples ExchangeVersionType localizado no esquema types.xsd. O ExchangeVersionType é implementado pelo elemento RequestServerVersion . O elemento RequestServerVersion é enviado em todas as solicitações EWS para indicar ao servidor qual versão do esquema o cliente destina. Isso, por sua vez, identifica o conjunto de recursos que está disponível para o cliente.
Tabela 1: recursos do EWS por versão de produto e esquema
Versão do produto | Versão de esquema associada | Recursos |
---|---|---|
Exchange Online | A versão mais recente do esquema. | Inclui todos os recursos na versão atual do Exchange, além de novos recursos que são adicionados para clientes online. |
Exchange 2013 SP1 | Exchange2013_SP1 | Inclui todos os recursos no Exchange 2013. Os seguintes recursos foram introduzidos no Exchange 2013 SP1:
|
Exchange 2013 | Exchange2013 | Inclui todos os recursos introduzidos no Exchange 2007 e no Exchange 2010. Os seguintes recursos foram introduzidos no Exchange 2013:
|
Exchange 2010 SP3 | Exchange2010_SP2 | Inclui todos os recursos introduzidos no Exchange 2010 SP1. Os seguintes recursos foram introduzidos no Exchange 2010 SP2:
|
Exchange 2010 SP1 | Exchange2010_SP1 | Inclui todos os recursos introduzidos no Exchange 2010. Os seguintes recursos foram introduzidos no Exchange 2010 SP1:
|
Exchange 2010 | Exchange2010 | Inclui todos os recursos introduzidos no Exchange 2007 SP1. Os seguintes recursos foram introduzidos na versão inicial do Exchange 2010:
|
Exchange 2007 SP1 | Exchange2007_SP1 | Inclui todos os recursos introduzidos no Exchange 2007. Os seguintes recursos foram introduzidos no Exchange 2007 SP1:
|
Exchange 2007 | Exchange2007 | Os seguintes recursos foram introduzidos na versão inicial do Exchange 2007:
|
Relação entre o esquema EWS e a versão do serviço
A versão do esquema EWS está relacionada à versão do serviço EWS que o servidor está executando. O padrão de nomenclatura do esquema EWS está relacionado às versões locais do Exchange. Por exemplo, a versão inicial do Exchange 2013 tem uma versão de serviço de 15.00.0516.032 e o nome do esquema Exchange2013. Como o esquema foi atualizado para o Exchange 2013, tanto o Exchange 2013 quanto Exchange Online com uma versão de serviço de 15.00.0516.032 e posteriores têm o mesmo nome de versão para o esquema mais recente. Nas versões anteriores do Exchange, o esquema EWS não foi atualizado com atualizações cumulativas (anteriormente chamadas de rollups). Mas como o Exchange é atualizado com mais frequência para dar suporte a Exchange Online, as atualizações cumulativas agora contêm atualizações de esquema para EWS. Os nomes de arquivo de esquema e o nome da versão do esquema associado são atualizados apenas com pacotes de serviço ou versões principais do Exchange local.
Embora o esquema EWS defina o contrato, em alguns cenários, a versão do serviço é a única maneira de um cliente determinar como ele deve interagir com o serviço. As alterações de comportamento de serviço que não são refletidas no esquema só podem ser determinadas pela versão de serviço retornada em todas as respostas EWS. Por exemplo, quando as pastas públicas foram redesenhadas no Exchange 2013, as operações usadas para mover e copiar pastas públicas foram alteradas. Se você projetou um cliente para copiar pastas públicas no Exchange 2010, precisará atualizá-lo para usar operações diferentes para obter o mesmo resultado no Exchange 2013.
Como o esquema EWS é atualizado
Os servidores exchange que executam versões do Exchange a partir do Exchange 2007 incluem o esquema EWS no diretório virtual que hospeda o serviço EWS. A versão atual do esquema é sempre representada pelos arquivos types.xsd e messages.xsd. A Figura 1 mostra como o esquema messages.xsd é bifurcado quando uma nova versão do esquema é desenvolvida. Antes da nova funcionalidade ser adicionada, uma cópia do esquema messages.xsd original é incluída e renomeada para representar a versão anterior do esquema. O arquivo messages.xsd é atualizado com a descrição do serviço para a nova versão.
Figura 1. Como o esquema EWS é atualizado
Antes que o esquema EWS seja atualizado para uma nova versão, a versão atual do esquema é bifurcada e renomeada usando a seguinte convenção:
<schemaname>-<majorserverversion><servicepack>.xsd
Em seguida, o nome do arquivo original representa o esquema mais recente. Todos os novos recursos são adicionados ao esquema mais recente, com exceção de atualizações e correções para as versões anteriores do esquema.