MVC5和Web API 2的单独项目

时间:2014-01-03 07:47:53

标签: c# asp.net data-access-layer asp.net-mvc-5 separation-of-concerns

我是 MVC Web API 的新手。我创建了两个独立的项目。一个ASP.NET MVC 5(MyUI)和其他ASP.NET Web API 2(MyApi)。我想将我的API项目与我的UI层分开。

MVC项目(MyUI)中的AccountController类基本上与API项目中的AccountController(MyApi)相同。我首先考虑使MyUI.AccountController成为MyApi.AccountController的子类,但后来我很快意识到第一个继承自Controller,第二个来自ApiController类型。

所以我的问题是:

  1. 为了从MVC 5项目中删除数据访问逻辑,我应该 只需将AccountController转换为包装类即可 本质上从中调用相应的方法 MyApi.AccountController?
  2. 有更好的方法吗?
  3. 修改

    My solution structure

    编辑2: 在试图阐明问题的同时,我意识到我的错误。我的困惑来自嵌入在API项目中的ASP.NET身份实现。这需要移动到数据访问层,并且两个控制器都需要以相同的方式访问它们,这是一种完全不同的蠕虫:)

    谢谢!

3 个答案:

答案 0 :(得分:1)

方法1似乎是一个合理的解决方案,但我建议创建一个新的类库,然后放置数据逻辑。这样,MVC项目和Web Api项目就可以连接到该类库。 原因是你永远不知道你是否写了另一个UI层,服务层或其他连接层。然后,所有这些层都可以连接到相同的数据逻辑层。

答案 1 :(得分:1)

将公共实现提取到单独的项目(例如类库)。无论您如何访问它,您的业务逻辑必须相同。毕竟,Web服务和站点只是相同信息和相同控制逻辑的视图。在将来,您可能需要在WPF中编写 fat <​​/ em>客户端或在WCF中编写服务,并且您不想重写所有内容,是吗?

答案 2 :(得分:1)

我认为您在询问分层应用程序。基本上选择取决于要求。如果您遵循以数据为中心的设计,请检查此分层

enter image description here

关于DI,ORM,存储库模式,SOLID原理的研究