netTcpRelayBindingとazureサービスバスを使用して、サービスをスケーラブルにしようとしています。サーバー側とクライアント側の両方でこのバインディングを使用する必要があります。Microsoft.ServiceBus.dllに実装されているため、この.dllをクライアントに展開する必要があります。ただし、.NETFrameworkのフルプロファイルを要求します。ただし、クライアント側では、.NETFrameworkクライアントプロファイルのみを使用できます。そして、クライアント側にフルプロファイルをインストールすることは悪い考えだと私は絶対に確信しています。回避策はありますか?
3 に答える
Microsoft.ServiceBus.dllに実装されているServiceBusクライアントは、クライアントプロファイルでは使用できないさまざまな機能に依存しています。特に、サービスをホストする機能は、Relaytoの要件であるクライアントプロファイルにはありません。働き。インストールするアプリケーションがクライアントのみの場合は、通常のNetTcpBindingを使用して、次の2つの注意事項を使用してエンドポイントを中継するように通信できます。
a)RelayClientAuthenticationType.Noneを使用してリレーセキュリティをオフにする必要があります(http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.relayclientauthenticationtype.aspxを参照)。または、独自のセキュリティを取得して追加する必要があります。トークン。これはServiceBusアセンブリが行うことであり、そのコードがないと少し複雑になります。そのための公開サンプルはまだないと思います。
b)ChannelFactoryで2つのアドレスを指定する必要があります-EndpointAddressはsb:プレフィックスを使用する必要があり、Via Uriはnet.tcp:プレフィックスを使用する必要があります
クライアントに完全なフレームワークがあることは悪いことではありません。クライアントプロファイルは、「安全でない」ビットを削除するためにサイズが縮小されることはなく、使用頻度の低いビットが削除されます。ロジックは、アプリを配布する人々のためにダウンロードを少なくすることでした。最近は少し冗長です。
ただし、適切な回避策はなく、完全なフレームワークから必要なアセンブリを抽出しようとは考えていません。完全なフレームワークをインストールするだけです。
そもそも、クライアント全体をワークステーションに配置するのは悪い考えだと思わせる理由に興味があります。
まず、フルプロファイルとクライアントプロファイルの違いを理解するために、次の説明を読むことをお勧めします 。Microsoft.NET4.0フルフレームワークとクライアントプロファイルの違い
これに基づいて、ほとんどのWindows Azureコンポーネントは、フルプロファイルの一部であるWeb、WCF、およびその他のサービスのためにフルプロファイルの使用に依存していることを理解できます。これらのライブラリを機能させるには、フルプロファイルを使用する必要があります。