ServiceDescriptionImporter Clase

Definición

Expone un medio de generar clases de proxy cliente para servicios Web XML.

public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
Herencia
ServiceDescriptionImporter

Ejemplos

En el ejemplo siguiente se muestra el uso de la ServiceDescriptionImporter clase para generar código de cliente proxy que llama a un servicio web XML descrito por un archivo 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); 
    }
}
}

Comentarios

Normalmente, la interfaz de un servicio web XML se describe mediante un archivo WSDL (Lenguaje de descripción de servicios web). Por ejemplo, para obtener una descripción WSDL de un servicio web mediante ASP.NET expuesto en http://localhost/service.asmx, simplemente vaya a http://localhost/service.asmx?WSDL.

La ServiceDescriptionImporter clase permite importar fácilmente la información contenida en una descripción de WSDL en un System.CodeDom.CodeCompileUnit objeto . Al ajustar el valor del Style parámetro, puede indicar a una ServiceDescriptionImporter instancia que genere una clase de proxy de cliente que proporcione la funcionalidad del servicio web mediante una llamada transparente o para generar una clase abstracta que encapsula la funcionalidad del servicio web sin implementarlo.

El código del objeto resultante CodeCompileUnit se puede llamar directamente o exportar en el idioma que prefiera.

Constructores

ServiceDescriptionImporter()

Inicializa una nueva instancia de la clase ServiceDescriptionImporter.

Propiedades

CodeGenerationOptions

Obtiene o establece las distintas opciones para la generación de código.

CodeGenerator

Obtiene o establece el generador de código utilizado por el importador de descripción de servicio.

ProtocolName

Obtiene o establece el protocolo utilizado para tener acceso a los servicios Web XML descritos.

Schemas

Obtiene el objeto XmlSchemas utilizado por la propiedad ServiceDescriptions.

ServiceDescriptions

Obtiene la colección de instancias de ServiceDescription que se van a importar.

Style

Obtiene o establece un valor que determina el estilo de código (cliente o servidor) que se genera cuando se importan los valores de ServiceDescriptions.

Métodos

AddServiceDescription(ServiceDescription, String, String)

Agrega el objeto ServiceDescription especificado a la colección de valores ServiceDescriptions que se van a importar.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions)

Compila una colección de referencias Web para generar un proxy cliente o un código auxiliar del servidor.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
Import(CodeNamespace, CodeCompileUnit)

Importa los valores ServiceDescriptions especificados, que generan el código tal como se especifica en la propiedad Style.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a