BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース CoreWCFがAzureストレージ・キュー・バインディングを取得

CoreWCFがAzureストレージ・キュー・バインディングを取得

原文リンク(2024-09-13)

Microsoftは、Azure Storage Queueのバインディングを備えた、CoreWCFサービスライブラリとWCFクライアントライブラリをリリースした。この新しいバインディングにより、開発者はAzure Service Queueを使用して、信頼性が高くスケーラブルなメッセージング・ソリューションを実現できる。また、従来のMicrosoft MSMQ WCFソリューションからAzureクラウドベースのアーキテクチャへのシンプルな移行も可能になる。

Azure Storage Queueは、Azure Storage上に構築されたクラウドベースのキューサービスであり、あらゆるコンポーネントが信頼性の高い非同期でメッセージを送信、保存、受信できるようにする。

CoreWCFのAzure Storage Queueバインディングは、レガシーのMSMQ(Microsoft Message Queuing)バインディングと同様、一方向操作である。つまり、バインディングを介して呼び出されたサービスに対してクライアントは応答を受け付けない。そのため、CoreWCFのサービス・インターフェイスではvoidメソッドしか使用できない。CoreWCFのMSMQサポートはまだプレビュー段階であり、1年以上開発中である。

Azure Storage Queueのサポートには2つのパッケージがあり、1つはクライアントシナリオ用(キューにメッセージを送信する)、もう1つはサーバーシナリオ用(キューからメッセージを読み込んで処理する)である。Azure Storage QueueクライアントライブラリとAzure Identityライブラリは、依存関係として パッケージと一緒にプルされる。Azure SDK for .NET GitHubアカウントに、新しいバインディングの使用サンプルがある。

バインディングはAzure SDK for .NETチームがリリースしたものであり、CoreWCFチームがリリースしたものではない。また、クライアント・ライブラリは、Windows専用の.NET Framework WCFスタックと互換性のある.NETパッケージとしてリリースされている。このパッケージの目的は、MSMQを使用している既存のWCFクライアントを.NETに移行し、MSMQをAzure Queue Storageに置き換えてAzureにサービスをデプロイすることである。

CoreWCFまたはWCFを使用してAzure Storage Queueを呼び出すには、開発者はMicrosoft.WCF.Azure.StorageQueuesプレリリースNuGetパッケージを.NETプロジェクトに追加する必要がある。最初のステップは、Azureストレージキューを呼び出すクライアントを認証することである。デフォルトのメカニズムは、AzureQueueStorageBindingのパラメータレスコンストラクタを使用して、DefaultAzureCredentialプロバイダを活用することである。キューアドレスは、CoreWCFの通常ChannelFactoryのクラスに渡され、呼び出されるサービスの通信チャネルを作成する。

// Create a binding instance to use Azure Queue Storage.// The default client credential type is Default, which uses DefaultAzureCredentialvar aqsBinding = new AzureQueueStorageBinding();// Create a ChannelFactory to using the binding and endpoint address, open it, and create a channelstring queueEndpointString = "https://MYSTORAGEACCOUNT.queue.core.windows.net/QUEUENAME";var factory = new ChannelFactory<IService>(aqsBinding, new EndpointAddress(queueEndpointString));factory.Open();IService channel = factory.CreateChannel();channel.Open();// Invoke the serviceawait channel.SendDataAsync(42);

Azure Storageキューのコンシューマーとして公開されるCoreWCFサービスを作成するには、開発者はMicrosoft.CoreWCF.Azure.StorageQueuesプレリリースNuGetパッケージを使用する必要がある。サービス・バインディングを作成するプロセスは、サービス構成ステップでCoreWCFサービス・コレクションにキュー・トランスポートを追加することから始まる。アプリビルダー構成ステップでは、バインディング自体が構築される。次に、AddServiceEndpointメソッドを使用して、インスタンス化されたバインディングを渡し、キューのアドレスを指定して、サービスをキューに接続する。

public class Startup{  public void ConfigureServices(IServiceCollection services)  {    services.AddServiceModelServices();    services.AddQueueTransport();  }  public void Configure(IApplicationBuilder app, IHostingEnvironment env)  {    app.UseServiceModel(services =>      {        serviceBuilder.AddService <Service>();        var aqsBinding = new AzureQueueStorageBinding();        string queueEndpointString = "https://MYSTORAGEACCOUNT.queue.core.windows.net/QUEUENAME";        serviceBuilder.AddServiceEndpoint <Service, IService> (aqsBinding, queueEndpointString);      });  }}

これらの例ではデフォルトのAzure認証を使用しているが、バインディングライブラリでは、ストレージ共有キーのクレデンシャルSAS(共有アクセス署名)、OAuth token、Azure Storage接続文字列のいずれかを使用できる。これらの設定を指定するために、AzureQueueStorageBindingクラスにSecurity.Transport.ClientCredentialTypeオプションがある。

CoreWCFプロジェクトは、2019年にすでに始まっていたが、 2022年4月に正式にリリースされた。これは、.NETプラットフォーム上でWCFサービスから最も頻繁に使用される機能のサブセットを提供することを目的としている。.NET Standard 2.0と互換性があるため、.NET Framework 4.6.2以上であればそのまま移行できる。主流のWCFバインディングと、KafkaRabbitMQのような他のプロトコルで、HTTPとTCPトランスポートプロトコルをカバーしている。現在のバージョンは1.6.0だ。

CoreWCFのAzure Storage Queueバインディングサポートは、AWSチームがAWS SQS(Simple Queue Service)キューをサポートする同様のパッケージをリリースしてからほぼ1年後のことだ。

作者について

この記事に星をつける

おすすめ度
スタイル

BT