web-dev-qa-db-ja.com

完全にモジュール化されたWebアプリケーションを構築する方法

今後数か月以内に、クライアント用に構築したシステム(v1)を使用して、それを最初から再構築するプロジェクトを開始します。 v2の私たちの目標は、モジュール化して、この特定のクライアントが使用する独自のモジュールのセットを持ち、別のクライアントが異なるモジュールのセットを完全に使用できるようにすることです。ここでの秘訣は、A社がそのシステムの動作方法を変更する一連のチェックアウトモジュールとユーザーモジュールを持っている可能性があることです。会社Bは標準のチェックアウト手順に固執するかもしれませんが、製品の閲覧方法をカスタマイズします。

すべてのクライアント間で共有されるCoreを使用しながら、特にクライアント用に変更されるものの柔軟性を維持したいアプリケーションをゼロから構築する場合、アプリケーションアーキテクチャへの良いアプローチは何ですか?

私はCodeIgniterのフックを見てきましたが、250フックになる可能性があり、それでもまだ十分な柔軟性がないため、これは良い解決策ではないと思います。他のいくつかのソリューションは何ですか?理想的には、砂に線を引く必要はありません。

34
Webnet

高度に組織化され分離されたモジュール性を実現するには、 Hierarchical MVC アーキテクチャパターンに従うことができます。これは、プレゼンテーション-抽象化-コントロールとも呼ばれます(厳密には同じパターンではありません)。 KohanaAlloyFluency および FuelPHP はHMVCをネイティブでサポート* コハナのHMVCアプローチについては、 Sam de Freyssinet による HMVCによるWebアプリケーションのスケーリング および パフォーマンスのためのHMVC Webアプリケーションの最適化 で説明しています。

残念ながら、CodeIgniterはHMVCをネイティブでサポートしていません。 wiredesignzのcodeigniter-modular-extensions-hmvc から着想を得て、CodeIgniterで何らかのHMVCサポートを提供するために自分のライブラリを構築しました。非常に素晴らしい HMVCの紹介 記事がnettus +にあり、CodeIgniterとwiredesignzの拡張について説明しています。次の画像と引用は、そのチュートリアルからのものです。

enter image description here

各トライアドは互いに独立して機能します。トライアドは、コントローラーを介して別のトライアドへのアクセスを要求できます。これらの両方のポイントにより、必要に応じてアプリケーションを複数の場所に分散できます。さらに、MVCトライアドの階層化により、より詳細で堅牢なアプリケーション開発が可能になります。これは次のポイントに私たちをもたらすいくつかの利点につながります。

最後に、フックを使用して正しい軌道に乗っています。HMVCアーキテクチャを採用している場合でも、実装と探している自動化のレベルによっては、フックを使用して解決する必要がある問題がいくつかあります。 。フックの適切な使用法はpre_controllerフック。たとえば、インストールされたモジュールのすべての依存関係が存在することを確認します。

※知らない人がいるかもしれません。

26
yannis

私はPHP=の人ではありませんが、Javaスクリプトの側では、できるだけ独立させておきたいモジュールがたくさんある場合は、いくつかのシステムがあります。 RequireJS など、他のモジュールへの依存関係を宣言するJavaスクリプトモジュールがあり、フレームワークは必要なときにそれらがロードされることを確認します。

さまざまなフレームワークでは、依存関係の宣言方法、サーバーでのビルドステップとして、ページの読み込み時、または要求に応じて動的に実行される依存関係の処理方法、およびJavaの記述方法をどの程度変更する必要があるかが異なります。脚本。

これらのフレームワークは、サーバー側フレームワークがこれを処理している場合、またはJavaスクリプトを生成している場合はそれほど(またはおそらくまったく)適用されませんが、Javaスクリプトをサーバー側フレームワークから独立させたい場合があります。

あまり多くのJavaスクリプトがなくてもモジュール性が必要な場合は、最初に依存関係を持つスクリプトタグを順序付け、依存関係を処理する匿名の自己呼び出し関数を常に使用し、自分自身を単一のオブジェクトに登録することで相互に参照できます。グローバル名前空間。それは少なくともそれらをほぼモジュール化し、実装するのにそれほどコストはかかりません。

5
psr

モジュール設計を行う方法に関するいくつかの指示を以下に示します。 https://class.coursera.org/saas/lecture/preview/9

また、「 [〜#〜] soa [〜#〜] は、分散コンピューティングとモジュラープログラミングの古い概念から、連続体で見ることができます、SOAを介して、マッシュアップの現在のプラクティスに続き、SaaS、... "

HMVCコードの構成自体は、必ずしもモジュール化につながるわけではありません。

0
Goce Ribeski