このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
方法:Service Bus にアクセスする REST ベースのサービスを作成する

方法:Service Bus にアクセスする REST ベースのサービスを作成する

更新日: 2015年5月

現在、Service Bus では、REST ベースのサービスとして適合する次のアプリケーションがサポートされています。Web プログラミング モデルに準拠している従来の Service Bus アプリケーション。このスタイルのアプリケーションは、次の基本的な Windows Communication Foundation (WCF) プログラミング モデルを使用します。サービス コントラクトの定義や作成、Service Bus に接続するためのバインドおよびセキュリティ資格情報の使用など。追加された主な内容は、REST ベースの Service Bus アプリケーションは、メンバーに [OperationContract, WebGet] または [OperationContract, WebInvoke] 属性が適用されるサービス コントラクトを使用することです。これらの動作ではインターフェイスを REST インターフェイスとして定義しているため、Service Bus は他の REST スタイル アプリケーションと対話することができます。したがって、アプリケーションには、HTTP スタイルのメッセージを作成できるようにする追加のコードが含まれます。最後に、これらすべてのアプリでは、WebHttpRelayBinding バインドを使用します。詳細については、TechNet の「 「方法:Service Bus を通じて REST ベースの Web サービスを公開する」を参照してください。REST ベースのサービス アプリケーションの例については、「Service Bus REST のチュートリアル」を参照してください。これは WebHttp Service Bus サンプルに基づいたものです。

REST ベースの Service Bus アプリケーションをホストするプロセスは、標準的な Service Bus アプリケーションのホストとよく似ています。主な違いは、コントラクトと構成にあります。実際のホスティング プロセスは基本的に同じです。

  1. Service Bus のサービスの構築」で定義されている標準パターンを使用してサービスを作成します。これには、サービス コントラクトの定義と実装、サービス ホストの構成と実装などが含まれます。

    1. OperationContractAttribute 属性をサービス コントラクトに適用するときは、REST ベースのメンバーを識別する適切な属性を適用してください。詳細については、TechNet の「方法:方法:Service Bus を通じて REST ベースの Web サービスを公開する.

      次のコード例は、インターフェイス メンバーに REST スタイルの GET メンバーとしてタグを設定する方法を示します。

      public interface IImageContract
      {
          [OperationContract, WebGet]
          Stream GetImage();
      }
      
    2. コントラクトを実装するときは、アプリケーションのニーズに応じて、発信 Web 応答に対して適切なコンテンツ タイプ ヘッダーを設定します。

      public ImageService() 
      {
          this.bitmap = Image.FromFile(imageFileName);
      }
      
      public Stream GetImage()
      {
          MemoryStream stream = new MemoryStream();
          this.bitmap.Save(stream, ImageFormat.Jpeg);
      
          stream.Position = 0;
          WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg";
      
          return stream;
      }        
      
      
      
  2. CreateServiceUri メソッドを使用して、サービスのアドレスを作成します。

    string serviceNamespace = “myServiceNamespace”
    Uri address = ServiceBusEnvironment.CreateServiceUri("https", serviceNamespace, "Image");
    
    
  3. WebServiceHost の新しいインスタンスを作成します。

    WebServiceHost host = new WebServiceHost(typeof(ImageService), address);
    

    WebServiceHost クラスは ServiceHost クラスから派生し、WCF の Web プログラミング モデルを補完します。また、REST ベースでのサービスのホストを容易にします。REST ベースでの Service Bus アプリケーションの実装では、ServiceHost の代わりに WebServiceHost を使用することをお勧めします。詳細については、TechNet の「 WCF ドキュメントの WCF REST プログラミング モデルに関するトピックを参照してください。

  4. サービス エンドポイントで使用されるアドレス、バインド、コントラクト ("ABC" とも呼びます) を指定します。

        <services>
          <!-- Application Service -->
          <service name="Microsoft.ServiceBus.Samples.ImageService"
                   behaviorConfiguration="default">
            <endpoint name="RelayEndpoint"
                      contract="Microsoft.ServiceBus.Samples.IImageContract"
                      binding="webHttpRelayBinding"
                      bindingConfiguration="default"
                      behaviorConfiguration="sharedAccessSignatureClientCredentials"
                      address="" />
        </service>
    

    ここで、ABC は App.config ファイルのエンドポイントにリンクされています。アプリケーションの構成に関する詳細情報「Service Bus に登録する WCF サービスの構成」を参照してください。

    REST ベースの Service Bus アプリケーションのサービス エンドポイントで使用するバインドは、WebHttpRelayBinding だけです。

  5. 必要に応じて、クライアントの認証を無効にします。

    
        <bindings>
          <!-- Application Binding -->
          <webHttpRelayBinding>
            <binding name="default">
                 <security relayClientAuthenticationType="None" />
            </binding>
          </webHttpRelayBinding>
        </bindings>
    
    

    既定では、WebHttpRelayBinding バインドにはクライアントの認証が必要です。この手順は、クライアントが資格情報を提示する必要がないよう (ブラウザーを使用する場合など)、App.config ファイルの <binding> 要素でこれを無効にする方法を示しています。Service Bus での認証の詳細情報「Service Bus 接続のセキュリティ保護と認証」を参照してください。

  6. アプリケーションのセキュリティを定義します。

        <behaviors>
          <endpointBehaviors>
            <behavior name="sharedAccessSignatureClientCredentials">
              <transportClientEndpointBehavior>
                <tokenProvider>
                  <sharedAccessSignature keyName=”RootManageSharedAccessKey” key="**key**" />
                </tokenProvider>
              </transportClientEndpointBehavior>
            </behavior>
          </endpointBehaviors>
        </behaviors>
    

    この例では、セキュリティは App.config ファイルに定義されています。セキュリティの詳細情報「Service Bus 接続のセキュリティ保護と認証」を参照してください。

  7. サービスを開いて WebServiceHost.Open を呼び出します。

    host.Open()
    
  8. 終了したら WebServiceHost.Close を使用してホストを終了します。

    host.Close();
    

表示:
© 2015 Microsoft