ASP .Netモデルビュープレゼンター(MVP)パターンと[WebMethod]としてマークされた静的ページメソッドを統合するにはどうすればよいですか?
質問
asp.netアプリケーションで、Webclient Software Factory(WCSF)とそれに関連するModel View Presenterパターン(MVP)の使用を、Pageメソッド(.aspxビューの静的メソッド)と組み合わせたい[WebMethod]属性でマークされています。
ただし、aspxページの静的メソッドは、Viewが対話するために必要なPresenterとControllerのコンテキストをページに持つインスタンスメソッドが必要であるため、Model View Presenterパターンを壊すように思われます。
WCSFのasp .netのMVPパターンを拡張して、ページ上の[WebMethods](別名View)をサポートするにはどうすればよいですか
解決
最近、MVPでパターン化されたプロジェクトを行い、AJAXの統合を多数望んでいるときに、同様の問題がありました。呼び出すMVPパターンに準拠したWebサービスを用意するのが最善です。
PageMethodは、単に現在のページにあるWebサービスにすぎないことに注意してください。ページレベルのオブジェクトにはアクセスできないため、そこにあることの利点は最小限です。私は実際に彼らは不利だと思います、彼らは開発者(概念に不慣れな)にページレベルのオブジェクトと対話できるという考えを与えます。
ページメソッドがモデルと対話する必要がない場合(たとえば、JSよりもC#/ VB.NETの方が高速な複雑な算術計算を処理する場合)、コインの裏側は、PageMethodが実行していることです。この操作は実際にはUIレベルの操作であり、アプリをWinForm(または他の何か)に変換する場合はおそらく無関係です。
UIレベルでのデータとのやり取りはすべて、そのUI実装に固有のものであることに注意してください。プレゼンター用に別のUIを作成する場合、UIレベルのデータインタラクションが異なる可能性があります。
他のヒント
静的ページメソッドの代わりにASP.Net AJAX Webサービスを使用すると、探しているものに近づくことができると思います。 Webサービスには静的ではないという利点があり、ビューの実装方法によっては(WCSF MVPパターンの詳細に詳しくないため)、Webサービスを「ビュー」にすることができます。レイヤー。または少なくともかなり近いもの。
現在取り組んでいるプロジェクトで似たようなことをしました。モデルから「ビュー」にデータを運ぶためにWebサービスによってJSONにシリアル化されたシンデータのみのクラスを作成する必要がありましたが、Webサービスには基本的にイベントとして公開される同じメソッドがありましたビューで。
このアプローチで気に入った点の1つは、Webサービスを含むすべてのビットがテスト可能であることです。