Arquitetura de extensibilidade do Designer de dados
Extensibilidade de Designer de dados (DDEX) fornece um mecanismo para estender os designers de dados em Visual Studio se comunique com fontes de dados externos e expor suas hierarquias de objeto e modos de exibição de hierarquia no Server Explorer. DDEX permite o acesso a objetos de origem de dados externos no tempo de design, não apenas fornecendo visibilidade do objeto de dados em Visual Studio, mas também permitindo a funcionalidade de arrastar-e-soltar, visibilidade de grade de propriedade do objeto e integração aos recursos da Visual Studio designers. Resumindo, o DDEX permite que provedores de fontes de dados de terceiros para desfrutar de cidadania completa na Visual Studio em tempo de design.
Dica
Provedores DDEX são diferentes.NET disponíveis.Para obter mais informações, consulte Provedores DDEX.
Extensibilidade do Designer de dados, em seguida, é sobre como usar o SDK do DDEX e arquitetura do recurso e APIs gerenciadas para integrar dados externos da fonte de objetos para o Visual Studio ambiente.
Dica
Esse SDK deve ser usado em conjunto com Ampliando a visão geral de Visual Studio.
Visão geral da arquitetura
A ilustração a seguir fornece uma visão de alto nível e esquemática da arquitetura DDEX. Nela, você verá que o cliente DDEX é hospedado no Visual Studio, e que ele usa os serviços de acesso e core (parte da biblioteca de classes gerenciadas DDEX) para se comunicar e interagir com um provedor DDEX. O próprio provedor DDEX é simplesmente uma implementação das entidades de suporte, que são classes gerenciadas. DDEX se comunica com a camada de dados usando um dedicado.NET data provider. Entretanto, observe que o provedor de dados pode ser omitido em casos onde o provedor DDEX é equipado com o recurso necessário para interagir com a fonte de dados.
Diagrama da arquitetura DDEX
Da camada de DDEX, dois dos seus componentes são centrais: DDEX suporte a entidades e os serviços DDEX.
Entidades de suporte, serviços básicos e Serviços do Access
Entidades de suporte DDEX são interfaces que um provedor DDEX implementa para habilitar a extensibilidade de dados. Na verdade, é a implementação dessas entidades de suporte que constitui um provedor DDEX.
Serviços DDEX, por outro lado, são divididos em serviços de acesso e serviços básicos. Principais serviços são os serviços base através do qual as entidades de suporte estão expostas. Eles são interfaces implementadas internamente como gerenciado classes que Visual Studio chamadas para criar entidades de suporte de provedor DDEX nível superior e trabalhar com fontes de dados e provedores de dados. Os serviços de acesso, que também são interfaces implementadas internamente como classes gerenciadas, fornecem Visual Studio com a capacidade de criar e trabalhar com conexões de dados e ter acesso aos dados na memória representações de estrutura do objeto de dados oferecem suporte ao XML e suporte a exibição de dados XML. Além disso, os serviços de acesso consumam entidades de suporte.
A ilustração abaixo representa a relação entre entidades de suporte e serviços em mais detalhes.
Suporte a entidades e diagrama de Serviços do Access
Entidades de suporte
As APIs gerenciadas que constituem um provedor DDEX dividem-se amplamente em três categorias:
Suporte a conexões
Suporte de objeto de dados
Suporte ao modo de exibição de dados
Suporte a conexões
Suporte de conexão fornece uma maneira para especificar informações de conexão, incluindo a seqüência de conexão e a fonte de dados. Isso pode ser feito por meio de programação, se as informações de conexão são conhecidas ou por meio de conexão da interface do usuário para solicitar ao usuário para obter as informações de conexão necessárias. Opcionalmente, um provedor DDEX pode expor um controle de conexão que está hospedado na Visual Studio caixa de diálogo de conexão.
Suporte de objeto de dados
Usando um arquivo XML de suporte de objeto de dados, um provedor DDEX define objetos de dados expostos pelo provedor de dados para uma determinada fonte de dados. Ele também define a hierarquia de objeto, ou o modelo de objeto, para esses objetos.
O Visual Studio mecanismo de metadados mantém uma biblioteca de classes com rigidez de tipos que permitem a reconhecer o objeto de fonte de dados genérico como tabelas, visões e procedimentos armazenados, bem como propriedades do objeto genérico, que reduz a tipos mapeados. As definições de objeto de dados fornecidas em seu arquivo XML permitem que você mapeie os tipos de objeto suportados pelo seu provedor de dados para um desses tipos genéricos que são reconhecidos pelo mecanismo de metadados.
Além de definir os tipos de objeto e mapeando-os para tipos genéricos, para o seu esquema de suporte do objeto de dados também deve especificar o seguinte:
Como enumerar os objetos do tipo especificado, o que é feito especificando um manipulador que é chamado quando o objeto de enumeração é necessária.
Como recuperar metadados do objeto de metadados, como o identificador de objeto ou propriedades do objeto.
Como construir um objeto clipboard em casos onde uma operação de cópia será executada em um objeto do tipo especificado. Visual Studiodesigners de dados usam o formato de área de referência de fonte de dados (DSRef). Objetos que oferecem suporte a DSRef podem ser arrastada e solta em Visual Studio designers de dados.
Para obter mais informações sobre suporte de objeto de dados, consulte Suporte de objeto de dados DDEX.
Suporte ao modo de exibição de dados
Usando um arquivo XML de suporte de modo de exibição de dados, um provedor DDEX define a hierarquia física dos objetos de dados exibidos em um nó de determinada conexão na Visual StudioServer Explorer. Você pode definir vários modos de exibição para a mesma fonte de dados.
Além de definir a hierarquia de objeto físico, você também pode especificar informações adicionais sobre nós de hierarquia, incluindo itens como o nome de exibição localizado, comandos de menu de contexto (nome do comando, CLSID e manipulador), ícones e outras informações, conforme necessário.
Para obter mais informações sobre o suporte ao modo de exibição de dados, consulte Suporte de modo de exibição de dados DDEX.
Serviços Principais
DDEX fornece um conjunto de interfaces que são implementadas internamente como gerenciado classes que Visual Studio chamadas para acessar a funcionalidade implementada pelo provedor de DDEX na forma de entidades de suporte de nível superior. Essas interfaces são conhecidas coletivamente como o principais serviços de DDEX.
Os principais serviços mais importantes incluem o seguinte:
Provedor de Gerenciador permite enumerar os provedores registrados de DDEX e de consulta para objetos de um tipo específico (IVsDataProviderManager interface).
Objeto alocador de provedores de dados fornece uma maneira para criar objetos de dados implementados pelo provedor de DDEX (IVsDataProviderObjectFactory interface).
Principais serviços de DDEX permitem Visual Studio para se comunicar com fontes de dados em um contexto de tempo de design. Isso exige ter componentes desse serviço, uma conexão à fonte de dados, bem como ter um conjunto de serviços especializados que fornecem acesso a tipos de objeto de origem de dados e modos de exibição de seus layouts hierárquicas.
Em uma implementação típica, um cliente DDEX chama a fábrica de objeto do provedor de dados para instanciar os principais blocos de construção. Esses blocos de construção chaves incluem os objetos de suporte de conexão e de criação de conexão (consulte as entidades de suporte e o diagrama de Serviços do Access). Alguns desses objetos de bloco de construção, em seguida, geram objetos secundários, conforme necessário, em toda a hierarquia de entidades de suporte.
Serviços do Access
DDEX fornece um conjunto de interfaces que são implementadas internamente como gerenciado classes que Visual Studio suportam a chamadas para acessar a funcionalidade para conexão de dados e a representação na memória do objeto de dados XML e o suporte a exibição de dados XML. Essas interfaces são conhecidas coletivamente como os serviços de acesso DDEX.
Alguns dos mais importantes serviços de acesso incluem o seguinte:
Fábrica de conexões de dados permite criar objetos de conexão (IVsDataConnectionFactory interface).
Caixa de diálogo de conexão de dados permite que você solicita ao usuário informações de conexão e criar objetos de conexão (IVsDataConnectionDialog interface).
Você pode exibir a conexão de fonte de dados (e suas principais partes, como o Gerenciador de conexões e a fábrica de conexões) como um serviço integrado proffered pela estrutura de extensibilidade de dados. Neste modo de exibição, o Visual Studio mecanismo de metadados age como um cliente de conexão, consumindo APIs de Serviços do Access, que por sua vez, chamam suas entidades de suporte correspondentes. Esse é o mecanismo através do qual Visual Studio monta uma estrutura de suporte para a conexão com a fonte de dados de serviço.
Sobreposição entre as entidades de suporte e Serviços do Access
A principal diferença entre as entidades de suporte e serviços de acesso é que os clientes de extensibilidade consumirem os serviços de acesso (principalmente o objeto de conexão), que por sua vez se comunicam com o provedor DDEX. Provedores visualizado na direção oposta, interagem com a conexão usando APIs das entidades de suporte.
Em algumas circunstâncias, as funções dos serviços de acesso e as entidades de suporte se sobrepõem, particularmente onde é necessário para garantir a segurança do thread. A arquitetura DDEX fornece uma camada de bloqueio segura entre o provedor de dados e o cliente de conexão para essa finalidade. O exemplo a seguir ilustra o recurso.
Quando você chegar, por exemplo, o IVsDataCommand de serviço do objeto de conexão, em vez de obter um objeto de comando de dados, o objeto de conexão em vez disso obtém uma implementação de proxy da IVsDataCommand interface. A implementação do proxy se comunica com a entidade de suporte que implementa-lo. Além disso, a implementação de proxy é thread-safe. Dessa forma, o proxy primeiro bloqueia a conexão e, em seguida, chama para baixo as entidades de suporte; Ao terminar a conexão, ele novamente desbloqueia a conexão, liberar um bloqueio de thread.
Neste exemplo, o IVsDataCommand interface é implementada como um acesso de serviço (em que o cliente chama diretamente), mas também se comporta como uma entidade de suporte, em que o provedor de dados implementa a mesma interface e o resultado é a criação de uma camada de bloqueio segura entre o provedor e o cliente de conexão.
Referência DDEX
DDEX SDK fornece documentação de referência de linguagem completa:
Esquema XML de suporte do objeto de dados
Use o esquema de suporte do objeto de dados (DataObjectSupport.xsd) para gerenciar e enumerar as instâncias de objetos de fonte de dados através de programação. Para obter mais informações sobre objetos de dados, consulte Suporte de objeto de dados DDEX.
Suporte para exibição de dados XML Schema
Use o esquema de suporte do modo de exibição de dados (DataViewSupport.xsd) para gerenciar um ou mais modos de exibição de layout da hierarquia de objeto de dados, como ele aparece no Server Explorer. Para obter mais informações sobre modos de exibição de dados, consulte Suporte de modo de exibição de dados DDEX.
Referência da biblioteca de classe gerenciada
O SDK do DDEX fornece um conjunto de interfaces gerenciadas e classes base que permitem que você gravar um provedor gerenciado do DDEX.