ServiceDescriptionImporter Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Exponerar ett sätt att generera klientproxyklasser för XML-webbtjänster.
public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
- Arv
-
ServiceDescriptionImporter
Exempel
I följande exempel visas hur klassen används ServiceDescriptionImporter för att generera proxyklientkod som anropar en XML-webbtjänst som beskrivs av en WSDL-fil.
#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);
}
}
}
Kommentarer
Gränssnittet till en XML-webbtjänst beskrivs vanligtvis av en WSDL-fil (Web Services Description Language). Om du till exempel vill hämta en WSDL-beskrivning av en webbtjänst med ASP.NET som exponeras på http://localhost/service.asmx navigerar du helt enkelt till http://localhost/service.asmx?WSDL.
Med ServiceDescriptionImporter klassen kan du enkelt importera informationen i en WSDL-beskrivning till ett System.CodeDom.CodeCompileUnit objekt. Genom att justera värdet för parametern Style kan du instruera en ServiceDescriptionImporter instans att antingen generera en klientproxyklass som tillhandahåller webbtjänstens funktioner genom att transparent anropa den eller generera en abstrakt klass som kapslar in webbtjänstens funktioner utan att implementera den.
Koden i det resulterande CodeCompileUnit objektet kan sedan antingen anropas direkt eller exporteras på valfritt språk.
Important
Använd inte ServiceDescriptionImporter med ej betrodda indata. Om du importerar en ServiceDescription från ej betrodda källor kan det resultera i kodgenerering som får åtkomst till godtyckliga URL:er eller instansierar godtyckliga .NET typer, vilket kan leda till säkerhetsrisker.
Konstruktorer
| Name | Description |
|---|---|
| ServiceDescriptionImporter() |
Initierar en ny instans av ServiceDescriptionImporter klassen. |
Egenskaper
| Name | Description |
|---|---|
| CodeGenerationOptions |
Hämtar eller anger olika alternativ för kodgenerering. |
| CodeGenerator |
Hämtar eller anger kodgeneratorn som används av importören för tjänstbeskrivning. |
| ProtocolName |
Hämtar eller anger det protokoll som används för att komma åt de beskrivna XML-webbtjänsterna. |
| Schemas |
Hämtar den XmlSchemas som används av ServiceDescriptions egenskapen. |
| ServiceDescriptions |
Hämtar samlingen med ServiceDescription instanser som ska importeras. |
| Style |
Hämtar eller anger ett värde som avgör vilken typ av kod (klient eller server) som genereras när ServiceDescriptions värdena importeras. |
Metoder
| Name | Description |
|---|---|
| AddServiceDescription(ServiceDescription, String, String) |
Lägger till den angivna ServiceDescription i den samling ServiceDescriptions värden som ska importeras. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions) |
Kompilerar en samling webbreferenser för att skapa en klientproxy eller en server-stub. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| Import(CodeNamespace, CodeCompileUnit) |
Importerar de angivna ServiceDescriptions värdena som genererar kod som anges av egenskapen Style . |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |