ServiceDescriptionImporter 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
公开一种为 XML Web services 生成客户端代理类的方法。
public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
- 继承
-
ServiceDescriptionImporter
示例
以下示例演示如何使用 ServiceDescriptionImporter 类生成代理客户端代码,该代码调用由 WSDL 文件描述的 XML Web 服务。
#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);
}
}
}
注解
XML Web 服务的接口通常由 Web 服务描述语言 (WSDL) 文件描述。 例如,若要使用 在 http://localhost/service.asmx
公开 ASP.NET 获取 Web 服务的 WSDL 说明,只需导航到 http://localhost/service.asmx?WSDL
。
类 ServiceDescriptionImporter 使你可以轻松地将 WSDL 说明中包含的信息导入 System.CodeDom.CodeCompileUnit 对象。 通过调整 参数的值 Style ,可以指示 ServiceDescriptionImporter 实例生成一个客户端代理类,该类通过透明调用来提供 Web 服务的功能,或者生成一个抽象类来封装 Web 服务的功能,而无需实现它。
然后,可以直接调用生成的 CodeCompileUnit 对象中的代码,也可以以所选语言导出。
构造函数
ServiceDescriptionImporter() |
初始化 ServiceDescriptionImporter 类的新实例。 |
属性
CodeGenerationOptions |
获取或设置用于代码生成的各种选项。 |
CodeGenerator |
获取或设置服务说明导入程序使用的代码生成器。 |
ProtocolName |
获取或设置用于访问所说明的 XML Web services 的协议。 |
Schemas |
获取由其 XmlSchemas 属性使用的 ServiceDescriptions。 |
ServiceDescriptions |
获取要导入的 ServiceDescription 实例的集合。 |
Style |
获取或设置一个值,该值确定导入 ServiceDescriptions 值时所生成的代码的样式(客户端或服务器)。 |
方法
AddServiceDescription(ServiceDescription, String, String) |
将指定的 ServiceDescription 添加到要导入的 ServiceDescriptions 值的集合中。 |
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions) |
编译 Web 引用的集合,以生成客户端代理或服务器存根。 |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
Import(CodeNamespace, CodeCompileUnit) |
导入指定的 ServiceDescriptions 值,并将按照 Style 属性的指定来生成代码。 |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |