如何集成ASP.Net模型视图演示器(MVP)模式和标记为[WebMethod]的静态页面方法?

如何集成ASP.Net模型视图演示器(MVP)模式和标记为[WebMethod]的静态页面方法?,asp.net,json,mvp,wcsf,Asp.net,Json,Mvp,Wcsf,在asp.net应用程序中,我希望将Webclient软件工厂(WCSF)及其关联的模型视图演示器模式(MVP)与Page方法结合使用,Page方法是.aspx视图上标记有[WebMethod]属性的静态方法 但是,aspx页面上的静态方法似乎打破了模型-视图-演示者模式,因为页面上需要一个实例方法来拥有与视图对话所需的演示者和控制器的上下文 如何在WCSF中扩展asp.net的MVP模式以支持页面上的[WebMethods],即视图?我认为,通过使用asp.net AJAX Web服务而不是静

在asp.net应用程序中,我希望将Webclient软件工厂(WCSF)及其关联的模型视图演示器模式(MVP)与Page方法结合使用,Page方法是.aspx视图上标记有[WebMethod]属性的静态方法

但是,aspx页面上的静态方法似乎打破了模型-视图-演示者模式,因为页面上需要一个实例方法来拥有与视图对话所需的演示者和控制器的上下文


如何在WCSF中扩展asp.net的MVP模式以支持页面上的[WebMethods],即视图?

我认为,通过使用asp.net AJAX Web服务而不是静态页面方法,您可以接近所需的内容。web服务的优点是不是静态的,并且取决于视图的实现方式(我不熟悉WCSF MVP模式的细节),您可能会使web服务成为您的“视图”层……或者至少是相当接近的层

我在一个项目中也做过类似的事情。我最终需要创建一个精简的纯数据类,该类被web服务序列化为JSON,以便将数据从模型传输到“视图”,但web服务的方法与在视图上作为事件公开的方法基本相同


我喜欢这种方法的一点是,所有的比特,包括web服务,都是可测试的。

我最近在做一个MVP模式的项目时遇到了类似的问题,我希望有很多AJAX集成。您最好使用符合您所称的MVP模式的web服务

请记住,PageMethod只不过是当前页面中的web服务。它没有访问任何页面级对象的权限,因此在那里使用它的好处是最小的。我实际上认为它们是不利的,它们给了开发人员(不熟悉这个概念的人)可以与页面级对象交互的想法

硬币的另一面是PageMethod所做的,如果PageMethod不需要与模型交互(比如,它处理复杂的算术计算,在C#/VB.NET中比JS更快),那么该操作实际上是一个UI级操作,如果要将应用程序转换为WinForm,那么该操作很可能是无关的(或者别的什么)


请记住,在UI级别与数据的所有交互都是特定于该UI实现的。如果您要为演示者编写不同的UI,则很可能会有不同的UI级别数据交互。

删除标记asp和.net,并替换为单个标记asp.net。我喜欢您对页面的优缺点的解释方法以及与web服务的比较。我希望查看是否有其他人发表评论。因此,我可以集成web服务而不是页面方法,但我认为我无法看到web服务调用适合MVP模式的位置。当视图(即浏览器上的页面)作为异步请求调用数据服务时,应该根据什么标准来确定是否使用web服务?因为需要web服务的原因是执行UI级操作。每个UI实现都有不同的方法来处理操作,web窗体使用web服务,winform可能有windows服务或其他