ServiceDescriptionImporter Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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) |