Problemi di progettazione avanzata
Poiché le informazioni relative a un tipo remoto sono richieste dal client, risulta spesso più semplice distribuire la libreria dei tipi remoti sul client per utilizzarla come libreria di metadati. In molti casi, tuttavia, è opportuno non consentire a tutti i client l'accesso all'implementazione del tipo. Il problema può essere risolto in vari modi.
Generare un client isolato mediante lo strumento Soapsuds (Soapsuds.exe), come descritto nell'argomento Client isolati. Questa soluzione funziona solo con l'oggetto HttpChannel.
Distribuire sul client un assembly di soli metadati con nome e informazioni sui tipi uguali a quelli dell'assembly del server, quindi disattivare il controllo della versione o lasciare vuote le versioni.
Dichiarare un'interfaccia in una libreria separata e distribuire tale libreria con il client. Pubblicare una classe server che implementi l'interfaccia: il client sarà così in grado di utilizzarla mediante l'acquisizione di un proxy sull'interfaccia implementata.
Nota È necessario che il client chiami il metodo Activator.GetObject per acquisire il proxy. Se si chiama new (New in Visual Basic), verrà generato un errore della fase di compilazione: impossibile creare un'istanza di un'interfaccia.
Generare una classe wrapper remotizzabile per la classe reale. Pubblicare e distribuire la libreria di wrapper, in modo che il client non abbia accesso all'oggetto reale.