Partilhar via


ServiceDescriptionImporter Classe

Definição

Expõe um meio de gerar classes proxy do 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 código de 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, http://localhost/service.asmxbasta 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 para um System.CodeDom.CodeCompileUnit objeto. Ao ajustar 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 para gerar 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.

Construtores

ServiceDescriptionImporter()

Inicializa uma nova instância da classe ServiceDescriptionImporter.

Propriedades

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 de 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 propriedade ServiceDescriptions.

ServiceDescriptions

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

Style

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

Métodos

AddServiceDescription(ServiceDescription, String, String)

Adiciona o ServiceDescription especificado à coleção de valores ServiceDescriptions 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 Web para gerar 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 de ServiceDescriptions especificados, o que gera o código conforme especificado pela propriedade Style.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a