従来のDelphiデータベースアプリケーションには、TDataSourcesを介してTDataSetsに接続されたデータ対応のビジュアルコントロールのセットであるフォームがあります。MVCモデルを使用してデータベースアプリケーションを設計する場合、TDataSetコンポーネントをどこに配置しますか?それらはフォームにとどまり、したがってビューの一部である必要がありますか?または、それらをモデルオブジェクト内にカプセル化する必要がありますか?後者の場合、どのようにビジュアルコンポーネントにバインドできますか?
2 に答える
次のように、MVC の目で Delphi プロジェクトを見ることができます。
TDataModule -> Model
TYourForm.pas -> Controller
TYourForm.dfm -> View
それを受け入れる場合は、DataSets を Datamodule に配置する必要があります。
私が取り組んでいるプロジェクトでは、フォームに TClientDataSets を配置し、作成時にデータを複製しています。そのようにして、データモジュールにロジックを使用して、TForm にデータを分離しました。
残念ながら、Delphi 用の ActiveRecord のようなフレームワークはありません。
私は現在の顧客のためにMVCのようなフレームワークを作成しました。あなたにとっては、次のようなものになります。
- TDatamodule =モデル(データ用、TDatasetのもの)
- TForm =ビュー(モデルのTDatasetに接続されたデータソースを含む)
- Controller.pas =コントローラー(実行/ビジネスロジック)
フォームをできるだけきれいに保つようにしてください。GUI用のものだけが含まれている可能性があります。コントローラに特別な(ビジネスルール、データ更新など)ロジックを実装します。注意:ビューは別のビュー(Webページなど)に簡単に置き換える必要があります。
私のMVCのようなフレームワークでは、ビューはコントローラーのパラメーターを使用してメソッド(検索、更新など)を呼び出し、コントローラーは検索の内容と方法などを認識し、モデルを入力/更新します。ビューはモデル(コントローラーのプロパティ)に接続されています。
正確にはMVCではありませんが、この方法でGUIがすべての種類のロジックから分離され、デバッグと保守が容易になります(コントローラーとの依存性注入/緩い結合などを使用できますが、これにより困難になります。次の場合にのみ使用してください。必要)