我应该在一个解决方案中有多个项目,还是在共享相同数据库的控制台和 Web 应用程序中有多个解决方案?

Rob*_*lls 0 c# asp.net asp.net-mvc visual-studio

我目前有一个 asp.net 控制台应用程序,它只是通过 API 从远程服务器检索大量数据,并使用实体框架将其保存到 SQL 数据库中。该应用程序需要 3-4 天才能运行,我大约每个月手动运行一次。

该项目分为模型类、存储库类以及应用程序本身。

我现在需要构建一个 ASP.NET MVC Web 应用程序,它允许用户查看已检索的数据,并正在寻找有关如何最好地构建此数据的建议。

我是否在我的解决方案中创建一个新的 ASP.NET MVC 项目并将其设置为启动应用程序,引用相同的模型和存储库类?如果是这样,我该如何运行我的控制台应用程序?或者最好将这些作为单独的解决方案,只引用同一个数据库?

有没有更好的方法来做到这一点?(即,是否有某种方式可以将控制台应用程序重建为前端的一部分并使用队列或工作人员定期获取数据?)

谢谢你的帮助,罗比。

Chr*_*att 6

同样的解决方案。不同的项目。通过在同一个解决方案中,您可以轻松地引用共享组件。我实际上建议将您的实体、存储库等分解为第三个项目,一个类库,然后您的控制台应用程序和 MVC 应用程序都将引用。

如果您不将所有内容都放在同一个解决方案中,那么您要么陷入 DLL 地狱,您必须在其中构建项目并手动将 DLL 复制到另一个项目中,添加引用,然后使所有内容保持最新当您对该 DLL 进行更改时。涉及的项目越多,熵就越大,并且您的项目最终在不同版本的 DLL 上运行的可能性就越大。

另一种选择是创建一个包含共享组件的 Nuget 包,将其托管在您自己的私有存储库中,然后将其添加到每个需要它的项目中。然而,虽然设置所有这些非常容易,但它并不是 100% 无摩擦的,您必须记住在进行更改时重新打包和重新发布 Nuget,然后在每个引用项目中单独更新包。

长话短说,除非有很好的理由不这样做,否则相同的解决方案始终是最好的方法。这是唯一的“它只是有效”的方法。