Compartilhar via


Contratos, exibições e adaptadores

Este tópico descreve os modos de exibição e adaptadores, os segmentos que são comuns a ambos os lados do pipeline do suplemento e o contrato usado pelo host e o suplemento.A ilustração a seguir mostra os segmentos do pipeline do suplemento.

Suplemento do pipeline

Para obter exemplos de código, consulte Demonstra Passo a passo: Ativar compatibilidade com versões anteriores, sistema autônomo sistema autônomo alterações de host e Demonstra Passo a passo: Coleções de passagem entre hosts e suplementos.

Contratos

A primeira etapa no desenvolvimento de pipeline de comunicação é definir um contrato deve ser derivado do IContract interface. Se o host e o suplemento são carregados em domínios de aplicativo separado, um limite de isolamento existe entre o lado do suplemento do pipeline e lado do host do pipeline.Um contrato é uma interface de controle de versão não define o protocolo de comunicação tipos em um limite de isolamento.Usando a contratos para se comunicar por um limite de isolamento, o modelo de suplemento impede que do host e do suplemento implementações dos tipos vazando entre o limite e causem problemas de controle de controle de versão.

Objetos que devem ser comunicados entre domínios de aplicativo devem ser remoto.Para obter mais informações sobre objetos remoto, consulte Remotable e Nonremotable objetos.

The ContractBase classe fornece uma implementação padrão de IContract membros. Interface de contrato também pode herdar desta classe.

Requisitos de contrato

Contratos devem seguir um conjunto de requisitos para garantir que todos os tipos expressos em contratos de seguros, podem ser feita a versão e podem passar entre o limite de isolamento entre os hosts e os suplementos.

Contratos devem herdar de IContract e deve usar somente os seguintes tipos:

  • Outros contratos que são derivados de IContract.

  • Tipos primitivos de dados: números inteiros e booliano tipos.

  • Tipos serializáveis definidos no assembly contrato.

  • Tipos serializáveis definidos na mscorlib.dll, por exemplo, Int32 e DateTime.

  • Tipos de referência lacrado, serializável.Por exemplo, você pode passar um String objeto por meio de limite de isolamento porque é um tipo de referência lacrado, serializável.

  • Enumerações que são definidas no contrato ou no mscorlib.dll.

  • AddInToken objetos.

  • Arrays de qualquer precedente listados tipos, exceto uma matriz de contratos.

Para passar o objeto coleções, usar tipos que implementam o genéricoIList<T> interface, sistema autônomo o List<T> e ArrayList coleções. Para passar essas coleções sobre o limite de isolamento, você temporariamente convertê-los à IListContract<T> interface. The Demonstra Passo a passo: Coleções de passagem entre hosts e suplementos tópico demonstra como passar coleções.

Para construir o pipeline, o contrato que representa o suplemento deve ser identificado com o AddInContractAttribute atributo.

A próxima etapa no desenvolvimento de pipeline é criar os segmentos de modo de exibição e o adaptador para ambos os lados do pipeline.Esses segmentos fornecem aplicativo host e o suplemento com modos de exibição de seus modelos de objeto respectivos e fornecem os adaptadores que converter esses modos de exibição e para o contrato.

Modos de exibição

exibição de suplemento do host e a exibição do host do add-in são assemblies que contenham interfaces ou classes abstratas que representam seus modos de exibição do Outros e dos tipos que fluem entre eles.Modos de exibição não são dependentes contratos usado para se comunicar entre eles.Modos de exibição também separam o suplemento e o host a partir de outras implementações.Isso permite que os adaptadores e o contrato a ser alterada sem afetar o host ou o suplemento.

Para construir o pipeline, o tipo na exibição de suplemento que o suplemento implementa ou herda é identificado pelo AddInBaseAttribute atributo e é chamado de base de suplemento. A exibição do host não requer um atributo para a capacidade de descoberta, porque a exibição do host é passada para o FindAddIns métodos.

Adaptadores

Os adaptadores add do e do host são assemblies que contêm classes adaptador que são usados para converter entre os modos de exibição e o contrato.O termo “ lado ” refere-se ao lado do pipeline que reside um adaptador.Dependendo da direção da telefonar, o adaptador é um convertendo de um modo de exibição a um contrato ou de um contrato a um modo de exibição.Se você tiver chamadas em ambas as direções (ou seja, as chamadas de host para o suplemento e as chamadas de suplemento para o host), você terá dois adaptadores em cada lado do pipeline.Da mesma forma, há dois tipos de adaptadores:

  • Adaptador do tipo exibição-para-contrato.

    Uma classe em um assembly de adaptador converte um modo de exibição em um contrato.Essa classe implementa o contrato chamando o modo de exibição passado para seu construtor e é empacotada por limite sistema autônomo um contrato.Essa classe deve herdar ContractBase e implemente o contrato.

  • Adaptador de contrato para exibição.

    Uma classe no assembly do adaptador converte um contrato em um modo de exibição.Essa classe implementa ou herda o segmento de modo de conversão, dependendo se o modo de exibição é uma interface ou um tipo de base abstrato e implementa os membros do modo de exibição chamando o contrato é passado para construtor o adaptador do.

  • Para construir o pipeline, você deve identificar a classe do adaptador no lado do suplemento aplicando o AddInAdapterAttribute o atributo e identificar a classe do adaptador do host, aplicando a HostAdapterAttribute atributo.

  • Adaptadores não devem ser públicos.

Consulte também

Conceitos

Requisitos de desenvolvimento de pipeline

Desenvolvimento de pipeline