2009-08-02 23 views
0

MVCでは、コントローラはアプリケーションに属しますか、または共有ライブラリに入ることができますか?たとえば、次のように(MVC)共有ライブラリのコントローラ?

//this is a shared library 
LibShared 

//these are two apps 
appA ->LibShared 
appB ->LibShared 

各アプリは、独自のMVCを実装し、アプリケーションの論理モデルのおそらく一部として任意の共有ライブラリを使用するか、単に別のライブラリの参照(ユーティリティ)ではないでしょうか?

また、MVCコントローラが共有ライブラリにスタックされている状況がありますか?私はコントローラが特定のアプリに特定のビューを必要と思った。意味、コントローラは、そのアプリに入る必要がありますか?

コントローラを汎用(つまり共有ライブラリ)にすることはできますか?彼らはもはやコントローラではないという意味ですか?

答えて

1

私は共有ライブラリに何かを置くか、アプリでそれを維持するために私たちを動かすだろう何かどこに行くことができると思いますか?

私は2つのことを考えます:

1)。変化率はどのくらいですか?アプリ全体を変更すると、これが変わる可能性があります。 2)。何か他のものを使う必要がありますか?もし私が新しいバージョンをrealeaseするとすぐに他のクライアントはすぐに

通常、コントローラはアプリケーションに強く関連付けられているため、他のアプリケーションにはあまり関心がないでしょう。 。したがって、アプリケーションとのパッケージングは​​理にかなっています。

ここで、コローラが何らかの形で一般的であれば、おそらくコンフィギュレーション駆動型で、共有ライブラリが理にかなっています。

0

コントローラは必ずしも同じオペレーティングシステムでも同じである必要はありません。 Windowsではビュー、Unixではコントローラ、Sparcではモデルを表示できます。 MVCは単なるパターンであり、あなたはより堅牢で変更が容易な何かを行う方法であることを覚えておいてください。

コントローラは共有ライブラリである可能性があります。コントローラはあなたの意見を認識する必要がありますか?必ずしも。それはモジュール間の通信をどのように扱うかによって異なります。優れたMVC実装では、モジュールは単にメッセージやイベントを交換します。したがって、ビューはコントローラにイベントを送信し、コントローラは何をすべきかを決定し、メッセージを返信します。コントローラの応答は、 "Show Window X"のようなものです。ビューがWebモジュールの場合、ビューは適切なaspxページを置くだけで、 "Window X"はViewモジュールによって解釈される可能性があることに注意してください。

0

少なくともCakePHPとMike McShaffryがGame Coding Completeブックで説明しているアーキテクチャーでは、コントローラーはアプリケーションに属しています。

しかし、いずれの場合も、アプリケーションはモデル、ビュー、およびコントローラの基本機能をフレームワークから継承します。

例:。:ここでは、フレームワークによって

// "super" controller of all applications using this framework 
class Controller 
// uses basic libraries that allows the inheriting applications to work minimally 

class AppController extends Controller 
// mainly uses the parent class's methods but can also substitute to using 
// additional libraries 

私は、ライブラリの使用をカプセル化するシステムを意味します。 CakePHPでは、このカプセル化は、モデル、ビュー、およびコントローラに関するライブラリを使用して行われます。したがって、これらのコンポーネントのどちらにもライブラリへのアタッチメントはありません。

しかし、Mike McShaffryのアーキテクチャでは、コントローラとビューのみがライブラリを使用します。したがって、モデルは分離されずに残されているため、異なるアプリケーションに移植性が高くなります。

1

コントローラをモジュール/パッケージ/ライブラリ(ここではモジュールと呼ぶ)に分離する必要がある場合は、それを行う必要がある場合(つまりすぐに再使用する場合)は助言します。そのような要件がない場合現在存在する私はそれが必要なときに決定を延期するだろう、あなたが不必要にオーバーエンジニアリングするあなたのケースでは聞こえる。理論的には後で別のモジュールにリファクタリングすることができますが、結合に関しては注意してください。異なるモジュールに分離することはカップリングを減らさず、コントローラがどれくらいの方向に向いているかを注意深く見てくださいビューの。アプリケーションへのあなたの質問に

1

1ライナーの答えはYES、YOUは1行のコードを変更せずSEPARATEライブラリにコントローラーを動かすことができる

です。

関連する問題