Procedura: usare un moniker di servizio con i contratti per lo scambio di metadati

Dopo aver sviluppato alcuni nuovi servizi WCF, è possibile scegliere di chiamare questi servizi da uno script o da un'applicazione Visual Basic 6.0. Un metodo consiste nel generare un assembly client WCF, registrare l'assembly con COM, installare l'assembly nella GAC e quindi fare riferimento ai tipi COM dal codice Visual Basic. Quando si distribuisce l'applicazione, è necessario distribuire anche l'assembly client WCF. L'utente dovrà quindi registrare l'assembly client WCF con COM e posizionarlo nella cache di assembly globale. L'interoperabilità COM WCF consente anche di eseguire le stesse chiamate al servizio senza basarsi su un assembly client WCF. Il moniker WCF consente di chiamare qualsiasi servizio WCF da qualsiasi linguaggio compatibile con COM (Visual Basic, VBScript, Visual Basic, Applications Edition (VBA) e così via) specificando un URI dell'endpoint Mex (metadata exchange) che il moniker del servizio usa per estrarre informazioni sui tipi per il servizio. In questo argomento viene illustrato come chiamare l'esempio WCF della Guida introduttiva usando un moniker WCF che specifica un endpoint Mex.

Nota

Non viene mai creata un'istanza dei tipi definiti dall'assembly client WCF. e l'assembly viene usato solo per i metadati.

Utilizzo del moniker del servizio con un indirizzo Mex

  1. Compilare l'esempio Introduttivo e usare un browser per passare all'URL (http://localhost/ServiceModelSamples/Service.svc) per assicurarsi che il servizio funzioni.

  2. Creare uno script di Visual Basic o un'applicazione Visual Basic che contiene il codice seguente:

    monString = "service:mexaddress=http://localhost/ServiceModelSamples/Service.svc/MEX"  
    monString = monString + ", address=http://localhost/ServiceModelSamples/Service.svc"  
    monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples"  
    monString = monString + ", binding=WSHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples"  
    
    Set calc = GetObject(monString)  
    MsgBox calc.Add(3, 4)  
    
  3. Eseguire l'applicazione o lo script Visual Basic.

    Nota

    Il servizio che si sta chiamando deve esporre un endpoint Mex affinché il moniker sia in grado di leggere i metadati dal servizio. Per altre informazioni, vedere Procedura: Pubblicare metadati per un servizio tramite un file di configurazione.

    Nota

    Se il formato del moniker non è valido o se il servizio non è disponibile, la chiamata a GetObject restituirà un errore di sintassi non valida. Se si riceve questo errore, verificare che il moniker che si sta usando sia valido e che il servizio sia disponibile.

Vedi anche