ServiceDescriptionImporter Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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) |