ServiceDescriptionImporter Klasse

Definition

Stellt eine Möglichkeit zum Generieren von Clientproxyklassen für XML-Webdienste zur Verfügung.

public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
Vererbung
ServiceDescriptionImporter

Beispiele

Im folgenden Beispiel wird die Verwendung der ServiceDescriptionImporter Klasse zum Generieren von Proxyclientcode veranschaulicht, der einen von einer WSDL-Datei beschriebenen XML-Webdienst aufruft.

#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); 
    }
}
}

Hinweise

Die Schnittstelle zu einem XML-Webdienst wird in der Regel durch eine WSDL-Datei (Web Services Description Language) beschrieben. Um beispielsweise eine WSDL-Beschreibung eines Webdiensts mithilfe von ASP.NET verfügbar zu erhalten, die unter http://localhost/service.asmx verfügbar gemacht werden, navigieren Sie einfach zu http://localhost/service.asmx?WSDL.

Mit der ServiceDescriptionImporter Klasse können Sie die in einer WSDL-Beschreibung enthaltenen Informationen ganz einfach in ein System.CodeDom.CodeCompileUnit Objekt importieren. Durch Anpassen des Werts des Style Parameters können Sie eine Instanz anweisen, entweder ServiceDescriptionImporter eine Clientproxyklasse zu generieren, die die Funktionalität des Webdiensts bereitstellt, indem Sie ihn transparent aufrufen oder eine abstrakte Klasse generieren, die die Funktionalität des Webdiensts kapselt, ohne ihn zu implementieren.

Der Code im resultierenden CodeCompileUnit Objekt kann dann entweder direkt aufgerufen oder in der von Ihnen gewählten Sprache exportiert werden.

Important

Verwenden ServiceDescriptionImporter Sie nicht mit nicht vertrauenswürdigen Eingaben. Das Importieren eines ServiceDescription aus nicht vertrauenswürdigen Quellen kann zur Codegenerierung führen, die auf beliebige URLs zugreift oder beliebige .NET Typen instanziiert, was potenziell zu Sicherheitsrisiken führt.

Konstruktoren

Name Beschreibung
ServiceDescriptionImporter()

Initialisiert eine neue Instanz der ServiceDescriptionImporter-Klasse.

Eigenschaften

Name Beschreibung
CodeGenerationOptions

Ruft verschiedene Optionen für die Codegenerierung ab oder legt diese fest.

CodeGenerator

Dient zum Abrufen oder Festlegen des Vom Dienstbeschreibungsimporteur verwendeten Codegenerators.

ProtocolName

Ruft ab oder legt das Protokoll fest, das für den Zugriff auf die beschriebenen XML-Webdienste verwendet wird.

Schemas

Ruft die XmlSchemas von der ServiceDescriptions Eigenschaft verwendete ab.

ServiceDescriptions

Ruft die Auflistung der ServiceDescription zu importierenden Instanzen ab.

Style

Dient zum Abrufen oder Festlegen eines Werts, der den Codestil (Client oder Server) bestimmt, der generiert wird, wenn die ServiceDescriptions Werte importiert werden.

Methoden

Name Beschreibung
AddServiceDescription(ServiceDescription, String, String)

Fügt die angegebene ServiceDescription Auflistung der ServiceDescriptions zu importierenden Werte hinzu.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions)

Kompiliert eine Auflistung von Webverweise, um einen Clientproxy oder einen Server-Stub zu erzeugen.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
Import(CodeNamespace, CodeCompileUnit)

Importiert die angegebenen ServiceDescriptions Werte, die Code generiert, wie durch die Style Eigenschaft angegeben.

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: