ServiceDescriptionImporter Classe

Definizione

Espone un mezzo 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 della ServiceDescriptionImporter 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 viene 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 StyleServiceDescriptionImporter di generare una classe proxy client che fornisce la funzionalità del 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 nel linguaggio preferito.

Importante

Non usare ServiceDescriptionImporter con input non attendibile. L'importazione di un ServiceDescription da origini non attendibili può comportare la generazione di codice che accede a URL arbitrari o crea istanze di tipi di .NET arbitrari, causando potenzialmente vulnerabilità di sicurezza.

Costruttori

Nome Descrizione
ServiceDescriptionImporter()

Inizializza una nuova istanza della classe ServiceDescriptionImporter.

Proprietà

Nome Descrizione
CodeGenerationOptions

Ottiene o imposta varie opzioni per la generazione di codice.

CodeGenerator

Ottiene o imposta il generatore di 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 ServiceDescriptions proprietà .

ServiceDescriptions

Ottiene la raccolta di ServiceDescription istanze da importare.

Style

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

Metodi

Nome Descrizione
AddServiceDescription(ServiceDescription, String, String)

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

Equals(Object)

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

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

Compila una raccolta di riferimenti Web per produrre un proxy client o uno stub del server.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
Import(CodeNamespace, CodeCompileUnit)

Importa i valori specificati ServiceDescriptions , che genera codice come specificato dalla Style proprietà .

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a