【问题标题】:How do I integrate the ASP .Net Model View Presenter (MVP) pattern and static page methods marked as [WebMethod]?如何集成 ASP .Net Model View Presenter (MVP) 模式和标记为 [WebMethod] 的静态页面方法?
【发布时间】:2010-09-13 13:20:38
【问题描述】:

在一个 asp.net 应用程序中,我想将 Webclient Software Factory (WCSF) 及其关联的模型视图演示器模式 (MVP) 与 Page Method 结合使用,即 .aspx 视图上的静态方法用 [WebMethod] 属性标记。

然而,aspx 页面上的静态方法似乎打破了模型视图演示者模式,因为页面上需要一个实例方法来获得视图与之对话所必需的演示者和控制器的上下文。

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

【问题讨论】:

  • 删除标签 asp 和 .net 并替换为单个标签 asp.net。

标签: asp.net json mvp wcsf


【解决方案1】:

我最近在做一个 MVP 模式的项目时遇到了类似的问题,并且想要大量的 AJAX 集成。您最好拥有符合您所称的 MVP 模式的 Web 服务。

请记住,PageMethod 只不过是一个 Web 服务,只是在当前页面中。它无法访问任何页面级对象,因此拥有它的优势很小。我实际上认为它们是不利的,它们让开发人员(不熟悉这个概念)认为他们可以与页面级对象进行交互。

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

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

【讨论】:

  • 我喜欢您对页面方法的优缺点的解释以及与 Web 服务的比较。我想看看还有没有人cmet。
  • 所以我可以集成 Web 服务而不是页面方法,但我认为我看不到 Web 服务调用适合 MVP 模式的位置。什么标准应该确定视图(即浏览器上的页面)何时调用数据服务作为对 Web 服务的异步请求?
  • 它适合,因为您需要 Web 服务的原因是执行 UI 级别的操作。每个 UI 实现都会有不同的方式来处理操作,一个 webform 使用 web 服务,一个 winform 可能有一个 windows 服务或其他的东西
【解决方案2】:

我认为您可以通过使用 ASP.Net AJAX Web 服务而不是静态页面方法来接近您正在寻找的内容。 Web 服务的优点是不是静态的,并且取决于您的视图是如何实现的,(我不熟悉 WCSF MVP 模式的细节)您可能会将 Web 服务设为您的“视图”层..或至少相当接近。

我在我正在进行的项目中做过类似的事情。我最终需要创建一个精简的纯数据类,该类由 Web 服务序列化为 JSON,以将数据从模型传送到“视图”,但 Web 服务具有基本相同的方法,这些方法将作为事件公开视图。

我喜欢这种方法的一个原因是所有位(包括 Web 服务)都是可测试的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2020-08-19
    • 1970-01-01
    相关资源
    最近更新 更多