.NET Core 用 WCF dotnet-svcutil ツール
Windows Communication Foundation (WCF) dotnet-svcutil ツールは、ネットワークの場所にある Web サービスから、あるいは WSDL ファイルからメタデータを取得し、Web サービス操作にアクセスするクライアント プロキシ メソッドを含んだ WCF クラスを生成する .NET ツールです。
.NET Framework プロジェクトの ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe) と同様に、dotnet-svcutil は、.NET Core プロジェクトおよび .NET Standard プロジェクトと互換性のある Web サービス参照を生成するためのコマンドライン ツールです。
dotnet-svcutil ツールは、Visual Studio 2017 バージョン 15.5 で最初に用意された Visual Studio 接続済みサービス プロバイダーである、WCF Web Service Reference に対する代わりのオプションです。 dotnet-svcutil ツールは、.NET ツールとして、Linux、macOS、Windows 上でクロスプラットフォームで利用できます。
重要
信頼できるソースのサービスのみを参照してください。 信頼できないソースの参照を追加すると、セキュリティが損なわれる可能性があります。
必須コンポーネント
- .NET Core 2.1 SDK 以降のバージョン
- 任意のコード エディター
作業の開始
次の例では、Web サービス参照を .NET Core Web プロジェクトに追加してサービスを呼び出すために必要な手順について説明します。 HelloSvcutil という名前の .NET Core Web アプリケーションを作成し、次のコントラクトを実装する Web サービスへの参照を追加します。
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
この例では、Web サービスが次のアドレスでホストされると仮定します: http://contoso.com/SayHello.svc
Windows、macOS、または Linux のコマンド ウィンドウから次の手順を実行します。
次の例に示すように、HelloSvcutil という名前のディレクトリをプロジェクト用に作成し、現在のディレクトリに指定します。
mkdir HelloSvcutil cd HelloSvcutil
次に示すように、
dotnet new
コマンドを使用して、このディレクトリに新しい C# Web プロジェクトを作成します。dotnet new web
CLI ツールとして
dotnet-svcutil
NuGet パッケージをインストールします。dotnet tool install --global dotnet-svcutil
次に示すように、dotnet-svcutil コマンドを実行して、Web サービス参照ファイルを生成します。
dotnet-svcutil http://contoso.com/SayHello.svc
生成されたファイルは、HelloSvcutil/ServiceReference/Reference.cs として保存されます。 また、dotnet-svcutil ツールでは、プロキシ コードで必要な適切な WCF パッケージが、パッケージ参照としてプロジェクトに追加されます。
サービス参照の使用
次に示すように、
dotnet restore
コマンドを使用して WCF パッケージを復元します。dotnet restore
使用するクライアント クラスと操作の名前を検索します。
Reference.cs
にはSystem.ServiceModel.ClientBase
を継承するクラスが含まれており、そのメソッドを使用してサービスで操作を呼び出すことができます。 この例では、SayHello サービスの Hello 操作を呼び出します。ServiceReference.SayHelloClient
はクライアント クラスの名前であり、操作の呼び出しに使用できるHelloAsync
という名前のメソッドが含まれます。エディターで
Startup.cs
ファイルを開き、先頭にサービス参照名前空間に対するusing
ディレクティブを追加します。using ServiceReference;
Web サービスを呼び出すように、
Configure
メソッドを編集します。 これを行うには、ClientBase
を継承するクラスのインスタンスを作成し、クライアント オブジェクトでメソッドを呼び出します。public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { var client = new SayHelloClient(); var response = await client.HelloAsync(); await context.Response.WriteAsync(response); }); }
次に示すように、
dotnet run
コマンドを使用してアプリケーションを実行します。dotnet run
Web ブラウザーでコンソールに表示されている URL に移動します (たとえば、
http://localhost:5000
)。
次の出力が表示されます。"Hello dotnet-svcutil!"
dotnet-svcutil
ツールのパラメーターの詳細な説明については、次に示すように、help パラメーターを渡してツールを呼び出してください。
dotnet-svcutil --help
フィードバックと質問
質問やフィードバックがありましたら、GitHub で問題を提起してください。 GitHub の WCF リポジトリで既存の質問や問題を確認することもできます。
リリース ノート
- 既知の問題を含む最新のリリース情報については、リリース ノートのページを参照してください。
情報
.NET