Compartilhar via


WCF transporte do Exchange servidor email

O transporte de email do Windows Communication Foundation (WCF) para o Microsoft Exchange servidor fornece um serviço em na fila usando pontos de extremidade do WCF com base nos endereços de email.Essa solução permite que aplicativos .NET Compact estrutura e .NET estrutura para hospedar e consumir serviços da Web de qualquer computador enquanto o servidor de email estiver acessível.

Observação:

Há suporte para o WCF no .NET Compact estrutura versão 3.5 e posterior.

Esse recurso pode ser usado para habilitar uma variedade de cenários de aplicativo, incluindo o seguinte:

  • Os aplicativos que deseja enviar uma comunicação segura do campo de volta para um servidor central e recebem comunicações seguras do servidor.

  • Aplicativos que enviar dados de um servidor corporativo para dispositivos no campo.

  • Aplicativos de mesmo nível-a-de mesmo nível onde dois ou mais dispositivos podem conversar entre si diretamente.

    Nessas situações, várias partes se comunicar informações de estado para outro usando o servidor de email sistema autônomo o mediador.Por exemplo, em um cenário típico de jogos, um player envia um convite para jogar um Game para os outros jogadores fornecendo o aplicativo com endereços de email ou um alias de agrupar.

  • Aplicativos que localizar dispositivos perdidos.

  • Aplicativos que atualizam as informações de configuração para outros aplicativos enviando dados para o dispositivo.

O transporte de email do Exchange servidor WCF aborda duas limitações básicas de dispositivos em campo: addressibility e a capacidade de dados da fila quando dispositivos estão off-line.Nome do canal e o endereço de email constituem o endereço do ponto de extremidade WCF.Isso é semelhante a um número da porta e endereço IP em um aplicativo baseado em soquete.Addressibility do dispositivo é tratada pelo email e addressibility da instância do aplicativo é feita em nome do canal de entrada.O protocolo WS-Addressing é usado para implementar esse esquema de endereçamento personalizada.

O enfileirar é suportado através do armazenamento de dados local em dispositivos Windows Mobile.Para obter informações Geral sobre filas do WCF, consulte Queues Overview.

Aplicativos criados em mensagens do Exchange servidor WCF se beneficiam de recursos fundamentais do WCF de transporte.O WCF fornece um modelo de programação unificado para vários protocolos subjacente e transportes e separa a lógica do aplicativo do ponto de extremidade WCF.Este modelo de programação oferece vários benefícios, incluindo suporte a redes diferentes, sistema autônomo GPRS (Geral pacote Radio serviço), Wi-Fi e qualquer Outros rede pode acessar o servidor de email.Desenvolvimento de aplicativos usando o transporte de email do Exchange servidor do WCF é muito semelhante ao desenvolvimento de aplicativos por meio de canais do WCF, sistema autônomo o canal HTTP.

Requisitos

O servidor de email para aplicativos baseados no transporte de email do WCF é o Exchange Server 2007.Exchange servidor 2007 Service empacotar 1 contém uma tarefa administrativa permite redirecionar o tráfego de serviço para uma pasta separada para email do WCF.

Observação:

S o tráfego ervice usa o Caixa de entrada se não for redirecionado.

O transporte de email é compatível com ambos os dispositivos e área de trabalho computadores.

CEMAPI (CE sistema de mensagens API) é necessário no dispositivo para oferecer suporte a enfileirar.CEMAPI está presente nos dispositivos Windows Mobile, mas não está presente em dispositivos Windows CE incorporado ligado.

Windows Mobile versão 5.0 e versões posteriores suportam o transporte de email do Exchange servidor do WCF.Em versões do Windows Mobile anterior à versão 5.0 (compilação 14847.2.0), Systems Management Server (SMS) é usado em vez de Direct Push para forçar a sincronização com o servidor de email do Exchange.

Observação:

Também é o transporte de email suporte no Windows Mobile 2003 para Pocket PC e Windows Mobile 2003 Segunda edição para Pocket PC.No entanto, para dispositivos que estão executando versões do Windows Mobile anterior 5.0, o período de sincronização do ActiveSync para mensagens de entrada sempre não ocorre quando sch eduled.Para esses dispositivos, recomendamos Você não especificar uma time - check-out ou que você Especifique um grande time - Quando você chama de fora o Receive método. Não há suporte para o Windows Mobile 2003 for Smartphone.

  • No computador área de trabalho, a comunicação com o servidor de email ocorre diretamente por meio de serviços da Web do Exchange Server 2007.A área de trabalho não oferece suporte ao enfileirar.sistema autônomo resultado, o computador de mesa deve ser sempre online.

  • Aplicativos da área de trabalho usam a implementação da área de trabalho do WCF.

Arquitetura

A camada de sistema de sistema sistema de mensagens baseia-se na arquitetura do WCF de área de trabalho padrão.A camada de tempo de execução do serviço não está presente.A ilustração a seguir mostra a pilha de canais e os protocolos suportados e elementos de ligação.

Camada de sistema de sistema sistema de mensagens para o transporte de email do Exchange servidor do WCF

Suporte a WS-Security especificação versão 1.0 inclui segurança de mensagem SOAP usando certificados X.509.

The Message classe se baseia no padrão WS-endereçamento. Todas as mensagens são assíncrono; forem de um dispositivo por meio do servidor de email para outro dispositivo sem uma viagem de retorno.

Serialização e desserialização de mensagens são manipuladas dentro do tempo de execução do .NET Compact estrutura ou do .NET estrutura.No lado do dispositivo, um serializador personalizado deve ser usado no aplicativo.Isso não é necessário para a área de trabalho como o .NET estrutura completo oferece suporte a DataContractSerializer classe. No entanto, o serializador mesmo é usado para dispositivos deve ser usado na área de trabalho se o aplicativo dá suporte à comunicação entre dispositivos e a área de trabalho.

Design

Para o transporte de email do Exchange servidor do WCF, um ponto de extremidade WCF é representado pela combinação de uma associação WCF e o endereço do ponto de extremidade.A ligação Especifica os parâmetros que são usados para comunicação.Ele representa uma coleção de elementos de ligação que inclui um elemento, um elemento de ligação de codificação e um elemento de ligação de segurança de ligação de transporte.Para aplicativos que usam o transporte de email, esses elementos são definidos da seguinte maneira:

Em vez de instanciar um conjunto de elementos dentro de um de ligaçãoCustomBinding o objeto, aplicativos podem criar uma coleção predefinida de elementos de ligação, usando uma classe que deriva de MailBindingBase objeto. Além do elemento de ligação de transporte de email, essa classe inclui um elemento de ligação e a segurança de mensagem opcional de codificação de texto.

sistema autônomo mensagens são incluídas no corpo da mensagem de email ou enviadas sistema autônomo um anexo.The Assunto linha da mensagem contém o nome do canal.A mensagem é identificada com um carimbo de canal de email WCF personalizado fornecido pela classe de mensagens usada pelo Exchange servidor.

Enviando mensagens

Quando um aplicativo envia uma mensagem, ele chama o Send método no canal de saída corrente, que deve ser em aberto. O canal de saída serializa a mensagem para uma seqüência de caracteres e crie a mensagem no Rascunhos pasta.Ele define os valores apropriados nos campos de email.Quando a mensagem tiver sido criada, ele é movido para o Caixa de saída.Isso ocorre por meio de CEMAPI no dispositivo ou por meio de serviços da Web do Exchange na área de trabalho.No dispositivo, sistema autônomo mensagens no Caixa de saída são sincronizados com Outros mensagens, de saída conforme definido pelo ActiveSync.

Recebendo mensagens

Quando um aplicativo baseado no transporte de email do Exchange servidor WCF recebe uma mensagem, ocorre o seguinte processo:

  1. O aplicativo abre o canal de entrada.

  2. O canal de entrada chama o Receive método de iniciar a escutar as mensagens.

  3. Quando o servidor de email do Exchange recebe uma mensagem que possui o carimbo de canal de email WCF, ele roteia automaticamente a mensagem para o Serviço de email pasta, que é o mesmo nível, sistema autônomo a Caixa de entrada.

    Observação:

    Se o Exchange email s ervidor não foi configurada a rota WCF Exchange servidor serviço email para o Serviço de email pasta, ele usa o Caixa de entrada em vez disso.

  4. O canal de entrada que está escutando para o novo evento de email verifica cada mensagem que chega no Serviço de email or Caixa de entrada pasta.

    O canal de entrada bloqueia o código enquanto ele está na escuta de mensagens.

  5. Se o canal de entrada corresponder ao nome de canal específico na mensagem, ele recupera a mensagem e desbloqueia o código.

Você pode chamar o Receive método para vários canais de entrada que são criados no mesmo transporte. O bloqueio ocorre somente quando Receive é chamado pela segunda vez no mesmo canal de entrada no mesmo thread.

Observação:

Apenas um canal de entrada pode ser associado a cada ouvinte do canal.Uma segunda telefonar para o AcceptChannel método em um canal de ouvinte não retornará até que o primeiro canal de entrada.

Para obter maior flexibilidade, o transporte de email pode ser configurado para controlar mensagens de vários tamanhos de maneiras diferentes.Por exemplo, possível enviar mensagens sistema autônomo anexos ou no corpo da mensagem com base em seu dimensionar.Mensagens maiores não podem ser baixadas completamente durante a sincronização inicial.No dispositivo, sistema autônomo mensagens no Serviço de email or Caixa de entrada pasta estão sincronizadas com outras mensagens de entrada, conforme definido pelo Microsoft ActiveSync.

Observação:

Para o dispositivo, t configurações de sincronização de email ActiveSync controlam o dimensionar máximo de cada mensagem que inicialmente é baixado para o dispositivo.Se uma mensagem exceder esse dimensionar, apenas uma parte do corpo da mensagem é baixada inicialmente.Se uma mensagem é parcialmente baixada e uma escuta de canal está aguardando a mensagem, o transporte marca a mensagem para indicar que ele possui para download em sua totalidade .A mensagem completa é baixada na próxima sessão de sincronização.

Ao receber uma mensagem, você pode obter o endereço de email do remetente usando o FromEmailAddress propriedade personalizada na Message classe. O exemplo a seguir demonstra como usar essa propriedade.

System.ServiceModel.Channels.Message m;
String senderAddress;
m = input.Receive();
senderAddress = m.Properties.ContainsKey("FromEmailAddress")

Excluindo mensagens

O transporte exclui uma mensagem assim que a mensagem é solicitada e recebida pelo aplicativo.O processo de exclusão de mensagens de entrada depois que eles são processados varia de acordo com a plataforma.

O processo para excluir as mensagens recebidas em dispositivos Windows Mobile consiste as seguintes etapas:

  1. O canal de entrada recupera uma mensagem depois que ele chama o Receive método.

  2. O transporte de email emite uma telefonar para excluir a mensagem do armazenamento de mensagem o dispositivo com Windows Mobile.

  3. A mensagem é excluída do servidor na próxima sincronização de email.

O processo de exclusão de mensagens de entrada na área de trabalho consiste as seguintes etapas:

  1. O canal de entrada recupera uma mensagem depois que ele chama o Receive método.

  2. Os locais de transporte de email a mensagem em cache as mensagens excluídas, que é um cache interno de propriedade de transporte de email.

  3. No próximo intervalo de consulta, o transporte de email verifica o cache de mensagens excluídas.

    O intervalo de consulta é determinado pelo ServerQueryInterval propriedade.

  4. Se o cache de mensagens excluídas contém todas as mensagens, transporte de email emite uma consulta que inclua um comando para o servidor para excluir as mensagens no cache.

  5. Durante a consulta, o transporte de email verifica os eventos de servidor e downloads de quaisquer mensagens associadas.

  6. O transporte de email posta quaisquer mensagens baixadas em seu cache de processamento para processamento pelo aplicativo.

Para a área de trabalho, o transporte de email também emite um comando ao servidor para excluir mensagens no cache de mensagens excluídas nas seguintes circunstâncias:

  • Quando você telefonar o Close método no último restante entrado canal em aberto associado a um transporte de email.

  • Quando você telefonar o Dispose método de transporte de email.

Essas operações são síncronas; Close e Dispose bloquear o código até que as mensagens são excluídas do servidor. O time necessário para excluir as mensagens pode variar e depende do número de mensagens que têm a ser excluído.Se ocorrer uma falha durante esse processo, o transporte faz várias mais tentativas de excluir as mensagens.

Em dispositivos Windows Mobile, o armazenamento de mensagens lida com essa função.

Mensagens também são excluídas quando forem inválidos ou malformados.Uma mensagem que possui um envelope SOAP corrompido é considerada inválido e será excluída permanentemente.Se a linha do assunto da mensagem contiver informações incorretas seguindo o carimbo de canal de email WCF, sistema autônomo um caractere sem suporte no nome do canal, é considerado uma mensagem malformada.Mensagens malformadas são movidas para o Excluído pasta.

Configuração padrão.

The MailBindingBase classe e as classes derivadas de ele representam uma coleção de elementos de ligação predefinidos. Essas classes são projetadas para tornar mais fácil de criar a entrada e saída de canais.Em algumas situações, talvez seja necessário alterar valores padrão dessas coleções predefinidas.Se a propriedade que você precise alterar não existir em MailBindingBase ou na classe derivada você está usando, você pode criar o elemento de ligação separadamente em um CustomBinding objeto. Como alternativa, você pode chamar o CreateBindingElements método para retornar todos os elementos de ligação em MailBindingBase.

Por exemplo, no ExchangeWebServiceMailBinding classe, o dimensionar máximo da mensagem do padrão para mensagens recebidas é 65.536 bytes. Você pode aumentar o dimensionar máximo a 100.000 bytes, usando o código a seguir para conjunto o MaxReceivedMessageSize propriedade.

binding = new ExchangeWebServiceMailBinding(Server, Credential, MailSecurityMode.Message);
bindingElems = binding.CreateBindingElements();
bindingElems.Find<ExchangeWebServiceMailTransportBindingElement>().MaxReceivedMessageSize = 100000;
binding = new CustomBinding(bindingElems);

Segurança

Aplicativos que sejam baseiam o transporte de email do WCF Exchange servidor oferecem suporte a segurança da mensagem SOAP com base no protocolo WS-Security, que se pareça com os recursos de segurança da área de trabalho com suporte para o HttpTransportBindingElement classe. Esse recurso de segurança conta com certificados X.509.

Se você usar o conjunto predefinido de elementos de ligação em uma subclasse do MailBindingBase objeto de segurança da mensagem está disponível, mas desabilitado por padrão. Para habilitar a segurança, use o Mode propriedade. Você pode alterar o algoritmo de criptografia padrão usando o AlgorithmSuite propriedade. Quando a segurança estiver ativada, Basic256Rsa15 é o valor padrão.

Os elementos de ligação de segurança que são suportados em aplicativos que usam o transporte de email do Exchange servidor do WCF são SecurityBindingElement e AsymmetricSecurityBindingElement.

Observação:

Usando a segurança de mensagem aumenta o dimensionar de cada mensagem.Se você estiver usando o ExchangeWebServiceMailBinding classe e suas mensagens excederam 45.000 bytes, que você tenha que aumentar o valor da MaxReceivedMessageSize propriedade. O exemplo de código na seção anterior demonstra como aumentar o dimensionar máximo da mensagem.

Implantação

Para a implantação de dispositivo, o transporte de email do Exchange servidor WCF DLLs são entregues nos arquivos CAB do .NET Compact estrutura para dispositivos com o Windows Mobile.Os módulos gerenciado são instalados no cache de assembly global.

DLLs do transporte de email para o dispositivo são sistema autônomo segue:

  • Microsoft.ServiceModel.Channels.email.dll

  • Microsoft.ServiceModel.Channels.email.WindowsMobile.dll

  • Netcfmail3_5.dll, que é um invólucro nativo CEMAPI

As DLLs de WCF do .NET Compact estrutura também deve estar presentes no dispositivo.

Implantação de área de trabalho é tratada por meio do arquivo de instalação .msi .NET Compact estrutura.O recurso de transporte de email WCF Exchange servidor é instalado por padrão.Os assemblies de transporte de email são instalados no cache de assemblies global da área de trabalho.

O transporte de email do Exchange servidor WCF DLLs para a área de trabalho são:

  • Microsoft.ServiceModel.Channels.email.dll

  • Microsoft.ServiceModel.Channels.email.ExchangeWebService.dll

A área de trabalho padrão WCF DLLs também deve estar presente na área de trabalho.

Consulte também

Tarefas

Demonstra Passo a passo: Usando o transporte de mensagem WCF Exchange servidor

Outros recursos

Desenvolvimento do Windows Communication Foundation (WCF) e o .NET Compact estrutura