ServiceDescriptionImporter Class
Assembly: System.Web.Services (in system.web.services.dll)
The interface to an XML Web service is typically described by a Web Services Description Language (WSDL) file. For example, to obtain a WSDL description of a Web service using ASP.NET exposed at http://localhost/service.asmx, simply navigate to http://localhost/service.asmx?WSDL.
The ServiceDescriptionImporter class allows you to easily import the information contained in a WSDL description into a System.CodeDom.CodeCompileUnit object. By adjusting the value of the Style parameter, you can instruct a ServiceDescriptionImporter instance either to generate a client proxy class that provides the functionality of the Web service by transparently calling it or to generate an abstract class that encapsulates the functionality of the Web service without implementing it.
The code in the resulting CodeCompileUnit object can then either be called directly or exported in the language of your choice.
The following example illustrates the use of the ServiceDescriptionImporter class to generate proxy client code that calls an XML Web service described by a WSDL file.
#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 ); } }
Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.