Azure SDKアーキテクチャ入門


Azure SDKは、言語の選択からAzureサービスを使いやすくするために構築されたライブラリの集まりです.これらのライブラリは、通信可能、診断可能、信頼性の高い、と慣用的に設計されています.このブログでは、Azure SDKによって作られたいくつかの建築的な選択を見ます.これらの新しいライブラリは生産性に焦点を合わせている.このような生産性には様々な形があります.
  • サービスへの生のネットワーク要求を作成すると、リッチ型システムも、コード補完とコンパイル時の型の安全性のような機能を有効にするクライアントライブラリによって提供されます.
  • オプションのパラメータとメソッドオーバーロードのようなサポート機能により、
  • .それは、我々がすべてのサービスオプションを理解することなくサービスを使用し始めることができることを意味する「進歩的な開示」を提供します.我々は、アプリケーションの要求ごとに追加のトピックを学ぶことができます.
  • Azureも、異なるAzureサービスに対して簡素化して、認証するためにそれらを使用するために開発者経験と資格証明タイプを提供します.さらに、この生産性機能に加えて、我々はまた、分散クラウドアプリケーションを構築することができます.分配されると、我々のサービスはネットワークコールを作ることができます.ネットワークコールは失敗しやすい.
    この問題については、Azure SDKアーキテクチャは、顧客の自己診断の問題を支援する機能が含まれています.たとえば、XXXClientオブジェクトを作成するときは、コンストラクタには、URLのエンドポイントが必要です.サービスがその終点で応答しないならば、これをデバッグするのは簡単でなければなりません.URLを使用しているので、クライアントライブラリに渡されます.私たちのXXXClientオブジェクトもログをサポートしていますので、アプリケーションがサービスに対してどのような生のHTTPリクエストをどのようなものにしたかを簡単に捕捉できます.

    XXXClientオブジェクト、パイプライン、およびポリシー


    クライアントライブラリを使用しているときにアプリケーションを呼び出すことができるように、XXXClientオブジェクトを構築します.XXXClientを作成すると、サービスエンドポイントのURLに渡され、サービスといくつかのオプションを使用して認証を行う資格があります.資格情報とオプションはHTTPパイプラインを作成するために使用されます.
    HTTP HTTPパイプラインはHTTPレスポンスとリクエストに振る舞いを追加します.それぞれの動作はリトライポリシーやログポリシーなどのポリシーと呼ばれます.そのため、認証ポリシーがあります.各ポリシーは、HTTPリクエストのクエリパラメータを変更または変更できます.
    続きを読む:Getting Started With Web Apps In Microsoft Azure
    すべてのポリシーオブジェクトがHTTPリクエストを変更または変更するわけではありません.ログ、リトライポリシー、タイムアウト、および応答ペイロードのダウンロードなどの操作を実行することによって、いくつかのポリシーは単に要求または応答の流れに影響を与えます.
    それぞれのポリシーが要求を変更し、変更された要求を他のポリシーに転送するので、ポリシーの順序が重要です.たとえば、XXXClientのメソッドとリトライポリシーとの間のポリシーが1回の論理サービス操作ごとに実行されます.一方、リトライポリシーとトランスポートポリシーの間のポリシーは、物理的なネットワーク操作に1回ずつ実行される.
    クライアントサイドキャッシング、サーキットブレーカー、モッキング、フォールトインジェクション、および大いに多くのようなものに対して、我々自身のポリシーを実装することができます

    スレッドの安全性と性能


    Azure SDKの目的は、単一のXXXClientオブジェクトがデータ破損なしで同時に複数のスレッドで使用できることを保証することです.パイプラインは変更不能である.
    Azure SDKSのポリシータイプはすべて不変です.つまり、それぞれのポリシーオブジェクトが指定されたリトライ、ログ、およびオプションを使用して構築されると、ポリシーオブジェクトの状態は変更不可能です.別のスレッドが同じリトライポリシーを使用しようとしている間は、1つのスレッドがリトライポリシーのオプションを変更することは不可能です.
    複数のXXXClientオブジェクトは、パイプラインとそのポリシーが変更不能なので、メモリとシステムリソースを保存するために単一のパイプラインを共有できます.ポリシーオブジェクトは変更不能なので、複数のスレッドで同時にロックを行わずに同じパイプラインオブジェクトを使用できます.したがって、我々のパイプラインは、我々のアプリケーションのためのスケーラビリティと驚異的なパフォーマンスを提供します.
    しかし、パイプラインやポリシーが変更不能なので、アプリケーションが再試行ポリシーオプション、異なる資格情報型などのような異なる動作をするネットワーク要求を作成したい場合は、コードは必要な資格情報とオプションを指定する新しいXXXClientオブジェクトを作成する必要があります.さて、新しいオブジェクトを使用するコードは、新しい目的の動作を取得し、元のオブジェクトを使用して同じ古い動作を体験します.

    認証ポリシー


    認証ポリシーは変更可能です.認証ポリシーは三つあります.
    基本認証:基本認証の使用
  • バックエンドサービスで認証します.
  • クライアント証明書による
  • 認証:我々がバックエンドサービスで認証することができるクライアント証明書を使用すること.
  • マネージアイデンティティを認証します.API管理サービスの場合、マネージアイデンティティで認証します.
  • 基本認証


    基本認証を使用してバックエンドサービスで認証する認証基本タグポリシーを使用します.このポリシーはHTTP認証ヘッダーを設定します.
    <authentication-basic username="">
    </authentication-basic>
    
    認証基本がルート要素であり、ユーザ名とパスワードが必要な属性です.

    クライアント証明書付き認証


    クライアント証明書を使用してバックエンドサービスで認証する認証証明書タグポリシーを使用します.証明書は、その指紋によって識別され、API管理にインストールする必要があります.
    <authentication-certificate thumbprint="">
    </authentication-certificate>
    
    サムプリントと証明書IDが起因するところでは、どちらの指紋も証明書IDが必要です.
    Body属性を使用して、バイト配列で証明書を取得するためのプロパティも設定できます.
    専用チームからHire .Net Developerをお探しですか?今すぐ連絡.

    マネージアイデンティティで認証する


    マネージアイデンティティを使用して、バックエンドサービスで認証する認証マネージIDタグポリシーを使用します.指定されたリソースにアクセスするためにAzure Active Directoryからアクセストークンを取得するには、このポリシーは基本的にマネージIDを使用します.トークンを正常に取得した後、ポリシーは、Bearerスキームを使用してトークンの値を承認ヘッダーに設定します.
    <authentication-managed-identity client-id="client Id of user-assigned identity" ignore-error="true|false" output-token-variable-name="token-variable" resource="resource">
    </authentication-managed-identity>
    

    結論
    このブログでは、Azure SDKアーキテクチャとそのポリシーの仕組みを見てきました.Azure SDKのアーキテクチャの主な目標は、Azureサービスを消費しながら生産性に焦点を当てることです.Azureサービスはまた、高性能、低リソースの消費を確保し、我々のアプリのスケーラビリティ.このアーキテクチャは、スレッドを安全かつ動的に更新資格認定書を我々のアプリの任意のダウンタイムを必要とせずに可能です.