ServiceDescriptionImporter Clase

Definición

Expone un medio para generar clases de proxy de 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 de lenguaje de descripción de servicios web (WSDL). 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 puede llamarse directamente o exportarse en el idioma que prefiera.

Importante

No use ServiceDescriptionImporter con la entrada que no es de confianza. La importación de un ServiceDescription desde orígenes que no son de confianza puede dar lugar a la generación de código que accede a direcciones URL arbitrarias o crea instancias de tipos arbitrarios de .NET, lo que puede provocar vulnerabilidades de seguridad.

Constructores

Nombre Description
ServiceDescriptionImporter()

Inicializa una nueva instancia de la clase ServiceDescriptionImporter.

Propiedades

Nombre Description
CodeGenerationOptions

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

CodeGenerator

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

ProtocolName

Obtiene o establece el protocolo utilizado para acceder a los servicios web XML descritos.

Schemas

Obtiene el objeto XmlSchemas utilizado por la ServiceDescriptions propiedad .

ServiceDescriptions

Obtiene la colección de ServiceDescription instancias 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 ServiceDescriptions valores.

Métodos

Nombre Description
AddServiceDescription(ServiceDescription, String, String)

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

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

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

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

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
Import(CodeNamespace, CodeCompileUnit)

Importa los valores especificados ServiceDescriptions , que genera código según lo especificado por la Style propiedad .

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a