C# 在多个MVC应用程序之间共享代码并部署不同版本的最佳方法

C# 在多个MVC应用程序之间共享代码并部署不同版本的最佳方法,c#,asp.net-mvc,architecture,C#,Asp.net Mvc,Architecture,我们目前有一个数据库,其中包含用户、客户、产品和订单,这些数据在逻辑上由模式分隔。然后,我们有几个MVC.net应用程序通过自己的BLL访问数据库。这些应用程序中的每一个都有自己的功能,并与其他一些/所有应用程序共享某些方面 目前,一些代码在这些BLL中重复,维护起来有点混乱。然而,它确实允许我们快速开发特性并独立部署每个应用程序(假设这里主要是数据库工作) 我们已经开始开发一个单独的访问层,它被适当地分离出来,位于数据库之上,并被我们所有的MVC.net应用程序使用。逻辑上,这是有意义的,因为

我们目前有一个数据库,其中包含用户、客户、产品和订单,这些数据在逻辑上由模式分隔。然后,我们有几个MVC.net应用程序通过自己的BLL访问数据库。这些应用程序中的每一个都有自己的功能,并与其他一些/所有应用程序共享某些方面

目前,一些代码在这些BLL中重复,维护起来有点混乱。然而,它确实允许我们快速开发特性并独立部署每个应用程序(假设这里主要是数据库工作)

我们已经开始开发一个单独的访问层,它被适当地分离出来,位于数据库之上,并被我们所有的MVC.net应用程序使用。逻辑上,这是有意义的,因为我们现在可以在应用程序之间共享代码。例如,应用程序A可以用与应用程序B相同的方式检索客户记录。问题在于,当我们想要部署应用程序时,我们无法部署一个应用程序,我们需要将它们全部部署


我们可以考虑哪些其他的架构方法可以让我们在我们的应用程序之间共享代码并独立地部署这些应用程序?

< P>一个常见的解决方案是基于服务(基于任意通信层REST、WCF、消息总线、您的版本选择)。并将这些服务作为独立服务部署到您的基础架构中

现在,您可以独立于消费者来发展、扩展和部署您的服务。现在不需要部署所有应用程序,只需部署更改的服务(与旧服务并排)和新应用程序


这在服务版本控制、配置管理、集成测试、少量通信开销等方面增加了相当多的复杂性,因此您必须权衡利弊。网络上有很多文章是如何构建这样一个架构的。

什么是BLL,你是否误会了DLL(汇编)?@ ErkkiPopsBLL是商业逻辑层的缩写。你有没有考虑创建一个Web API?