Freigeben über


ServiceDescriptionImporter Klasse

Definition

Macht eine Methode zum Generieren von Clientproxyklassen für XML-Webdienste verfügbar.

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 veranschaulicht, um Proxyclientcode zu generieren, der einen XML-Webdienst aufruft, der von einer WSDL-Datei beschrieben wird.

#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 mit ASP.NET verfügbar http://localhost/service.asmxzu erhalten, navigieren Sie einfach zu http://localhost/service.asmx?WSDL.

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

Der Code im resultierenden CodeCompileUnit Objekt kann dann direkt aufgerufen oder in die Sprache Ihrer Wahl exportiert werden.

Konstruktoren

ServiceDescriptionImporter()

Initialisiert eine neue Instanz der ServiceDescriptionImporter-Klasse.

Eigenschaften

CodeGenerationOptions

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

CodeGenerator

Ruft den vom Dienstbeschreibungsimporter verwendeten Code-Generator auf oder legt diesen fest.

ProtocolName

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

Schemas

Ruft die von der XmlSchemas-Eigenschaft verwendeten ServiceDescriptions ab.

ServiceDescriptions

Ruft die Auflistung zu importierender ServiceDescription-Instanzen ab.

Style

Ruft einen Wert ab, der den Typ des beim Import von ServiceDescriptions-Werten generierten Codes (Client oder Server) bestimmt, oder legt diesen fest.

Methoden

AddServiceDescription(ServiceDescription, String, String)

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

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

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

Kompiliert eine Auflistung der Webverweise, um einen Clientproxy oder einen Serverstub zu erzeugen.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
Import(CodeNamespace, CodeCompileUnit)

Importiert die angegebenen ServiceDescriptions-Werte, die Code generieren wie von der Style-Eigenschaft angegeben.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)

Gilt für