ServiceDescriptionImporter Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 seguinte ilustra a utilização da ServiceDescriptionImporter classe para gerar código proxy cliente que chama um serviço Web XML descrito por um ficheiro 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);
}
}
}
Observações
A interface para um serviço Web XML é tipicamente descrita por um ficheiro Web Services Description Language (WSDL). Por exemplo, para obter uma descrição WSDL de um serviço Web usando ASP.NET exposto em http://localhost/service.asmx, basta navegar até http://localhost/service.asmx?WSDL.
A ServiceDescriptionImporter classe permite-lhe importar facilmente a informação contida numa descrição WSDL para um System.CodeDom.CodeCompileUnit objeto. Ao ajustar o valor do Style parâmetro, pode instruir uma ServiceDescriptionImporter instância a gerar uma classe proxy cliente que forneça a funcionalidade do serviço Web ao chamá-lo de forma transparente ou a gerar uma classe abstrata que encapsule a funcionalidade do serviço Web sem a implementar.
O código no objeto resultante CodeCompileUnit pode então ser chamado diretamente ou exportado na linguagem que preferir.
Importante
Não uses ServiceDescriptionImporter com input não confiável. Importar um ServiceDescription de fontes não confiáveis pode resultar na geração de código que acede a URLs arbitrárias ou instancia tipos de .NET arbitrários, potencialmente levando a vulnerabilidades de segurança.
Construtores
| Name | Description |
|---|---|
| ServiceDescriptionImporter() |
Inicializa uma nova instância da ServiceDescriptionImporter classe. |
Propriedades
| Name | Description |
|---|---|
| CodeGenerationOptions |
Obtém ou definem 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 utilizado para aceder aos serviços Web XML descritos. |
| Schemas |
Fica usado XmlSchemas pela ServiceDescriptions propriedade. |
| ServiceDescriptions |
Obtém a coleção de ServiceDescription instâncias a importar. |
| Style |
Recebe ou define um valor que determina o estilo do código (cliente ou servidor) gerado quando os ServiceDescriptions valores são importados. |
Métodos
| Name | Description |
|---|---|
| AddServiceDescription(ServiceDescription, String, String) |
Adiciona o especificado ServiceDescription à coleção de ServiceDescriptions valores a importar. |
| 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 produzir um proxy de cliente ou um stub de servidor. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| Import(CodeNamespace, CodeCompileUnit) |
Importa os valores especificados ServiceDescriptions , o que gera código conforme especificado pela Style propriedade. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |