ASP.NET MVC和Web API共享类库项目

时间:2016-06-04 15:41:40

标签: asp.net .net asp.net-mvc asp.net-web-api

我将在.NET中构建以下应用程序,我对正确的架构有几个问题:

  1. 控制台应用程序:读取本地文件并将数据更新到Azure中的SQL数据库
  2. ASP.NET MVC:用于与上载数据交互到SQL数据库的仪表板站点
  3. Web API:处理业务逻辑和数据访问。
  4. 我首先想到使用Web API作为服务数据和业务逻辑的核心。但是,整个项目都需要一个类库,这样他们所有人都可以说同一种语言"在业务对象方面。示例:我在控制台应用程序中有一个SMS对象,它将向Web API提交数据。此Web API也应具有相同的SMS对象。接下来,ASP.NET将显示SMS数据,因此也应该访问同一个对象。但由于这是一个MVC应用程序,它将拥有自己的数据对象。

    对此有何正确的解决方法? Visual Studio中的解决方案树应该如何?

    感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这并不意味着因为它是一个MVC应用程序,它需要拥有自己的数据对象。我过去做的是创建一个类库并添加对它的引用MVC与此项目相关的DLL。然后我将使用所有必需的MVC属性来装饰对象,最后我将向我的应用程序中的所有项目添加对此类库的引用,这些项目需要它们,如Business Layer,Web api层和MVC (UI)图层。

在您的方案中,它可能是这样的:

Common object library

答案 1 :(得分:2)

不要使用MVC,制作WebApi服务并选择像反应或角度的Web UI框架。 MVC不值得使用了。

这样,每个人都可以连接到WebAPI,您的控制台应用程序,您的网站/仪表板,甚至是未来的移动应用程序。

如果您将数据库从sql server更改为txt文件(xD),那么您的控制台应用程序也必须更改。仅使用单个API与数据库交互将有效地分离所有图层。

  

但是,整个项目需要一个类库   所有这些

是的,但您可以使用共享库甚至共享项目来实现此目的。它只是一堆课......

你的所有逻辑都应该在webapi中。包括控制台应用程序部分。它应该只读取数据,然后连接到API。

因此,在这种情况下,您不需要在所有项目中使用相同的模型,因为webapi业务模型的模型可能比模型与其交互更复杂。

此外,将仪表板文件提供给客户端(浏览器)将非常简单,因为只需要发送html,js和css文件。任何服务器都可以,也不会绑定.Net或您喜欢的任何服务器端代码。

enter image description here