TOP
PROFILE
MUSIC TUNE
BBS
LINK

2005年08月15日

オープンとベストプラクティス

土曜、日曜と、とあるプロジェクトの為にPetShop3.0をEnterpriseLibrary1.1対応へと移植する作業を行っていた。
まぁこれ自体は12月下旬へ向けての布石という意味合いがあるのだが、自分としてもEntLibを使って本格的なアプリケーションを作ることによって実践的ノウハウを身に付けるという狙いもあり。
差分をとりやすいようにPetShopの?な設計、実装でもあまり変更をしないという方針の基に以下のABを使用している。
・LoggingAB (Rolling Flat File使用)
・ExceptionHandlingAB
・DataAccessAB (Data Tier Generator使用)
・DataMappingAB
・SecurityAB (敢えてForm認証から変更)
・CashingAB(DMABが使用)
・ConfigurationAB(単体としても使用)
・CryptAB
最初のバージョンでは現行のPetShopと同じくWebアプリとするため、UpdaterABは未定、CompositeUIABについては見合わせる方向(次期版ではスマートクライアントを予定)。

ただいざ本格的に使ってみるとEntLibの足りない点も見えてきたり、DMAPを利用した場合はDataTierGeneratorが生成したコードの多くを変更する必要があったり、現行のPetShopはカスタムエンティティを使った実装になっていて、DALがデータマッパーの役目も兼ねているのだが、DMABを使った場合は型付DataSetを使えるため、そこから敢えてカスタムエンティティにマッピングすることに意味がない・・そこでこのビジネスエンティティの扱いに関しては大きく変更することにした。
(ただし型付DataSetを作るにあたってはテーブル、ビューから生成するのではなくて、対応するストアドプロシージャから生成しないとDMABは受け付けてくれないところにはまったり)
ただDMABが将来的にORM機能を実装したり、NHibernateが実践利用に耐えうる(そして明確なガイドがあれば)のであれば、ここは将来的に変更する可能性はある。
あと移植にあたってはNUnitとTestDriven.NETを使ってテストを書いてから移植作業を行っているのだが、どうもTestDriven.NETからテストを動かすと構成ファイルの配置が問題になったりと、ちょっとイライラ(^^; PetShopは何故かかなり細かくプロジェクトが切られているため、複数人の開発であればNAnt、CC.NETも使うが、まぁ一人でやる分には今回は大丈夫だろう。

ただ色々とやってみてあらためて思ったのが、世の中にユーザが自由にカスタマイズできるように一応ソースコードを公開しているアプリは多くあるが、ソースを公開することがイコールで拡張性があるということでは当然ないわけで、EntLibはとにかくその一点についてよく出来ているとあらためて実感、つまり既存のEntLibをただそのまま使うのではなくて、ユーザが実践の場において拡張して使っていくことを前提にしているというのが根本の思想な気がする。
そう、これは実際にACA.NET4.0がやったようにEntLibはそれを基幹に据えて更に上位のフレームワークをユーザが自由に構築できるようにという発想で設計されているとも言えるかもしれない。

現時点で100%完全無欠のライブラリとは思わないが、そこへ向けていくらでも拡張できるだけの受け皿を持っている、EntLibとはそういうものなのだとつくづく思った次第である。

おっと追記ここでやってみたいがどうしよう〜ってのがDIコンテナなんだよね。
当然無理にやる必要はないのは確かではあるが、そもそもが実験的にやってることなので、使えるものがあるなら使ってみたいとは思う。
ServiceContainerAB、S2.NET、Spring.NET、最有力はSCABだが果たしてどこまで使えるものやら(^^;

Posted by GAMMARAY at 2005年08月15日 10:18 | TrackBack
Comments
Post a comment









Remember personal info?