Compartilhar via


Informação de Versão In Remoting

Sistema de Interação Remota foi desenvolvido para trabalhar com conjuntos de módulos (assemblies) de nome de alta segurança. When Names STRONG are used with arquitetura de comunicação remota, the seguinte Basic Regras aplicar:

Esta seção descreve como essas regras afetam referências de objeto e os modelos de ativação diferente usados no sistema de interação remota.

Objetos de servidor-ativado

The servidor Controls which versão of a tipo is activated When a cliente connects to a Server-activated (or < wellknown >) Objeto. IF no informações versão is provided when the serviço is configured, the most Recente versão of the assembly is used when the objeto is activated. For exemplo, If You have Two assemblies, MyHello versão 1.0.0.0 and versão 2.0.0.0, MyHello the objeto conhecido is activated Using the assembly versão 2 IF no Informação de Versão is provided. It is Important to Anotação that this versão is used irrespective of the versão relacionado when the cliente was compilado.

O serviço pode ser configurado para usar uma versão específica de um conjunto de módulos (assembly). Por exemplo, o arquivo de configuração a seguir mostra como especificar uma versão. Note that if an assembly is in the cache global de assemblies, You Must especificar informações tipo All, including informações cultura and the Público chave. Os exemplos de configuração a seguir omitir as informações de nome de alta segurança para se concentrar em versão.

<configuration>
<system.runtime.remoting>
   <application name="RemotingHello">
      <lifetime 
         leaseTime="20ms" 
         sponsorshipTimeOut="20ms"
         renewOnCallTime="20ms" 
      />
      <service>
         <wellknown 
            mode="SingleCall" 
            type="Hello.HelloService,MyHello,Version=1.0.0.0,<strong name omitted>"
            objectUri="HelloService.soap" 
         />
         <activated 
            type="Hello.AddService, MyHello"
         />
      </service>
      <channels>
         <channel 
            port="8000"
            ref="tcp"
         >
         </channel>
      </channels>
   </application>
</system.runtime.remoting>
</configuration>

Este arquivo especifica que versão 1.0.0.0 do assembly MyHello deve ser usado para criar objetos para seus clientes. When Mais than versão one of the same objeto is specified at the ponto de extremidade, the last versão specified is used when the objeto is activated. É importante lembrar que alterações significativas entre versões do mesmo objeto podem ter um efeito adverso em clientes. Se um parâmetro método é adicionado ou modificado entre versões, clientes será compilado contra versão 1 Gerar uma Exceção quando usado contra versão 2. Portanto, é recomendável que um Novo versão de um objeto ser hospedado em uma ponto de extremidade diferente quando alterações significativas ocorreram entre versões.

Objetos de cliente-ativado

Quando um cliente ativa um cliente-ativadas (isto é, um < ativado >) objeto, uma chamada de rede imediatamente será enviada ao servidor onde o objeto solicitado está ativado e uma referência de objeto para o objeto é retornada ao cliente. Porque ele direciona a ativação do objeto, o cliente também escolhe a versão do objeto para ser ativado. Por exemplo, versão 1 do HelloService será ativada no servidor se o cliente foi criado contra Versão 1 do objeto, e a versão 2 do HelloService será ativada no servidor se o cliente foi criado contra versão 2.

É importante para Anotação que não é possível especificar o número versão para tipos Client-Activated ao configurar o serviço. Além disso, qualquer informação de versão fornecida para tipos de servidores-ativado não terá efeito em objetos de cliente-ativado, mesmo se ambos os tipos estão no mesmo assembly.

De exemplo, suponha que você tem um client-activated type e Servidor-ativado tipo no mesmo assembly e você cliente1 compilar contra versão 1 e CLIENT2 contra versão 2. Se nenhum informações versão for especificadas para o Servidor - ativado objeto, cliente1 receberá versão 2 do Servidor-ativado objeto e versão 1 do cliente ativado objeto. CLIENT2 will Receive Objects versão 2 for Ambos conhecido and activated Types.

If you Configure the serviço to Use versão 1 of the Assembly for the objeto conhecido, both Clients will Receive versão 1 of the objeto conhecido While cliente 1 receives versão 1 of the tipo activated and cliente 2 receives versão 2 of the tipo activated.

A versão ativada para um cliente não pode ser configurada; a versão que de cliente foi criado contra sempre é usada.

Referências de objeto

The same Rules that aplicar to Servidor-Types activated and Client-Activated aplicar to objeto References as well. For exemplo, when a proxy for a Client-Activated tipo is Passed as a parâmetro From cliente one to another, or from a cliente to the servidor, the informações versão incorporado in the referência a objeto is Passed with IT. Quando o destinatário tenta chamar um método no proxy gerado a partir de referência de objeto, a versão incorporada a referência de objeto tem precedência sobre a versão que de cliente foi criado contra. In the maiúsculas e minúsculas of Objects Server-activated, the servidor dictates the versão that will be used and all clients that Receber an referência a objeto as a parâmetro Communicate with the versão specified when the serviço was configured. Na ausência de qualquer versão, a versão mais recente é ativada no servidor.

Objetos de empacotamento-por-valor

Quando um empacotar - por - valor (MBV) objeto é passado entre Aplicativo o formatador usado domínios, determina se informações versão está incluídas. Objects BinaryFormatter Sempre include the versão, WHILE SoapFormatter Objects ignorar versão informações. This opção can be habilitado or disabled for Ambos Formatters. For exemplo, If the seguinte line is Added to the arquivo de configuração, the SoapFormatter adds versionamento informações When It serializes an Objeto.

<formatter ref="soap" includeVersions="true" />

Consulte também

Conceitos

Configuração de aplicativos remoto

A ativação do cliente

A ativação do servidor

Outros recursos

Visão geral sobre a arquitetura de comunicação remota do .NET Framework