ServiceDescriptionImporter Klas

Definitie

Maakt een middel beschikbaar voor het genereren van clientproxyklassen voor XML-webservices.

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

Voorbeelden

In het volgende voorbeeld ziet u het gebruik van de ServiceDescriptionImporter klasse om proxyclientcode te genereren die een XML-webservice aanroept die wordt beschreven door een WSDL-bestand.

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

Opmerkingen

De interface voor een XML-webservice wordt doorgaans beschreven door een WSDL-bestand (Web Services Description Language). Als u bijvoorbeeld een WSDL-beschrijving van een webservice wilt verkrijgen met behulp van ASP.NET weergegeven op http://localhost/service.asmx, navigeert u naar http://localhost/service.asmx?WSDL.

Met ServiceDescriptionImporter de klasse kunt u eenvoudig de informatie in een WSDL-beschrijving importeren in een System.CodeDom.CodeCompileUnit object. Door de waarde van de Style parameter aan te passen, kunt u een ServiceDescriptionImporter exemplaar instrueren om een clientproxyklasse te genereren die de functionaliteit van de webservice biedt door deze transparant aan te roepen of om een abstracte klasse te genereren die de functionaliteit van de webservice inkapselt zonder deze te implementeren.

De code in het resulterende CodeCompileUnit object kan vervolgens rechtstreeks worden aangeroepen of geëxporteerd in de taal van uw keuze.

Important

Niet gebruiken ServiceDescriptionImporter met niet-vertrouwde invoer. Als u een ServiceDescription importeert uit niet-vertrouwde bronnen, kan dit leiden tot het genereren van code die toegang heeft tot willekeurige URL's of willekeurige .NET typen instantieert, wat mogelijk leidt tot beveiligingsproblemen.

Constructors

Name Description
ServiceDescriptionImporter()

Initialiseert een nieuw exemplaar van de ServiceDescriptionImporter klasse.

Eigenschappen

Name Description
CodeGenerationOptions

Hiermee kunt u verschillende opties voor het genereren van code ophalen of instellen.

CodeGenerator

Hiermee haalt u de codegenerator op die wordt gebruikt door de importfunctie voor servicebeschrijvingen.

ProtocolName

Hiermee haalt u het protocol op dat wordt gebruikt voor toegang tot de beschreven XML-webservices.

Schemas

Hiermee haalt u het XmlSchemas gebruik op van de ServiceDescriptions eigenschap.

ServiceDescriptions

Hiermee haalt u de verzameling ServiceDescription exemplaren op die moeten worden geïmporteerd.

Style

Hiermee haalt u een waarde op die bepaalt welke codestijl (client of server) wordt gegenereerd wanneer de ServiceDescriptions waarden worden geïmporteerd.

Methoden

Name Description
AddServiceDescription(ServiceDescription, String, String)

Hiermee voegt u de opgegeven ServiceDescription verzameling waarden ServiceDescriptions toe die moeten worden geïmporteerd.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions)

Compileert een verzameling webverwijzingen om een clientproxy of server-stub te produceren.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
Import(CodeNamespace, CodeCompileUnit)

Hiermee importeert u de opgegeven ServiceDescriptions waarden, waarmee code wordt gegenereerd zoals opgegeven door de Style eigenschap.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op