Język

ServiceDescriptionImporter Klasa

Definicja

Uwidacznia metodę generowania klas serwera proxy klienta dla usług sieci Web XML.

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

Przykłady

Poniższy przykład ilustruje użycie ServiceDescriptionImporter klasy do generowania kodu klienta proxy, który wywołuje usługę sieci Web XML opisaną przez plik 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); 
    }
}
}

Uwagi

Interfejs usługi sieci Web XML jest zwykle opisywany przez plik WSDL (Web Services Description Language). Aby na przykład uzyskać opis WSDL usługi sieci Web przy użyciu ASP.NET uwidocznionych w http://localhost/service.asmx, po prostu przejdź do http://localhost/service.asmx?WSDL.

Klasa ServiceDescriptionImporter umożliwia łatwe importowanie informacji zawartych w opisie System.CodeDom.CodeCompileUnit WSDL do obiektu. Dostosowując wartość parametru Style , można poinstruować ServiceDescriptionImporter wystąpienie, aby wygenerować klasę serwera proxy klienta, która zapewnia funkcjonalność usługi sieci Web przez przezroczyste wywołanie go lub wygenerowanie klasy abstrakcyjnej, która hermetyzuje funkcjonalność usługi sieci Web bez jej zaimplementowania.

Kod w wynikowym CodeCompileUnit obiekcie może być wywoływany bezpośrednio lub eksportowany w wybranym języku.

Ważna

Nie używaj ServiceDescriptionImporter z niezaufanymi danymi wejściowymi. Importowanie ServiceDescription z niezaufanych źródeł może spowodować wygenerowanie kodu, które uzyskuje dostęp do dowolnych adresów URL lub tworzy wystąpienia dowolnych typów .NET, co potencjalnie prowadzi do luk w zabezpieczeniach.

Konstruktory

Nazwa Opis
ServiceDescriptionImporter()

Inicjuje nowe wystąpienie klasy ServiceDescriptionImporter.

Właściwości

Nazwa Opis
CodeGenerationOptions

Pobiera lub ustawia różne opcje generowania kodu.

CodeGenerator

Pobiera lub ustawia generator kodu używany przez importera opisu usługi.

ProtocolName

Pobiera lub ustawia protokół używany do uzyskiwania dostępu do opisanych usług sieci Web XML.

Schemas

Pobiera wartość XmlSchemas używaną ServiceDescriptions przez właściwość .

ServiceDescriptions

Pobiera kolekcję wystąpień ServiceDescription do zaimportowania.

Style

Pobiera lub ustawia wartość, która określa styl kodu (klienta lub serwera), który jest generowany podczas importowania ServiceDescriptions wartości.

Metody

Nazwa Opis
AddServiceDescription(ServiceDescription, String, String)

Dodaje określony ServiceDescription element do kolekcji ServiceDescriptions wartości do zaimportowania.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(Odziedziczone po Object)
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions)

Kompiluje kolekcję odwołań internetowych w celu utworzenia serwera proxy klienta lub wycinku serwera.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
Import(CodeNamespace, CodeCompileUnit)

Importuje określone ServiceDescriptions wartości, które generują kod określony przez Style właściwość .

MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy