さまざまなアプローチがありますが、どれも間違っているとは言えません。あなたの現在のアプローチは何だろうと思います。そして、それを変更したくなるような制限は何ですか。
あなたが提案しているように見えるアプローチは、モデル(「重いバックエンドリフティング」を行う別名PHPコード)とビュー(別名フレックスフロントエンド)の間に立つファサードを作成することです。継承の問題はありません。特に、すべての重労働/ビジネスロジックを含むバックエンドがすでに実装されている場合。このファサードレイヤーをサービスレイヤーと見なし、モデルの一部と見なします。コントローラの一部ではありません。
Flexと一部のバックエンドの間にModel-View-Controller-Services(MVCS)アーキテクチャを作成しようとする場合。私は一般的にこのようにします:
ビューはFlexコンポーネントとして実装されます。
ControllerはActionScriptクラスとして実装されています。私の見解では、コントローラーの主な目的は、サーバーへの要求とデータをビューにシャッフルすることです。
サービスレイヤーはサーバーに実装されています。あなたの場合はPHP。サーバー側にあるサービスごとに、Flexに並列サービスクラスがある可能性があります。
モデルレイヤーには、関連するビジネスロジックを実行するためのクラスがあります。データを検証してデータベースに保存し、データベースからデータを取得するため、およびその他の必要なビジネスロジック。多くの場合、モデルの一部として、値オブジェクトクラスがあります。値オブジェクトクラスは、ActionScriptで並列化されることが多く、サーバー側サービスとクライアント側コントローラー間のデータ転送に使用されます。
したがって、次のように機能します。
- ユーザーがビューを操作します
- ビューはイベントをコントローラーにディスパッチします
- コントローラはサーバー上のサービスにリモート呼び出しを行います
- サービスはモデルを呼び出してデータを取得します
- モデルはリクエストを取得し、適切なアクションを実行し、値オブジェクト(または値オブジェクトの配列)を作成して、それをサービスに返します
- サービスは結果をクライアント側のコントローラーに返します
- コントローラはビューを更新するために何かをします
このプロセスを支援するためのフレームワークはたくさんあります。特に、アプリケーションのレイヤー間の「カプセル化された」通信の場合はそうです。
多くの場合; 「モデルに何を入れるべきか/ビューに何を入れるべきか」の間の線がぼやけています。Flex(またはAJAX、Silverlight、または任意のスマートクライアント)アプリケーションを開発しているとき、多くの場合、スマートビューが必要です。そのため、一部のビジネスロジックはビューの一部として実装される場合があります。それはいいです; アプリの機能と「理想的な」抽象化ケースのバランスをとる必要があります。
あなたの質問は少し広範でしたが、これがお役に立てば幸いです。私は個人的に、自分のアプリケーションアーキテクチャについて実用的であることを好みます。私のサービスクラスは、データ解析などのビジネスロジックを実行することがあります。それはアプリとその目標、クライアントと時間枠に依存します。