[seasar-dotnet:1525] Re: [DBFlute][S2Remoting] リモートオブジェクトを取得したい

koyak [E-MAIL ADDRESS DELETED]
2009年 11月 20日 (金) 23:39:13 JST


西山(hajimeni)さん

小谷です。

> イメージでは、次のような感じでよろしいでしょうか?
>
> |Client|          |Server|
> [画面]  ⇒ <WCF> ⇒ [Service] ⇒(*) [Facade] ⇒ [Bhv]
>
> ・(*)の呼び出し部分をトランザクション境界にする。
> ・画面からは、WCFを通してServiceを呼び出す。
>
> 画面:Service = 1:1 のような構成の場合、
> Facade:Service も 1:1 という考え方でよろしいでしょうか?

はい。
(先に確認しておくべきだったかと思いますが、
[Service]はhttp://msdn.microsoft.com/ja-jp/library/ms731067.aspx
にあるような「サービス」の意味で解釈しています。
間違っていましたらご容赦下さい)

.NET RemotingでもWCFでも[Service]にあたる部分はASP.NETのPageクラスと同様に
DIコンテナで管理できないため、
(少なくともSeasarの)インターセプターをかけることはできないはずです。
そのため、代わりにFacadeにあたるクラスを用意して
トランザクション(TransactionInterceptor)を設定することになるかと思います。


2009年11月20日10:15 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
> 小谷さん。
>
> 西山(hajimeni)です。
>
> 返信ありがとうございます。
>
>> 個人的にはQuillを使うにせよS2Containerを使うにせよ
>> Seasar.NETを利用するのはサーバ側のみとし、
>> リモートオブジェクトの取得・利用は
>> .NET標準のやり方(公式ガイドなどに載っているような)で
>> 行うことをオススメしたいです。
>> (WCFだけかもしれませんが、
>> VisualStudioで必要なクラスをある程度
>> 自動生成できるはずなので)
>
> 構成等はまだ、全然決まっておりません。
> 確かに通信部分は.NET標準の方が問題が少なくなりそうですね。
> 検討してみたいと思います。
>
>> ServiceからFacadeの処理を呼び出す、という形が
>> 作りやすいのではないでしょうか。
>>
>> (以前、私が関わったことがある
>> Silverlight(+WCF)+Seasar.NET+DBFluteな
>> プロジェクトでは上記のような形で作成していました)
>
> イメージでは、次のような感じでよろしいでしょうか?
>
> |Client|          |Server|
> [画面]  ⇒ <WCF> ⇒ [Service] ⇒(*) [Facade] ⇒ [Bhv]
>
> ・(*)の呼び出し部分をトランザクション境界にする。
> ・画面からは、WCFを通してServiceを呼び出す。
>
> 画面:Service = 1:1 のような構成の場合、
> Facade:Service も 1:1 という考え方でよろしいでしょうか?
>
>>> 4.ロジック変更時に、サーバー側のDLLは入れ替え無しとしたい。
>>> というのも、他で開発されたプロジェクトで、
>>> 「SQL文を配列にして投げればトランザクションになる」というラ
>>> イブラリがあり、「これを使うか、同じ仕組みにしてくれ」
>>> という要望があります。
>>
>> こちらについては
>> 恥ずかしながら、私も良さそうな考えが浮かびません。。。
>> このライブラリ(もしくは同等のインターフェース)を
>> 使わざるをえないのであれば
>> Seasar.NETを利用するにしてもコンポーネントの管理と
>> (トランザクションを除く)インターセプターの利用程度に
>> 留めておいた方が無難かと思います。
>> (SQL文そのものではなくSQLファイルのパスを渡すのであれば
>> 工夫すれば外出しSQLと組み合わせることができるかもしれません)
>
> これは、どうにか利用しない方向で進める予定です。
>
> 周りでは、今だに「SQL文を自力で組み立てて(バインド変数も利
> 用しない)コーディングする手法が根強いため、なかなか手ごわそ
> うでありますが。
>
>
> 大変参考になりました。ありがとうございます。
>
> また、何かご相談させていただくことがある際には、よろしくお願
> いいたします。
>
>
> 以上よろしくお願いいたします。
>
>
> [2009/11/19 23:26] koyak さんは書きました。:
>> 西山(hajimeni)さん
>>
>> 小谷です。
>>
>> 個人的にはQuillを使うにせよS2Containerを使うにせよ
>> Seasar.NETを利用するのはサーバ側のみとし、
>> リモートオブジェクトの取得・利用は
>> .NET標準のやり方(公式ガイドなどに載っているような)で
>> 行うことをオススメしたいです。
>> (WCFだけかもしれませんが、
>> VisualStudioで必要なクラスをある程度
>> 自動生成できるはずなので)
>>
>> リモートオブジェクトの取得でSeasar.NETを利用する
>> =クライアント側でもSeasar.NETを利用する
>>
>> ということになると思いますが、
>> 仮にそのようにした場合、Seasar.dllなども一緒に
>> クライアントに配布しなければならなくなります。
>> そうなるとSeasar.NETをバージョンアップさせる必要が
>> 出てきたときなどにコストがかかることになり
>> (クライアントにもよりますが)、
>> .NET Remoting(もしくはWCF)を使う意味が半減してしまうのでは
>> ないかと思います。
>>
>>> 1.C/Sシステムで、.NETを利用。
>>> 2.DBとの接続は、サーバーが行う。
>>> 3.トランザクション処理を行いたい。
>>> [Form] ⇒A⇒ [Service] ⇒B⇒ [Bhv]
>>
>> という構成であれば、西山さんがおっしゃる通り
>> Aの部分から右をDLLとしてサーバーに配置
>>>> DBFlute.NETを利用したDBアクセス処理を実装
>>>> Facadeのようなものを用意してそれをトランザクション境界に
>>>> ServiceからFacadeの処理を呼び出す、という形が
>> 作りやすいのではないでしょうか。
>>
>> (以前、私が関わったことがある
>> Silverlight(+WCF)+Seasar.NET+DBFluteな
>> プロジェクトでは上記のような形で作成していました)
>>
>>> 4.ロジック変更時に、サーバー側のDLLは入れ替え無しとしたい。
>>> というのも、他で開発されたプロジェクトで、
>>> 「SQL文を配列にして投げればトランザクションになる」というラ
>>> イブラリがあり、「これを使うか、同じ仕組みにしてくれ」
>>> という要望があります。
>>
>> こちらについては
>> 恥ずかしながら、私も良さそうな考えが浮かびません。。。
>>
>> このライブラリ(もしくは同等のインターフェース)を
>> 使わざるをえないのであれば
>> Seasar.NETを利用するにしてもコンポーネントの管理と
>> (トランザクションを除く)インターセプターの利用程度に
>> 留めておいた方が無難かと思います。
>> (SQL文そのものではなくSQLファイルのパスを渡すのであれば
>> 工夫すれば外出しSQLと組み合わせることができるかもしれません)
>>
>>
>> ご相談になられていることと論点がずれてしまって
>> いましたらご容赦下さい。
>>
>>
>> 2009年11月19日20:32 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>> お世話になっております。
>>> 西山(hajimeni)です。
>>>
>>> .NET Remoting や WCFを通したリモートのオブジェクトを取得した
>>> い場合、 Seasar.NET の機能を利用してどのように取得すればよろ
>>> しいでしょうか?
>>>
>>> 想定している利用環境は次のとおりです。
>>>  DBFlute.NET 0.8.9.5
>>>  Seasar.NET 1.3.17
>>>
>>> S2Remoting.NET のページはあるようなのですが、使い方等がいま
>>> いちわかりません。
>>>
>>> 具体的に実行したいことは次のようなことです。
>>>
>>> 1.C/Sシステムで、.NETを利用。
>>> 2.DBとの接続は、サーバーが行う。
>>> 3.トランザクション処理を行いたい。
>>>
>>> [Form] ⇒A⇒ [Service] ⇒B⇒ [Bhv]
>>>
>>> という構成の場合、Aの部分から右をDLLとしてサーバーに配置し
>>> て、Form側からリモートオブジェクトを取得すればよいのかなと
>>> 思っております。
>>>
>>> しかし、
>>> 4.ロジック変更時に、サーバー側のDLLは入れ替え無しとしたい。
>>>
>>> といった場合は、どのように実現させれば良いのかは見当が付きま
>>> せん。
>>>
>>> というのも、他で開発されたプロジェクトで、
>>> 「SQL文を配列にして投げればトランザクションになる」というラ
>>> イブラリがあり、「これを使うか、同じ仕組みにしてくれ」
>>> という要望があります。
>>>
>>> 以前のプロジェクトで、 Seasar.NET + DBFlute.NET を利用した
>>> 時に、非常に生産性がよかったので、出来れば同じように開発した
>>> いと思っております。
>>>
>>> しかし、4はほぼ無理だと思っております。
>>>
>>> よって、Aの部分でオブジェクトをリモートから取得したいと思っ
>>> ております。
>>>
>>>
>>> .NET について詳しく理解しているわけではありませんので見当違
>>> いのことを言っているかもしれませんが、お知恵をお借りしたいと
>>> 思っております。
>>>
>>> 以上よろしくお願いいたします。
>>>
>>> --
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> 西山 はじめ
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>
>>> _______________________________________________
>>> seasar-dotnet mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
>>
>
>
> --
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 西山 創
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内