ServiceDescriptionImporter Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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) |