Visão Geral Sobre as Conexões do Web Parts

Os controles Web Parts permitem criar conexões entre controles de servidor, de modo que o valor total e utilidade dos controles conectados exceda a do indivíduo, controles desconexos. Um conjunto completo e integrado de componentes de conexão é fornecido, de modo que com um número mínimo de etapas, algumas linhas de código e sem a necessidade de manipular toda a complexidade e a sincronização de dados da base, você possa instalar controles WebPart (ou servidor ou usuário) existentes para fazer conexões. Com controles que são habilitados para conexões, você pode criar, conexões dinâmicas programáticas entre os controles em tempo de execução, bem como conexões estáticas pré-definidas declaradas na marcação de uma página da Web. Você também pode fornecer aos usuários uma interface de usuário (UI) que lhes permite ligar ou desligar os controles em tempo de execução, e gerenciar as conexões existentes.

Conexões oferecem vantagens para usuários e desenvolvedores. Usando conexões, os usuários podem encontrar maneiras novas e significativas para exibir seus dados. Suponha que você construa uma aplicação em que os contatos de controle de um servidor de um serviço Web, retornam registros históricos de temperaturas médias diárias de um estado e lista os dados em forma de tabela. Se um usuário quiser a flexibilidade para visualizar os dados de maneiras diferentes, o controle de servidor pode ser conectado a um controle gráfico que pode consumir dados tabulares e exibi-lo em vários pontos de vista gráfico. O usuário pode até dar a opção de se exibir os dados em uma tabela ou ligar os dados de temperatura para o controle de gráficos. Com os novos pontos de vista dos dados, os usuários poderão notar novas tendências e relacionamentos em temperaturas que eram mais difíceis de visualizar com os dados em forma de tabela.

Usando conexões, os desenvolvedores podem descobrir novas oportunidades para a reutilização de código, e para combinar a funcionalidade de controles isolados. Suponha que um desenvolvedor cria um controle que salva as informações de endereço para o usuário, incluindo um código postal, e torna esta informação sempre disponível para preencher o formulário de endereço de entrega quando as ordens do usuário alguma coisa. Em seguida, o desenvolvedor adiciona outros controles que dependem de um código postal específico, como controles para exibir informações sobre o tempo e notícias na área do usuário, bem como um controle que parece de empresas por categoria dentro de um determinado código postal. Ao invés de projetar cada novo controle com o mesmo recurso de salvar um código postal, o desenvolvedor poderia projetar cada controle para exigir a entrada de um código postal. Em seguida, o desenvolvedor pode simplesmente conectar o controle que já salva o código postal para os controles de tempo, notícias, e da lista de negócios que levam um código postal como uma entrada. Cada conexão estende a utilidade do controle original e elimina a redundância no código dos novos controles.

A conexão de Web Parts é um link ou associação entre dois controles de servidor que lhes permite compartilhar dados. Uma conexão sempre envolve exatamente dois controles: uma é o provedor de dados e o Outros é o consumidor dos dados do provedor.Um controle pode ser tanto um consumidor e um provedor, e qualquer tipo de controle de servidor, seja um controle WebPart, um controle personalizado ou um controle de usuário, pode ser criado para participar de conexões.Um controle de provedor, por padrão, pode estabelecer conexões com vários consumidores ao mesmo tempo (como no exemplo anterior de um controle de código postal que fornece um código postal para um controle de informações sobre meteorologia, um controle de títulos de notícias e um controle de listagem de negócios). Um controle do consumidor por padrão pode se conectar a apenas um provedor de cada vez.

Conexões sempre tem lugar no contexto de um aplicativo Web Parts, o que significa que, no mínimo, além dos dois controles de servidor que participam da conexão, dois controles adicionais são necessárias na página da Web. Um deles é o controle WebPartManager, que está presente em cada página que contém controles de Web Parts.O segundo controle necessário é uma zona que herda da classe WebPartZoneBase, como o controle WebPartZone.Quaisquer dois controles de servidor, para formar uma conexão, devem residir em um tipo WebPartZoneBase de zona.

Numa relação de ligação, o consumidor e o fornecedor de cada, de pelo menos, um objecto associado denominado ponto de ligação. Com base na classe ConnectionPoint, um ponto de conexão contém os detalhes necessários para um controle de servidor conectar-se a outro controle, como o tipo do controle em si, o tipo de dados que o controle reconhece, uma identificação para o objeto ponto de conexão, e se o controle pode formar várias conexões. Um controle de servidor pode ter vários pontos de conexão. Os pontos de conexão de um provedor são definidos pelas instâncias da classe ProviderConnectionPoint, e do consumidor é definido pelas instâncias da classe ConsumerConnectionPoint.

Para formar uma conexão, o consumidor e o provedor devem ambos reconhecer o mesmo tipo de dados, que em conexões de Web Parts é transmitida por meio de uma instância da interface. O tipo de dados que um controle reconhece é especificado no ponto de conexão associado do controle, na propriedade InterfaceType. Se o fornecedor e consumidor reconhecer o mesmo tipo de dados, que são compatíveis. Se um provedor e consumidor são incompatíveis, um desenvolvedor deve usar um objeto especial transformador para traduzir os dados do provedor em uma forma de o consumidor pode trabalhar. Este objeto transformador herda da classe base WebPartTransformer, e um desenvolvedor pode herdar a classe base para desenvolver um transformador personalizado, ou usar um dos objetos transformadores fornecido (RowToFieldTransformer ou RowToParametersTransformer).

Após uma conexão ser criada, ele estará contido em um objeto WebPartConnection.O objeto de conexão encapsula todos os detalhes sobre a conexão, incuindo referências a seus objetos consumidor e provedor, as identificações do consumidor e do provedor, referências a quaisquer pontos de conexão e suas identificações, referências para quaisquer transformadores associados à conexão e detalhes sobre o estado da conexão, como se a conexão está ativa e se ela é estática ou dinâmica.

Você pode fornecer aos usuários uma maneira de criar e gerenciar conexões usando o controle ConnectionsZone.Você pode declarar um elemento <asp:connectionszone> em um página da Web, que fornece aos usuários uma interface de usuário em tempo de execução que permite que eles conectem ou desconectem controles e configurem certos detalhes de conexão.

Conexões de Web Parts são baseadas em um modelo de "puxar" de conectividade, onde o consumidor obtém dados do provedor. Para criar uma conexão, um controle que atua como um provedor de dados define um contrato de comunicação, indicando os dados que ele pode proporcionar. Outro controle, atuando como o consumidor e com conhecimento do contrato de comunicação, recupera esses dados.

O mecanismo para estabelecer uma conexão é um método callback especial: um no consumidor e o outro no provedor. No entanto, o controle Web Parts lida com todos os callback e comunicação de detalhes, então os passos necessários de desenvolvimento são mínimos. Como desenvolvedor, se você desejar usar a abordagem mais simples, tudo que o que você tem a fazer é selecionar um método no provedor para usar como o método callback e marcá-lo no código-fonte com um atributo ConnectionProvider. Em seguida, no interior desse método, é retornado o exemplo de interface que contém os dados para transmitir para o consumidor. A instância da interface pode ser muito simples (por exemplo, uma única propriedade que contém um valor de seqüência como um código postal). Um provedor pode implementar uma das interfaces fornecidas (IWebPartField,IWebPartRow,ou IWebPartTable), mas na maioria dos casos é preferível criar uma interface simples, personalizada com um ou mais propriedades ou métodos que contenham os dados você deseja compartilhar com um consumidor e implementar essa interface no provedor. Método de retorno do consumidor recupera a instância da interface do provedor. Novamente, tudo o que é necessário para um desenvolvedor é identificar qual método no consumidor (usando um atributo ConnectionConsumer) irá recuperar a instância da interface e atribuí-lo a algumas variáveis internas para o processamento.Observe que os dados do provedor são passados durante a fase de pré-processamento do ciclo de controle da página, portanto você deve planejar o processamento dos dados e atualização de qualquer lógica no consumidor após o pré-processamento ser concluído.

ObservaçãoObservação:

Conforme mencionado anteriormente, o consumidor e provedor devem ser compatíveis com relação ao tipo de interface, senão eles devem usar um objeto WebPartTransformer para estabelecer a conexão.

O pipeline através do qual os dados são trocados são os pontos de conexão para o consumidor e provedor. Você pode criar um ponto de conexão para um controle de várias maneiras. Conforme mencionado no parágrafo anterior, você pode usar as classes ConnectionConsumerAttribute e ConnectionProviderAttribute, cada uma cria um ponto de conexão para você.Nessa abordagem, você pode adicionar um atributo ConnectionConsumer no método callback do consumidor no código-fonte e adicionar um atributo ConnectionProvider da mesma forma para método callback do provedor.Isso identifica os métodos callback respectivos e permite que você especifique alguns detalhes sobre o ponto de conexão, como uma identificação e um nome para exibição (que aparecem na UI para os usuários formarem conexões).Como outra alternativa, você pode criar um ponto de conexão personalizado herdando de ConnectionPoint, ou você pode usar ou herdar das classes ConsumerConnectionPoint ou ProviderConnectionPoint. Como observado anteriormente, um controle que atua como um consumidor ou um provedor pode ter vários pontos de conexão.

A conexão entre os controles pode ser estática ou dinâmica. Conexões estáticas são codificadas declarativamente na página de hospedagem e criadas durante a fase de pré-processamento da página. Isso garante que a conexão está ativa quando um usuário visualiza a página. Para um exemplo, veja Como: declarar uma conexão estática entre dois controles Web Parts. Conexões dinâmicas podem ser criadas através de programação no código do controle ou declarativamente na página de hospedagem. Se você declara dois controles de servidor compatíveis dentro de uma zona WebPartZoneBase em uma página da Web e declara uma instância do controle ConnectionsZone na página, os usuários podem criar e configurar em tempo de execução uma conexão dinâmica entre os controles.

Conexões contrastam de várias maneiras com as outras técnicas do ASP.NET para a transferência de informações entre os controles em um aplicativo Web:

  • As conexões são uma característica da Web Parts. Você só pode se conectar a controles que são projetados para conexões Web Parts e que residam dentro de uma zona WebPartZoneBase.

    ObservaçãoObservação:

    Como observado anteriormente, qualquer controle ASP.NET de servidor, controle personalizado, ou controle de usuário pode ser usado como um controle Web Parts para tirar proveito das conexões.

  • Conexões são diferentes de data binding . Conexões entre os controles em uma zona de Web Parts usam uma interface para criar um contrato entre os controles. A ligação de dados é uma conexão entre um controle e um dispositivo de armazenamento ou banco de dados back-end. As Conexões das Web Parts movem os dados somente entre os controles de uma página.

  • As conexões podem ser personalizadas. Configurações de conexão que indicam quais controles estão conectados podem ser armazenadas com segurança com outros dados de personalização. Para mais informações sobre personalização, veja Visão geral sobre a personalização de Web Parts.

A tabela a seguir mostra três componentes nos controles de Web Parts que são essenciais para as conexões, e que você trabalha direta ou indiretamente sempre que usar conexões.

Controles Web Parts

Descrição

WebPartManager

Gerencia todas as conexões entre controles na zona das Web Parts de uma página. Um (e somente um) controle WebPartManager é necessário para cada página que trabalha com Web Parts.

WebPartZoneBase

WebPartZone

A classe base WebPartZoneBase fornece o contexto necessário no qual os controles de servidor podem se conectar e trocar de dados.Você pode herdar a classe base para criar uma zona personalizada, ou usar o controle WebPartZone como a zona real para conter os controles de servidor envolvidos em uma conexão.

WebPartConnection

Representa uma conexão, com referências para o provedor e consumidor, e todos os outros componentes necessários de uma conexão.

ConnectionPoint

ProviderConnectionPoint

ConsumerConnectionPoint

A classe base ConnectionPoint define um objeto que está associado a um provedor ou consumidor e contém os detalhes necessários para a troca de dados.O ProviderConnectionPoint está associado com o provedor, e o ConsumerConnectionPoint está associado o consumidor.

ConnectionsZone

Fornece uma interface do usuário que permite aos usuários criarem em tempo de execução, as conexões dinâmicas entre controles de servidor.

Contribuições da comunidade

Mostrar: