【问题标题】:How to transform Model-View-Presenter architecture to WebAPI?如何将 Model-View-Presenter 架构转换为 WebAPI?
【发布时间】:2014-12-09 21:33:00
【问题描述】:

现在,我们正在使用具有模型-视图-演示者 (MVP) 架构的经典 ASP.NET WebForms 项目。我们公司希望转向一种基于 RESTful API 在应用程序之间共享数据的通用方式。因此,我们正在寻找将 MVP 架构转换为 WebAPI 项目的方法。演示者中有很多代码,将代码移动到另一层需要很长时间。我们正在寻找一种转换为基于 WebAPI 的架构的好方法。

现在,带有代码的 .aspx 页面与演示者层之间存在强绑定。一种想法是在 Presenter 和 View 之间再放置一层。这样我们就可以用更现代的页面替换旧的 .aspx。例如,

         模型
       演示者
旧视图 | WebAPI 层
                新视图

这是个好主意吗?我们希望听到您对此计划的意见。有哪些陷阱?有更好的想法吗?有什么经验吗?

也许这个问题不适合stackoverflow,因为它更像是一个讨论请求。如果是这样,欢迎提出更好的提问地点的建议。

【问题讨论】:

    标签: asp.net asp.net-web-api mvp restful-architecture


    【解决方案1】:

    问题在于 Presenter, or Supervising Controller 不能很好地映射到 REST 模型中,因为它们既有状态也有动作与之关联。

    WebAPI 层实际上与您的存储库层的映射比它与您的演示者的映射更紧密。

    Presenter 将存在于客户端,而不是存在于服务器上。

    我的建议是不要走这条尝试将两者混合在一起的道路。 总会有巨大的阻抗失配,您最终会得到一个对其他客户端不是很有用的 API。特别是如果您想迁移到更现代的移动/Web 应用程序架构。

    【讨论】:

    • 嗨乔希,感谢您的回答。我们的演示者执行类似Initializing the view 的“演示者”任务,但也执行更多类似于repository-、data access- 和business logic 的其他任务,例如检查输入是否有效并调用将数据存储在数据库。后一种方法似乎可以在 API 中使用。然后我们可以将表示方面移动到视图中。我对吗?还有什么其他的路径是可取的?
    • @user2609980 - 是的,你说得对,验证将成为 API 层的一部分,但语义是非常特定于 HTTP 的。我只是不知道尝试在 Web API 世界中重用您的 Presenters 代码会有多大价值。至少不是直接来自演示者本身。我会建议彻底打破,并简单地弃用 MVP 的东西。我意识到这说起来容易做起来难,但这两者并不能很好地融合。
    • @user2609980 - 知道我不会轻易提出这个建议。我是作为真正拥有quite a bit of MVP experience 的人来做的。
    • 谢谢,他们确实大量使用了 SessionData。那将不可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多