4

変更を最小限に抑えて、クラウド サーバーまたは専用 (または VPS) サーバーのいずれかに展開できる汎用性の高いアーキテクチャはありますか? 明らかに構成の変更がありますが、アプリの残りの部分は一貫したままにして、1 つの保守可能なコードベースを維持したいと考えています。

アプリは ASP.NET および/または ASP.MVC になります。私の開発環境は VS 2010 です。クラウドは Azure かもしれませんし、そうでないかもしれません。専用またはVPSはWin Server 2008でしょう。おそらく。

一般向けの Web サイトではありません。私が考えている Web アプリは、クライアントごとに個別に展開されます。小規模なクライアントもあれば、Web ではなくローカル イントラネットでアプリを実行することを好むクライアントもあります。他のクライアントは、ブラックボックス ソリューションとしてクラウド アプローチを好む場合があります。アプリは数時間実行される場合もあれば、無期限に実行される場合もあります。クライアントとプロジェクトによって異なります。展開シナリオ以外は、アプリはほぼ同じです。

タグからわかるように、メッセージベースのアーキテクチャがおそらく最も汎用性が高いと思いますが、これについて間違っていることにも慣れています。

一般的なアーキテクチャと特定のソリューションに関するすべての提案と指針を歓迎します。

4

1 に答える 1

5

はい、可能です。Web アプリ自体 (MVC または Webforms) はおそらく同じままです (構成の変更があります)。

Windows Azure を "クラウド" 展開オプションとして検討している場合、考慮すべき主な事項は次のとおりです。

ウェブアプリ:

  • セッション管理: Web ファームに適したアプローチを使用する必要があります (たとえば、メモリ内のサーバー側のセッション状態を使用できません)。
  • 帯域幅の使用: クラウドにデプロイすると、レイテンシがオンプレミスの 100% より高くなり、送受信するビット数が増えると、より多くの料金が発生します。より倹約的なアプリを構築するための $ インセンティブがあります。
  • 認証メカニズム: SSO を提供する場合は、おそらくクレーム ベースのアプローチ (WIF を使用) に移行する必要があります。これは主に分離して変更できるものです (オンプレミスの Windows 統合セキュリティ、クラウドに基づくクレームなど)。
  • すべての標準プロバイダー (プロファイル、メンバーシップ、トレースなど) を使用します。すべての Win Azure 実装があるので、それらを変更するだけです。

データ:

  • 移植性を最大限に高める最も簡単な方法は、SQL Server の (大きな) サブセットである SQL Azure を使用することです。
  • 別のストレージ システム (Windows Azure テーブルなど) を使用する場合は、アプリ内のすべてのデータ アクセスを抽象化する必要があります (はるかに困難な作業)。
  • SQL Azure で使用できない一部の機能 (SQLCLR、SQL Broker など) に加えて、データベース サイズに制限があります (現在、最大 = 50 GB)。したがって、顧客のデータベースがそれを超えて成長した場合は、データベースを分割する必要があります (これにより複雑さが増しますが、実行可能です)。

管理:

  • ログとトレースに標準的な方法 (Systems.Diagnostics など) を使用する場合、アプリはほとんど同じままです。プロセスを調整する必要があります (およびスクリプトなど)。

詳細については、こちらをご覧ください

何のためにメッセージ キューを検討しようとしていたのかはわかりませんが、それは抽象化することもできます (オンプレミスの場合は MSMQ、クラウドの場合は Windows Azure キューなど)。いくつかのセマンティックの違いに対応する必要がありますが、それは可能です。

于 2010-06-16T03:30:08.487 に答える