1

我正在寻找关于从Asp.Net WebForms迁移到MVC的策略的一些建议。我公司目前拥有约60个项目中的格式如下解决方案:重构业务/数据逻辑准备将WebForms迁移到MVC的建议

解决方案

  • ProjectA.DataModel
  • ProjectA.Business
  • ProjectA.Web
  • ProjectB.DataModel
  • 项目B .Business
  • ProjectB.Web
  • Fra mework.Core
  • Framework.Common ...等

所有的数据模型是使用数据库第一(的.edmx)和T4模板实体框架6。数据访问代码混合在业务和Web(WebForms)项目之间。代码库的有机增长最初是从一个独立的开发者发展到一个小团队,这个团队解释了SOC方面的一些不好的做法,但是我们想借此机会纠正这个问题。

我想开始转向一个完整的MVC解决方案,并且首先要做的是确保当前驻留在Web项目中的任何数据访问逻辑被推送到业务层以获得关注点分离。研究一个最佳实践已经使我走向了工作单元和知识库模式,但是进一步的阅读似乎认为这是过度的。

什么是最好的方法来重构我的业务和数据层与当前的Web窗体模型准备MVC。其次,是向MVC迁移的一种可接受的方法,将视图引入现有的WebForms解决方案中,以创建一个混合或创建一个新的MVC项目,引用我现有的BAL和DAL,并从头开始构建应用程序UI?

关于实体框架,一切似乎都朝着CodeFirst的方向发展。如果我们想要采用最佳实践方法,这是我们需要制定的计划吗?

我们目前是一个非常小的团队,希望尝试尽可能地重复使用我们现有的项目并尽可能重构以进入开始迈向MVC的位置。

任何想法,我如何开始接近这个赞赏。

谢谢

+1

您可能会感兴趣:http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html – Mik378

+0

谢谢Mik378我会带着通读该链接 – stevenknox

+0

>一切似乎正在走向CodeFirst方法....是的,时间很长。在过去的几年里。 Code First是前进的方向。 – trailmax

回答

1

讨厌的应用程序,你在那里。 Anywas,首先要注意的是MVC是一种UI模式。因此,在一个设计正确的应用程序中,从WebForms到Mvc的swtich意味着只需更改UI层。

我要开始向完全的MVC解决方案移动和感觉做的就是确保目前居住在Web项目被推到业务层得到关注点分离的任何数据访问逻辑的第一件事

不!数据访问逻辑应该在DAL中(提示:它是一个首字母缩写),而不是BL,而不是UI。只有持久性。BL和UI会要求DAL通过存储库保存/检索它们的对象。顺便说一下,EF只处理db。不要错误地在Ef实体之上构建业务对象。一个模型的业务概念和行为,另一个模型数据库访问。它们通常不兼容。在处理除持久性以外的任何事情时,请忽略您拥有数据库或ORM。

对此的最佳实践进行研究使我走向了工作单元和存储库模式,但进一步阅读似乎认为这是过度的。

只有你有一个非常简单的应用程序,你不关心维护它,它是过度的。我知道很难相信,但可能超过80%(或多或少的随机数)的开发人员仍然不明白如何正确实施Repository模式,这就是为什么它对它们变得无用。简而言之,回购使用 EF,但它不是建立在它的顶部。回购将业务/用户对象“转换”为EF实体,反之亦然。

回购界面应该从来没有暴露IQueryable或事实,你在使用数据库的第一位。所以,没有通用的存储库,也没有公开EF实体。另外,Bl/UI不应该创建查询(这意味着他们知道数据如何存储 - DAL实现细节),这是存储库的工作。更高的层只是告诉知识库他们想要什么,从来没有如何来做到这一点。

其次是迁移到MVC带来的访问量,以现有的WebForms解决方案来创建一个混合或创建一个新的MVC项目,参考我的现有BAL和DAL,并开始从头开始构建应用用户界面的接受的方法?

虽然您可以在同一个项目中混合使用WebForms和Mvc,但最好不要这样做(减少头痛)。从头开始mvc应用程序,然后将Web表单页面移植到它。

+0

感谢您的详细回复。我们将看看使用存储库和UOW,并遵循上面提到的一些最佳实践。到达那里可能需要更长的时间,但我们也可以借此机会做对。我们也将通过创建一个新的MVC网站来迁移webforms,并且也是这样。 – stevenknox

+1

@belfastdev我处于类似的情况。你是如何进步的?我可以阅读的任何好的参考? – mark1234