[Seasar-user:14257] Re: SAStruts 1.0.2-rc3 リリース
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2008年 5月 19日 (月) 10:56:22 JST
ひがです。
>
> 片岡です。
>
> * [SASTRUTS-41] - Logicを使うのやめてServiceを使うようにしました
>
> に関して、その意図を教えてください。
>
> diconファイルを見る限り、LogicからServiceへの単純な名称変更と
> 理解しました。なので実用上はどっちでもよい気がするし、SAStrutsの
> LOGICクラスも徐々に浸透していると思うので、ことさら今変えなくても
> よいのでは?と感じたのですが...。
>
http://d.hatena.ne.jp/higayasuo/comment?date=20080517#c
でも突込みが入ってますね。
> 他のS2プロジェクトとの整合性なのでしょうか。それとも、それ以外の設計
> 指針の示唆や、特別なロジックなどありますでしょうか。
>
話の流れとしては、
・最初はユースケースのビジネスロジックはActionにかこう。
複数のActionで共通的なロジックはServiceにかこう。
・次はそのServiceは一般的なServiceとは違うからLogicにしよう。
・今は、Actionにビジネスロジックを書くと肥大化しやすいということが
いくつかのフィードバックを経てわかってきたので、
Entityごとに Serviceを用意し、ビジネスロジックは
ServiceまたはEntityでかこう。
用語としては、Logicよりも一般的なServiceにあわせるよ。
ということなんですが、最後の
「用語としては、Logicよりも一般的なServiceにあわせるよ」
の部分が、いまさら変えなくてもと皆さんが思っている部分ですよね。
このServiceの使い方は、Domain Driven DesignのServicesパターン
にあわせています。
http://www.ogis-ri.co.jp/otc/hiroba/technical/DDDEssence/chap2.html#Services
ドメインで扱う概念の中には、1つの機能や処理が単体で存在していて、
もの(オブジェクト)として扱うのが不自然なものもある。
そうしたものは、サービスという形でユビキタス言語に組み込む。
サービスは基本的に状態をもたない(stateless)。
(PofEAAのService Layerパターンとは異なる概念なので注意。
Service LayerパターンはDDDのアプリケーション層に相当するものを言っているが、
DDDのサービスはドメインモデルの中にあるサービス的なものを指している。
だったら、最初からそうしろよというお叱りは、重々承知していますが、
標準的な言葉で説明できることは、標準にあわせていたほうが、
最終的にはユーザのためになると思っています。
ご迷惑をおかけしますが、よろしくお願いします。
Seasar-user メーリングリストの案内