ServiceDescriptionImporter Classe

Definição

Expõe um meio de gerar classes proxy de cliente para serviços Web XML.

public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
Herança
ServiceDescriptionImporter

Exemplos

O exemplo a seguir ilustra o uso da ServiceDescriptionImporter classe para gerar o código do cliente proxy que chama um serviço Web XML descrito por um arquivo 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); 
    }
}
}

Comentários

A interface para um serviço Web XML normalmente é descrita por um arquivo WSDL (Linguagem de Descrição dos Serviços Web). Por exemplo, para obter uma descrição WSDL de um serviço Web usando ASP.NET expostos em http://localhost/service.asmx, basta navegar até http://localhost/service.asmx?WSDL.

A ServiceDescriptionImporter classe permite que você importe facilmente as informações contidas em uma descrição do WSDL em um System.CodeDom.CodeCompileUnit objeto. Ajustando o valor do Style parâmetro, você pode instruir uma ServiceDescriptionImporter instância a gerar uma classe proxy de cliente que fornece a funcionalidade do serviço Web chamando-a de forma transparente ou gerando uma classe abstrata que encapsula a funcionalidade do serviço Web sem implementá-la.

O código no objeto resultante CodeCompileUnit pode ser chamado diretamente ou exportado no idioma de sua escolha.

Importante

Não use ServiceDescriptionImporter com entrada não confiável. Importar um ServiceDescription de fontes não confiáveis pode resultar em geração de código que acessa URLs arbitrárias ou instancia tipos de .NET arbitrários, potencialmente levando a vulnerabilidades de segurança.

Construtores

Nome Description
ServiceDescriptionImporter()

Inicializa uma nova instância da classe ServiceDescriptionImporter.

Propriedades

Nome Description
CodeGenerationOptions

Obtém ou define várias opções para geração de código.

CodeGenerator

Obtém ou define o gerador de código usado pelo importador de descrição do serviço.

ProtocolName

Obtém ou define o protocolo usado para acessar os serviços Web XML descritos.

Schemas

Obtém o XmlSchemas usado pela ServiceDescriptions propriedade.

ServiceDescriptions

Obtém a coleção de ServiceDescription instâncias a serem importadas.

Style

Obtém ou define um valor que determina o estilo de código (cliente ou servidor) gerado quando os ServiceDescriptions valores são importados.

Métodos

Nome Description
AddServiceDescription(ServiceDescription, String, String)

Adiciona o especificado ServiceDescription à coleção de ServiceDescriptions valores a serem importados.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

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

Compila uma coleção de referências da Web para produzir um proxy de cliente ou um stub de servidor.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Import(CodeNamespace, CodeCompileUnit)

Importa os valores especificados ServiceDescriptions , que geram código conforme especificado pela Style propriedade.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a