【问题标题】:Deploy Asp.Mvc and Web.Api in the same solution, to IIS将 Asp.Mvc 和 Web.Api 在同一解决方案中部署到 IIS
【发布时间】:2020-01-01 17:38:38
【问题描述】:

我有一个包含 3 层(数据、逻辑、服务)的 Visual Studio 解决方案,我还有一个使用这些层的 Asp.Mvc 5 应用程序和 WebApi,以在外部公开一些功能。

问题是你如何处理这种结构的部署,因为如果你发布,Mvc app 和 Api separetley 你基本上会复制业务层,所以下次你将不得不在 2 个站点中再次重新部署?

我现在将在 IIS 中拥有什么:

目前在我的 IIS 文件夹中:

  • 网页(文件夹)

    • Bin -> Data.dll、Logic.dll、Service.dll(重复)

还有

  • API(文件夹)

    • Bin -> Data.dll、Logic.dll、Service.dll(重复)

问候

【问题讨论】:

    标签: c# asp.net-mvc visual-studio asp.net-web-api


    【解决方案1】:

    为什么不只是 mvc 应用程序仅作为表示层工作并使用您的 api?通过这种业务逻辑将不会重复,并且您未来的表示层也可以使用相同的 API ....

    【讨论】:

    • 我在一些网站上看到过这个解决方案,但是很难用这种架构正常工作,因为我可能至少需要在 Mvc 应用程序中复制我的实体,因为我不能引用其他层
    • 是的,我明白了,您可能需要一个带有实体/模型的骗子项目以用于剪切数据..
    【解决方案2】:

    您的服务(web api)和应用程序(Mvc)基本上是 2 个不同的应用程序。所以你应该单独部署它们。它们将由 2 个不同的域(至少来自不同的端口)提供服务。

    每当您对服务进行更改时,您只需部署该服务。 Web 应用程序也是如此。

    但是,我觉得对于这个项目来说足够了,单个 MVC 应用程序(您的 Web 应用程序),带有用于公开一些端点(您的服务)的 WebApi 控制器。所以你只会部署一个 MVC 应用程序。

    【讨论】:

    • 这是真的,但是,如果我必须更改我的应用程序的核心任何其他 3 层(数据、逻辑、服务),我将需要将这些层部署在 2 个不同的文件夹中,Web /Bin 和 Api/Bin,这是个大问题,基本上它们是 2 个不同的应用程序,但它们消耗相同的层
    • 然后将它们分开。我没有看到令人困惑的部分。
    • 我认为这不是为您的核心层提供共享文件夹的最佳选择。我现在将在我的 IIS 文件夹中:Web(Folder) - Bin -> Data.dll, Logic.dll, Service.dll (Duplicated) 以及 Api(Folder) - Bin -> Data.dll, Logic.dll , Service.dll(重复)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多