[seasar-dotnet:905] Re: [S2Container.NET] ASP.NET での Web フォームに対する DI

kubo [E-MAIL ADDRESS DELETED]
2008年 7月 30日 (水) 11:35:59 JST


久保(jflute)です。

ももたろさん、こんにちは

ちょっと具体的な回答はできなくて参考にならないかもですが、
自分が、ASP.NET使っていた時は、

PageクラスからFacadeと呼ぶsingletonなビジネスロジッククラス
を呼び出していましたが、PageクラスからContainerの
GetComponentでFacadeを取得していました。
実際にはSingletonS2ContainerFactoryを隠蔽するstaticなクラス経由です。
つまり、非常に単純な構造でやっていました。
トランザクションはFacadeに掛けていました。
今だったら、QuillでPageクラスにInjectionすると思います。

Pageクラス自体をどうにかしてS2コンポーネントにしたいと
色々試行錯誤しましたが、いまいち中途半端になってしまうので、
上記の単純構造でやったという記憶があります。

2008/7/30  <[E-MAIL ADDRESS DELETED]>:
> はじめまして。ももたろと申します。
>
> ASP.NETからS2Dao.NETが使いたくて、まずはS2Container.NETをASP.NETで
> 使用できるように環境を整えています。
>
> 今回の目的としては、WebフォームにsingletonなビジネスロジッククラスをDIして
> 呼び出したいと考えています。
> (そもそも、こんなことしないよ、とかあれば指摘してくださると嬉しいです)
>
> それを実現するためにWebフォームをコンポーネント登録しようとした場合、
> 以下の点ではまってしまいましたので要望&相談させてください。
>
> (1) Webフォームをコンポーネント登録する際に仮想パスを書かないといけない。
> アプリケーションルートからのパスを書けばよいものと思い、
>
>  <component name="/Default.aspx" instance="outer" />
>
> と書いていてずっと悩んでいました。
> ドキュメントに「仮想パス」と明記してあるのに気付かなかった
> 私が悪いのですが、変更する可能性のあるアプリケーションルートまで
> 記述しないといけないのは、不便に感じました。
> 「~/Default.aspx」などのルート演算子が使えるとうれしいと思います。
>
>
> (2) 大文字小文字を区別する。
>
>  <component name="/WebSite1/Default.aspx" instance="outer" />
>
> と仮想パスを記述することで、意図するように動作したのですが、
> 例えば、http://localhost/WebSite1/default.aspx などのように、
> 大文字小文字が違っているURLでアクセスするとDIしてくれなく
> なってしまいました。
>
> ユーザからは大文字でアクセスされるか小文字でアクセスされるかは
> 分からないため、大文字小文字は無視されていて欲しいです。
>
> (3) Server.TransferするとDIされない。
>
>  Server.Transfer("~/Default.aspx")
>
> などとしてTransferした場合、Default.aspxにDIしてくれません。
> 改めてS2HttpModuleを通らないので、このようになってしまうとは
> 思うのですが、何らかの方法で改善されると嬉しいです。
> とりあえず、代わりにRedirectを使用することで回避しようと
> 思っています。
>
> (4) Webフォームを自動登録するよい方法は?
> 画面数が増えた場合に、やはりWebフォームもAutoRegister等で自動登録
> したいです。どのようなアプローチが考えられるでしょうか?
>
> 以上です。
> つらつらと書いてしまいましたが、よろしくお願いします。
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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