ServiceDescriptionImporter Classe

Definizione

Espone un sistema per generare classi proxy client per i servizi Web XML.

public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
Ereditarietà
ServiceDescriptionImporter

Esempio

Nell'esempio seguente viene illustrato l'uso ServiceDescriptionImporter della classe per generare codice client proxy che chiama un servizio Web XML descritto da un file WSDL.

#using <System.Xml.dll>
#using <System.Web.Services.dll>
#using <System.dll>

using namespace System;
using namespace System::Web::Services::Description;
using namespace System::CodeDom;
using namespace System::CodeDom::Compiler;

int main()
{
   // Get a WSDL file describing a service.
   ServiceDescription^ description = ServiceDescription::Read( "service.wsdl" );

   // Initialize a service description importer.
   ServiceDescriptionImporter^ importer = gcnew ServiceDescriptionImporter;
   importer->ProtocolName = "Soap12"; // Use SOAP 1.2.
   importer->AddServiceDescription( description, nullptr, nullptr );

   // Report on the service descriptions.
   Console::WriteLine( "Importing {0} service descriptions with {1} associated schemas.", importer->ServiceDescriptions->Count, importer->Schemas->Count );

   // Generate a proxy client.
   importer->Style = ServiceDescriptionImportStyle::Client;

   // Generate properties to represent primitive values.
   importer->CodeGenerationOptions = System::Xml::Serialization::CodeGenerationOptions::GenerateProperties;

   // Initialize a Code-DOM tree into which we will import the service.
   CodeNamespace^ nmspace = gcnew CodeNamespace;
   CodeCompileUnit^ unit = gcnew CodeCompileUnit;
   unit->Namespaces->Add( nmspace );
   
   // Import the service into the Code-DOM tree. This creates proxy code
   // that uses the service.
   ServiceDescriptionImportWarnings warning = importer->Import(nmspace,unit);
   if ( warning == (ServiceDescriptionImportWarnings)0 )
   {
      // Generate and print the proxy code in C#.
      CodeDomProvider^ provider = CodeDomProvider::CreateProvider( "CSharp" );
      ICodeGenerator^ generator = provider->CreateGenerator();
      generator->GenerateCodeFromCompileUnit( unit, Console::Out, gcnew CodeGeneratorOptions );
   }
   else
   {
      // Print an error message.
      Console::WriteLine( warning );
   }
}
using System;
using System.Web.Services.Description;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Security.Permissions;

public class Import {

    public static void Main() 
    {
        Run();
    }

    [PermissionSetAttribute(SecurityAction.Demand, Name = "Full Trust")]
    public static void Run()
    {
    // Get a WSDL file describing a service.
    ServiceDescription description = ServiceDescription.Read("service.wsdl");

    // Initialize a service description importer.
    ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
    importer.ProtocolName = "Soap12";  // Use SOAP 1.2.
    importer.AddServiceDescription(description,null,null);

    // Report on the service descriptions.
    Console.WriteLine("Importing {0} service descriptions with {1} associated schemas.",
                      importer.ServiceDescriptions.Count, importer.Schemas.Count);

    // Generate a proxy client.
    importer.Style = ServiceDescriptionImportStyle.Client;

    // Generate properties to represent primitive values.
    importer.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;

    // Initialize a Code-DOM tree into which we will import the service.
    CodeNamespace nmspace = new CodeNamespace();
    CodeCompileUnit unit = new CodeCompileUnit();
    unit.Namespaces.Add(nmspace);

    // Import the service into the Code-DOM tree. This creates proxy code
    // that uses the service.
    ServiceDescriptionImportWarnings warning = importer.Import(nmspace,unit);

    if (warning == 0)
    {
        // Generate and print the proxy code in C#.
        CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
        provider.GenerateCodeFromCompileUnit(unit, Console.Out, new CodeGeneratorOptions() );
    }
    else
    {
        // Print an error message.
        Console.WriteLine(warning); 
    }
}
}

Commenti

L'interfaccia di un servizio Web XML è in genere descritta da un file WSDL (Web Services Description Language). Ad esempio, per ottenere una descrizione WSDL di un servizio Web usando ASP.NET esposto in http://localhost/service.asmx, è sufficiente passare a http://localhost/service.asmx?WSDL.

La ServiceDescriptionImporter classe consente di importare facilmente le informazioni contenute in una descrizione WSDL in un System.CodeDom.CodeCompileUnit oggetto. Modificando il valore del parametro, è possibile indicare a un'istanza di generare una ServiceDescriptionImporter classe proxy client che fornisce la funzionalità del Style servizio Web chiamandola in modo trasparente o per generare una classe astratta che incapsula la funzionalità del servizio Web senza implementarla.

Il codice nell'oggetto risultante CodeCompileUnit può quindi essere chiamato direttamente o esportato nella lingua desiderata.

Costruttori

ServiceDescriptionImporter()

Inizializza una nuova istanza della classe ServiceDescriptionImporter.

Proprietà

CodeGenerationOptions

Ottiene o imposta varie opzioni per la generazione del codice.

CodeGenerator

Ottiene o imposta il generatore del codice utilizzato dall'utilità di importazione della descrizione del servizio.

ProtocolName

Ottiene o imposta il protocollo utilizzato per accedere ai servizi Web XML descritti.

Schemas

Ottiene l'oggetto XmlSchemas utilizzato dalla proprietà ServiceDescriptions.

ServiceDescriptions

Ottiene l'insieme delle istanze ServiceDescription da importare.

Style

Ottiene o imposta un valore che determina lo stile di codice (client o server) generato quando vengono importati i valori ServiceDescriptions.

Metodi

AddServiceDescription(ServiceDescription, String, String)

Aggiunge l'oggetto ServiceDescription specificato all'insieme di valori della proprietà ServiceDescriptions da importare.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions)

Compila un insieme di riferimenti Web per produrre un proxy client o un stub server.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Import(CodeNamespace, CodeCompileUnit)

Importa i valori della proprietà ServiceDescriptions specificati, che generano il codice come specificato dalla proprietà Style.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a