1

私はいくつかのサブ Web サイトを持っていますが、それらは基本的にパワーポイント プレゼンテーションの HTML バージョンです。ファイルは同じドメインから取得する必要があるため、親アプリケーションのすべての Azure Web ロールにこれらのファイルをインストールする必要があります (SSL 環境では依存するクロス フレーム操作が行われます)。

それらをプロジェクト ファイルに追加してアップロードするだけですが、これでは拡張できません。これらのパッケージは 5 MB を超える可能性があり、最終的には多数のパッケージが存在することになります。

ロールの起動時に S3 または Azure Blob からファイルをプルし、更新時に手動でトリガーすることについて、どのように考えることができますか?

オンデマンドの場合、親アプリケーションは c# MVC アプリであるため、そのフレームワーク内のあらゆるものを使用してジョブをトリガーできます。

4

2 に答える 2

4

最初に: サイトを Azure で実行している場合は、(AWS 側の) エグレス コストと待機時間の両方を回避するために、Azure BLOB と Amazon S3 ストレージの比較を検討する必要があります。

現在: ストレージからコンテンツを取得する限り、(既に見たように) 展開パッケージがかなり大きくなるため、これはかなり一般的なパターンです。さらに、パッケージを再バンドル/展開する必要があるため、単一のファイルを更新するのは簡単ではありません。

Web ロールにはOnStart()、インスタンスがロード バランサーに追加される前にトリガーされるイベントがあります。これはおそらく、コンテンツ ダウンロード コードを配置するのに最適な場所です (または、ダウンロードを実行する init アプリまたはスクリプトをトリガーすることにより、スタートアップ スクリプト内に配置します)。C# では、 への参照を取得すると、BLOB からコンテンツCloudBlockBlobを実行DownloadToFile()またはDownloadToFileAsync()取得して、ローカル Web アプリのコンテンツ ディレクトリに格納できます。他にも多くの方法があります-例としてファイルダウンロードのものを呼び出すだけです.

自動更新に関する限り: blob-watcher の概念はありません。更新を認識するために何かを実装する必要があります。おそらく、各インスタンスがこのトピックにサブスクライブし、更新に関するメッセージをリッスンする管理トピックに関する Service Bus メッセージでしょうか? 次に、新しいコンテンツをプッシュするたびに、コンテンツを識別するトピックにメッセージをプッシュできます (おそらくサブ Web サイト名を使用)。実行中に、各 Web ロール インスタンスでリスナーを開始することもできますOnStart()

于 2013-11-02T17:06:18.593 に答える