書籍転載
|
|
|
●[5]Azure AppFabric/WCFサービスの公開情報を定義する
Azure AppFabricサービスバスを介してWCFサービスを公開するため、アプリケーション構成ファイル(Web.config)に対して、Azure AppFabricの基本情報、そして、WCFサービスを公開するための定義情報を追加します。
デフォルトで<appSettings>/<system.serviceModel>要素は既に記述されていますので、リスト6-34の要領で編集してください。
|
|
リスト6-34 Azure AppFabric/WCFサービスの定義情報(Web.config) |
<appSettings>要素で定義しているのは、ServiceNamespace(サービスの名前空間)、IssuerName(発行者名)、IssuerSecret(シークレットキー)です。いずれもAppFabric管理画面(図6-39)で確認できる情報ですので、自分の登録情報に合わせて適宜編集してください。
<system.serviceModel>−<services>−<service>要素は、WCFサービスの構成情報を表します。属性の意味は、以下の通りです。
<service> サービスの設定 |
バインディングとは、サービスの提供方法のことです。netTcpRelayBindingはプロトコルとしてTCP/IPを利用するバインディングです。その他、WebHttpRelayBinding(RESTfull Webサービス)、WSHttpRelayBinding(Webサービス拡張仕様)、NetOnewayRelayBinding(片方向通信)、NetEventRelayBinding(マルチキャスト通信)などを指定できます。
●[6]サービスを登録する
サービス本体、定義情報を準備できたら、あとはこれをAzure AppFabricに登録するだけです。この手順は、Azure AppFabricを利用する上で、いわば定石とも言える部分ですので、きちんとおさえておきましょう。
|
||
リスト6-35 WCFサービスの登録(上:Global.asax.cs、下:Global.asax.vb) |
複雑に見えるかもしれませんが、サービスバス登録の手続きはごく定型的です。
エンドポイント(URI)を生成する
サービスバスでのエンドポイント(公開する仮想URI)を生成するのは、ServiceBusEnvironmentクラス(Microsoft.ServiceBus名前空間)のCreateServiceUriメソッドの役割です。
|
|
構文 CreateServiceUriメソッド | |
scheme:URIのスキーマ solution:サービスの名前空間 service:サービスパス |
引数schemeは、サービスバスを利用する場合はsbで固定です。引数solutionには先ほどアプリケーション構成ファイルに登録した値を、引数serviceにはサービスを識別するための一意な名前を、それぞれ指定します。
CreateServiceUriメソッドの結果、
sb://wings-project.servicebus.windows.net/BookService |
のような、サービスを特定するための仮想的なURIが生成されます。
エンドポイントの資格情報を定義する
エンドポイントの挙動全般を表すのは、TransportClientEndpointBehaviorクラス(Microsoft.ServiceBus名前空間)です。ここでは、そのCredentialType(認証方法)プロパティ、Credentials(資格情報)プロパティを設定しています。
CredentialTypeプロパティに設定可能な値は、以下の通りです。
設定値 | 概要 |
Saml | SAML(Security Assertion Markup Language*72)による認証 |
SharedSecret | シークレットキーによる認証 |
SimpleWebToken | SWT(Simple Web Token*73)による認証 |
Unauthenticated | 認証を利用しない |
表6-18 認証の方法(TransportClientCredentialType列挙体のメンバ) |
*72 標準化団体OASISによって策定された認証情報交換のためのしくみ。XMLをベースとしており、プロトコルとしてはHTTP、SOAPが利用されます。http://saml.xml.org/ |
*73 Open Web Foundationによって策定された認証方式。テキストフォーマットを利用しており、RESTによるアクセスが基本です。http://oauth-wrap-wg.googlegroups.com/web/SWT-v0.9.5.1.pdf |
ここではSharedSecretを選択していますので、Credentials.SharedSecretプロパティからシークレットキー認証に必要となるIssuerName(発行者)/IssuerSecret(シークレットキー)サブプロパティを設定しておきます。これらの情報は、いずれも手順[5]でアプリケーション構成ファイルに登録したものです。
また、サービスの登録情報(ServiceRegistrySettingsクラス)も用意しておきます。
|
|
構文 ServiceRegistrySettingsクラス(コンストラクタ) | |
type:エンドポイントを公開するか |
引数typeには、エンドポイントを外部に公開するか(Public)、それとも非公開(Private)とするかを指定します。
サービスホストを定義する
WCFサービスのホストを表すのは、ServiceHostクラス(System.ServiceModel名前空間)です。コンストラクタでサービス本体(BookServiceクラス)と、で生成したエンドポイントを関連付けます。
|
|
構文 ServiceHostクラス(コンストラクタ) | |
service:ホストされるサービス base:サービスのエンドポイント |
エンドポイントの挙動を定義する
ホストに登録済みのエンドポイントは、ServiceHostオブジェクトのDescription.Endpointsプロパティで取得できます。では、そのBehaviorsプロパティを介して、エンドポイントの挙動を追加しています。
具体的には、で作成した資格情報と公開情報を、それぞれAddメソッドで追加しています。
ホストをオープンする
以上でサービスバスへの登録は完了ですので、最後にOpenメソッドでサービスを開始します。
●[7]サービスバスへの登録状況を確認する
AppFabricOnPremiseプロジェクトをデバッグ実行し、特にエラーも出ずにインデックスページが表示されることを確認してください*74。この状態で、Azure AppFabricのポータルページ(管理画面)を開きます。
*74 ただし、イントラネット環境などではAzure AppFabricに接続できずにエラーとなる場合もあります。その場合は、Azure AppFabricに接続できる環境でリトライしてください。 |
図6-44:Azure AppFabric管理画面 |
図6-45:サービスバスの登録情報 |
[Service Bus]欄−[Registry URL]からリンク(URL)をクリックすると、図6-45のようなサービス一覧が表示されます。AppFabricOnPremiseプロジェクトで登録したbookservice(すべて小文字)が表示されていれば、サービスの登録は成功しています。
INDEX | ||
[書籍転載]Windows Azure 実践クラウド・プログラミング for C#/Visual Basic/PHP | ||
Windows Azure Platform AppFabricによるオンプレミス−クラウド連携 | ||
1.サービスの実装と公開(オンプレミス環境)(1) | ||
2.サービスの実装と公開(オンプレミス環境)(2) | ||
3.Azure AppFabric経由のサービスアクセス(クラウド環境) | ||
「Windows Azure 実践クラウド・プログラミング for C#/Visual Basic/PHP」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|