[seasar-dotnet:549] Re: WEB サービスにおけるDIの利用について

Kazuya Sugimoto [E-MAIL ADDRESS DELETED]
2007年 7月 24日 (火) 08:31:46 JST


杉本です。

ということで、現状では既に川谷さんが行われているように
SingletonS2ContainerFactoryからS2Containerを取得してDIを行うしかないです。

サービスクラスはWebServiceを継承していると思いますが、このWebServiceを
継承した基底クラスを作成して、そこのコンストラクタでDIすると簡単にできますし、
今後、別の方法でDI出来るようになった場合に、その基底クラスのDIする処理を
はずせば簡単に切り替えることができます。



07/07/24 に Kazuya Sugimotoさんは書きました:
> 杉本です。
>
> 川谷さん、こんばんは。
>
> ASP.NETの開発はしたことが無かったりするので、ASP.NETの開発を経験している
> コミッタの方が良い情報を持ってそうですが、とりあえず仕組みを確認してみました。
>
> 結果から言いますと、S2HttpModuleではWebサービスで使用するサービスクラス?
> に対してDIすることはできません。
>
> S2HttpModuleはHttpContextからIHttpHandlerの実装クラスを取得して、
> その実装クラスに対してDIを行おうとしています。
>
> .aspxの場合は、IHttpHandlerの実装クラスはPageクラスを継承したクラスとなり、
> DIを行うことができます。
>
> しかし.asmxの場合は、このIHttpHandlerの実装クラスはWebサービスの
> サービスクラスではなく、なにか別な物が使われます。(なんだろ・・?)
>
> そしてasmxファイルからWebサービスのサービスクラスを決定して呼び出して
> いるようです。
>
> S2HttpModuleはこの何か別な物にDIしようとしているため、asmxに対しては
> うまく動きません。
>
>
> System.Web.Services.Protocols.WebServiceHandlerFactoryクラスが
> おそらくIHttpHandlerの実装クラスをインスタンス化しているようなので、
> このあたりを調べたらサービスクラスに自動的にDIすることが可能になるかも
> しれません。
>
>
> だれかこのあたり教えてください・・m(_ _)m
>
>
> 07/07/23 に 川谷さんは書きました:
> > 初めまして、川谷と申します。この度WEBサービスを使用したアプリケーションを
> > 構築することになったのですが、そのアプリケーションにDIが活用出来ないかと
> > S2Container.NET 1.2.9 を検証させて頂いております。
> >
> > WindowsアプリケーションからのDIやAOPに関しては一通り動作させることが
> > 出来たのですが、Webサービスで利用する際にサービスの実装クラスに対して
> > Dependency Injection を行うことは可能でしょうか?
> > (VS2005でWEBサービスプロジェクトを作成すると自動生成されるService.csに該
> > 当)
> >
> >  http://s2container.net.seasar.org/ja/asp.html を参考に、ASP.NETと同様の
> > 設定で色々試してみましたが、Global.asaxの初期化は実行されるものの
> > WebMethodが呼び出される際に、Dependency Injectionが行われた状態で
> > インスタンスが呼び出せませんでした。diconファイルのcomponent タグにURLや
> > クラス名を記述してみましたが、この辺が怪しいかもしれません。
> >
> > WebMethod内でS2SingletonContainerFactory.Containerを明示的に取得し
> > コンポーネントを取り出せば正しく動作する事は確認出来たのですが
> > 自動的にInjectionするのは無理でしょうか?
> >
> > よろしくお願いします。
> >
> >
> >
> > _______________________________________________
> > seasar-dotnet mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >
>
>
> --
> Kazuya Sugimoto
> Microsoft MVP Visual Developer - Solutions Architect
> http://d.hatena.ne.jp/sugimotokazuya/
>


-- 
Kazuya Sugimoto
Microsoft MVP Visual Developer - Solutions Architect
http://d.hatena.ne.jp/sugimotokazuya/


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