ServiceDescriptionImporter クラス

定義

XML Web サービスのためのクライアント プロキシ クラスの生成方法を公開します。Exposes a means of generating client proxy classes for XML Web services.

public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
継承
ServiceDescriptionImporter

次の例は、ServiceDescriptionImporter クラスを使用して、WSDL ファイルによって記述された XML Web サービスを呼び出すプロキシクライアントコードを生成する方法を示しています。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 );
   }
}
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) ファイルによって記述されます。The interface to an XML Web service is typically described by a Web Services Description Language (WSDL) file. たとえば、http://localhost/service.asmxで公開されている ASP.NET を使用して Web サービスの WSDL 記述を取得するには、http://localhost/service.asmx?WSDLに移動するだけです。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.

ServiceDescriptionImporter クラスを使用すると、WSDL 説明に含まれている情報を System.CodeDom.CodeCompileUnit オブジェクトに簡単にインポートできます。The ServiceDescriptionImporter class allows you to easily import the information contained in a WSDL description into a System.CodeDom.CodeCompileUnit object. Style パラメーターの値を調整することで、ServiceDescriptionImporter インスタンスに対して透過的にクライアントプロキシクラスを生成するように指示できます。このクラスを使用すると、Web サービスを透過的に呼び出したり、Web サービスの機能を実装せずにカプセル化する抽象クラスを生成したりすることができます。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.

生成された CodeCompileUnit オブジェクト内のコードは、直接呼び出すか、任意の言語でエクスポートできます。The code in the resulting CodeCompileUnit object can then either be called directly or exported in the language of your choice.

コンストラクター

ServiceDescriptionImporter()

ServiceDescriptionImporter クラスの新しいインスタンスを初期化します。Initializes a new instance of the ServiceDescriptionImporter class.

プロパティ

CodeGenerationOptions

コード生成のさまざまなオプションを取得または設定します。Gets or sets various options for code generation.

CodeGenerator

サービスの説明インポーターによって使用されるコード ジェネレーターを取得または設定します。Gets or sets the code generator used by the service description importer.

ProtocolName

記述されている XML Web サービスにアクセスするために使用されるプロトコルを取得または設定します。Gets or sets the protocol used to access the described XML Web services.

Schemas

XmlSchemas プロパティによって使用される ServiceDescriptions を取得します。Gets the XmlSchemas used by the ServiceDescriptions property.

ServiceDescriptions

インポートされる ServiceDescription インスタンスのコレクションを取得します。Gets the collection of ServiceDescription instances to be imported.

Style

ServiceDescriptions 値がインポートされるときに生成されるコードのスタイル (クライアントまたはサーバー) を決定する値を取得または設定します。Gets or sets a value that determines the style of code (client or server) that is generated when the ServiceDescriptions values are imported.

メソッド

AddServiceDescription(ServiceDescription, String, String)

指定した ServiceDescription を、インポートされる ServiceDescriptions 値のコレクションに追加します。Adds the specified ServiceDescription to the collection of ServiceDescriptions values to be imported.

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions)

Web 参照のコレクションをコンパイルして、クライアント プロキシまたはサーバー スタブを作成します。Compiles a collection of Web references to produce a client proxy or a server stub.

GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
Import(CodeNamespace, CodeCompileUnit)

指定した ServiceDescriptions 値をインポートします。これによって、Style プロパティで指定されたとおりにコードを生成します。Imports the specified ServiceDescriptions values, that generates code as specified by the Style property.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

適用対象