ObjectDataSource

ASP.NET 2.0からはデータバインド機能としてDataSourceコントロールが追加されています。
データバウンドコントロール(GridViewやDetailsView)をDataSourceに結びつけることにより、ノンコーティングでデータ処理を記述できます。


DataSourceコントロールとしては、SqlDataSource、ObjectDataSource等がありますが。
SqlDataSourceはSQLをaspxに埋め込むことになり、ビジネスロジックの再利用ができない2階層アプリケーションになってしまうため、自分が使うことは無いと思います。
っというわけで通常はObjectDataSourceを使うんですが、ObjectDataSourceにもちょっと不満はあったりします。


ObjectDataSourceに指定できるビジネスロジックのクラス・メソッドが、具象クラスのメソッド、staticメソッドのみのようで。
具象クラスのメソッドを指定した場合、インスタンスの管理もObjectDataSource内で行われてしまいます。


これだと、ビジネスロジックのInterfaceとImplの分離みたいなことが出来ないんですよね。
.NET系だとこういうアーキテクチャを採用しているケースは少ないんですかね?
自分としては、Javaでも.NETでも「仕様と実装の分離」はやりたいところなんですが。


ObjectDataSourceを使ってビジネスロジック層のInterfaceとImplを分離したい場合、手動でデータバインドのコードを書くか、あるいはObjectDataSource用のビジネスロジックラッパーみたいなものが必要になってしまいます。
DIコンテナみたいなものを使用する時に、Interfaceだけを指定しておけば実行時にそのImplを使用してくれるDataSourceクラスが欲しいんですよね。


で、DataSourceコントロールを自作する場合、DataSourceControl派生、DataSourceView派生の他、デザイナ用にDataSourceDesignerとかも作らなきゃならないわけで(’A`)
とりあえず「そのうちやる」に分類しておきます(´ω`)