Exemplo de bate-papo WCF

Demonstra como implementar um aplicativo multiparty bate-papo usando PeerChannel.As mensagens enviadas por qualquer instância de um aplicativo de bate-papo são recebidas por todas as outras instâncias.

Para obter Zoom, Para Cima e Ampliar e instruções para instalá-los

  • Siga um ou mais destes procedimentos:

    • Sobre o Help menu, Zoom, Para Cima e Ampliar Exemplos.

      O arquivo Leiame exibe informações sobre exemplos.

    • Visite o O Visual Studio 2008 Zoom, Para Cima e Ampliar Zoom, Para Cima e Ampliar site. As versões mais recentes dos exemplos estarão disponíveis nele.

    • Localize Zoom, Para Cima e Ampliar no computador em que Visual Studio está instalado. Por padrão, Zoom, Para Cima e Ampliar e um arquivo Leiame são instalados em unidade: \Arquivos de programas\Microsoft visual Studio 9.0\Zoom, Para Cima e Ampliar\LCID. Para edições Express do Visual Studio, todos os exemplos estão localizados on-line.

Para obter mais informações, consulte Localizando arquivos de exemplo.

Observação de segurança:

Esse código de exemplo é destinado a ilustrar um conceito, e ele mostra somente o código que é relevante para esse conceito. Ele pode não atender aos requisitos de segurança de um ambiente específico e não deve ser usado exatamente como mostrado. Recomendamos que você adicione código de segurança e tratamento de erros para tornar seus projetos tão seguros e robustos quanto for conveniente. A Microsoft fornece esse código de exemplo "Zoom, Para Cima e Ampliar encontra" sem garantias.

Para executar este exemplo

  1. Em Solution Explorer, abra ExcelAuto.sln.

    Sempre que uma etapa se refere a um cliente ou um serviço, essas etapas se aplicam ao separar instâncias de amostra (porque a amostra de bate-papo é não um aplicativo cliente e de serviço).

  2. Pressione F5 para executar o aplicativo.

  3. Iniciar quantas instâncias (denominados instância e localizado no caminho de instalação Visual Basic \Projects\Chat\Instance\Bin\Debug\Instance.exe) como desejar.Comece inserindo um apelido que fará distinção mensagens enviadas de uma instância específica de cliente.Logo após esse nome é inserido, as mensagens de bate-papo podem ser enviadas para a malha.Essas mensagens devem ser enviadas para todas as outras instâncias que têm um nome distinto membro.(Ou seja, não será exibida uma mensagem a partir de um cliente que tem o mesmo nome, e um único cliente da própria mensagem não será enviada para a janela do console do cliente.)

Demonstra

O exemplo de bate-papo é não um aplicativo cliente e de serviço.É um aplicativo True ponto a ponto, na qual cada instância atua como um ponto de outras instâncias.Cada instância pode enviar mensagens para outras instâncias e receber mensagens de outras instâncias usando o contrato em frente e verso IChat.

Conceitos principais

PeerChannel é um multiparty, ponto a ponto (P2P) comunicação tecnologia na Base de Comunicação do Windows (WCF).Isso ajuda a habilitar mensagem segura, escalonável e confiável.Um exemplo comum de um aplicativo multiparty que pode se beneficiar de PeerChannel é um aplicativo de colaboração, como o bate-papo.No bate-papo, um grupo de pessoas se comunicar entre si de maneira ponto-a-sem servidores.PeerChannel permite P2P colaboração, distribuição de conteúdo, o balanceamento de carga e processamento distribuído para os cenários do consumidor e empresa.

PeerChannel apresenta os conceitos novos a seguir:

  • Um mesh é um conjunto nomeado (um gráfico interconectado) de nós ponto que pode se comunicar entre si e que cada são identificados por uma malha exclusivo identificação.

    Observação:

    Ativas nós na malha publicar seus nomes de malha para que outros podem encontrá-los.Uma malha é ajustado para alterar associação, ele tem adaptável conectividade em um ambiente no qual nós são constantemente ingressar e deixar a malha e é otimizada dinamicamente para se adaptar às padrões de tráfego.

  • Nós Ativos de malha publicar seus nomes de malha para que outras pessoas podem encontrá-los.Uma malha ajusta a variáveis de membros, ele tem conectividade adaptável em um ambiente no qual nós são constantemente ingressando e deixando a malha, e ele dinamicamente é otimizado para adaptar-se aos padrões de tráfego.

  • Um Ponto nó é um ponto de extremidade em uma malha.Um único aplicativo pode ter vários nós ponto que participem de diferentes meshes.

  • Um resolvedor ponto é responsável por resolver uma identificação de malha para os endereços de ponto de extremidade de nós de malha.Um nó ponto usa esses endereços para se conectar a outros nós de malha.Isso permite que mensagens sejam propagadas durante a malha.

O bate-papo é um aplicativo Formulários do Windows.Cada instância de um aplicativo bate-papo cria um IDuplexChannel que tem o mesmo endereço de ponto de extremidade.Como todas as instâncias de um aplicativo bate-papo usam o mesmo endereço, uma mensagem enviada por uma instância do aplicativo é recebida por todas as outras instâncias no seu ponto de canal.

O aplicativo bate-papo define e implementa o contrato em frente e verso IChat.O contrato IChat permite somente operações unidirecionais porque o ServiceModel não suporta a paradigma única solicitação/várias-resposta.(Em um canal multiparty, uma solicitação única que é enviada para a malha pode gerar várias respostas.)

Este exemplo implementa uma função estática principal para criar um IClientChannel com o contrato em frente e verso IChat.A função usa o ponto de extremidade que está especificado na arquivo de configuração.

Todas as instâncias de bate-papo devem usar o mesmo endereço de ponto de extremidade para garantir que as mensagens enviadas por uma instância são recebidas por todas as outras instâncias.

Instâncias de bate-papo nesse exemplo localize entre si usando um Resolvedor Personalizado ou usando o resolvedor ponto padrão (PNRP).Observe que o PNRP não está disponível no Windows servidor 2003.Portanto, um resolvedor personalizado deve ser usado para executar esse exemplo em um sistema que está executando o Windows servidor 2003.Por padrão, esse exemplo é configurado para usar um resolvedor personalizado.Se um resolvedor personalizado ou o resolvedor padrão será usado é determinado pelo bate-papo ponto de extremidade definido a seguir arquivo de configuração.Para alternar para o resolvedor ponto padrão (PNRP), substitua BindingCustomResolver por BindingDefault em bindingConfiguration no arquivo de configuração do exemplo.

<!-- Chat instance participating in the mesh. -->
         <endpoint name="ChatEndpoint"
                   address="net.p2p://chatMesh/ServiceModelSamples/Chat" 
                   binding="netPeerTcpBinding" 
                   bindingConfiguration="BindingCustomResolver" 
                   contract="Microsoft.ServiceModel.Samples.IChat">
         </endpoint>

Para ativar o nó ponto para comunicar-se com o serviço de mesmo nível canal personalizado ponto a ponto resolução, a configuração do ponto a ponto canal personalizado de mesmo nível o resolvedor do lado do cliente é definida na arquivo de configuração.

<!-- Client used to communicate with the custom resolver service. -->
<client>
<endpoint configurationName="CustomPeerResolverEndpoint"
address="net.tcp://localhost/ServiceModelsamples/peerResolverService"
    binding="netTcpBinding"
    bindingConfiguration="Binding3"
    contract="Microsoft.ServiceModel.SamplesICustomPeerResolver">
</endpoint>
</client>

O endereço identifica o endereço do serviço de resolução.Se o resolvedor serviço estiver sendo executado em um computador remoto, substitua localhost um nome de domínio qualificado.

O exemplo também demonstra como recuperar o nó de mesmo nível de IClientChannel e como registrar para eventos on-line e off-line usando IOnlineStatus.Um evento on-line é iniciado quando o nó ponto está conectado para pelo menos um outro nó ponto no malha.Um evento off-line é iniciado quando o nó de mesmo nível não está mais conectado para qualquer outro nó ponto na malha.

Atualmente, os metadados não podem ser gerado porque um canal de mesmo nível não está integrado com o utilitário de metadados de serviço (Svcutil.exe).

Quando você executa a amostra, as bate-papo mensagens enviadas por uma instância do Bate-papo são exibidas nas janelas do console de outras instâncias do bate-papo.Pressione o Q chave seguido Enter em cada janela de console para fechar a instância.

Observação:

O exemplo no momento não manipula todas as possíveis exceções que pode acionar a infraestrutura.Se estiver usando esses exemplos em um ambiente comercial ou de produção, siga o manipulação de exceção apropriada práticas recomendadas.

Consulte também

Tarefas

Demonstra Passo a passo: Criando e acessando serviços WCF

Exemplo de Consumo de ASMX e Serviços WCF