0

Azure用に開発されたプロジェクトをクラウドから(たとえばWindows Serverコンピューターに)展開可能にするために必要な手順は何ですか?私のプロジェクトには2つのワーカーの役割があります。1つは基本的にデータマイナーであり、もう1つは(自己ホスト型の)WCFサービスをホストします。Azure Table Service、Queue、BlobServiceを使用します。これらの要素はクラウドからどのように変換されますか?SQLデータベースまたは多分NoSqlアプローチ?基礎となる実装を変更することなく(つまり、DataServiceContextクラスをほとんど変更せずに)、実際に利用可能なリソースを使用できるように、抽象化のレベルを追加するにはどうすればよいですか?

編集1:

ワーカーの役割<=>Windowsサービス

Azureテーブルサービス<=>EntityFramework+ WCFデータサービス?

4

2 に答える 2

2

残念ながら、かなりの手直しなしではそれをやってのけることはできません。Web /ワーカーの役割は移動しやすいかもしれませんが、大きな問題はAzureストレージの使用です。ストレージを抽象化し、適切なストレージに注入することはできますが(明示的にかどうかに関係なく)、Azureストレージ固有の設計上の考慮事項を行った可能性があります。つまり、実装したものはAzureではうまく機能する可能性がありますが、オンプレミスではうまく機能しない可能性があります。たとえば、BLOBストレージには、ページBLOBや冗長性など、従来のディスクベースのストレージでは利用できない多くの機能があります。

しばらく前に、AzureストレージとのAPI互換性を備えたオンプレミスストレージ製品がないことをどうするかを具体的に尋ねるメールをScottGuに送信しました。彼は、APIの互換性は彼らが取り組んでいるものであり、今年の後半(昨年2012年)に現れるだろうと答えました。昨年プレビューで発表された、オンプレミスで実行されているAzure Webサイト(およびその他のIaaS)を参照していると思います。ストレージとコンピューティングに関しては、まだ何もありません。

同じコードとインフラストラクチャベースからAzureとオンプレミスの両方のアプリケーションを構築しようとしないことをお勧めします。Azureを使い始めたので、オンプレミスの必要性に疑問を投げかけ、根本的な必要性を明らかにしてみてください。それはセキュリティの恐れですか?所有権の感覚?費用?おそらく、実際に何が求められているのかを理解し、Azureアプリケーション内でそれらの懸念に対処することができます。たぶん、Azureで実行することの利点を少し売ることは、書き直すよりも簡単でしょう。結局のところ、アプリケーションを絶対にオンプレミスで実行する必要があるユースケースは多くありません。そうしないと、このクラウドのことをまったく理解できなくなります。

于 2013-02-01T11:29:30.530 に答える
2

私は、同じコードベースでクラウドとローカルの両方にデプロイする必要があるプロジェクトに取り組んでいました。多分私は私の側からいくつかの考えを共有することができます。

設計時に注意する必要のある多くの側面があります。主に、クラウドとローカルの間の異なる環境に焦点を当て、システムにいくつかの仮想化レイヤーを構築します。構成を切り替えることができるようにします。

  1. ファイルシステム:ファイルの保存、削除、取得のメソッドを含む仮想ファイル操作インターフェイスがありました。そして、localとblobの2つの実装クラスがありました。

  2. データベース:これは、SQLServerとSQLAzureをサポートする単純なSQLヘルパークラスを介して簡単に実行できます。接続文字列を変更する必要があります。ただし、SQL Serverを使用する場合は、クロスデータベースクエリがないなどのSQLAzureの制限にも従います。

  3. 構成:一部の構成をweb.configからキャッシュを有効にしてデータベースに移動しました。特に、これらの構成要素は実行時に変更される可能性があります。これは、クラウドにデプロイする場合に発生します。新しいパッケージをプッシュしない限り、web.configを変更することはできません。

  4. ホスティング:私たちのプロジェクトはWCFサービスであるため、基盤となるサービスの実装のためにいくつかのホスティングプロジェクトを作成しました。それらのいくつかは、Windowsサービスホスティング、コンソールアプリホスティング、IISホスティングなどのローカル展開用です。また、クラウド上でサービスをホストするために使用できるWebロールとWrokerロールもあります。ホスティングプロジェクトは非常にシンプルで、すべて同じサービス実装クラスを使用しています。

  5. ログ:ファイルシステムレイヤーを活用して、ログをローカルファイル(ローカルデプロイ)またはテーブルサービス(クラウドデプロイ)に保存できるようにしました。

  6. キャッシュ:ServiceStackからコードを学習し、Windows ServerAppFabricCacheとWindowsAzureSharedCahceのキャッシュインターフェイスといくつかの実装を構築しました。構成により切り替えることができます。そして次のバージョンでは、CloudServiceCacheの別の実装クラスを実装する予定です。

  7. ステートレス:アプリケーション、特にサービスの実装がステートレスであることを確認しました。これは、クラウド展開だけでなくローカルでも非常に重要です。

お役に立てれば。

于 2013-02-02T01:18:24.180 に答える