C# 用于新Web API和现有ASP.NET网站解决方案的公共业务层

C# 用于新Web API和现有ASP.NET网站解决方案的公共业务层,c#,asp.net,asp.net-web-api,architecture,C#,Asp.net,Asp.net Web Api,Architecture,我们有一个活跃的、完全开发的ASP.NET web应用程序,允许用户为各种屏幕/模块创建/更新数据 现在,需要构建一个Web API,该API将仅为特定模块自动创建数据 此API将从源系统接收数据,并将发布的数据保存到我们的应用程序数据库中 (最终删除要创建的前端选项) Web解决方案中包含了自己的业务和数据层,我们正在寻找重用这些层的方法 在API中也是如此 我能想到的一种方法是在WebAPI中将业务层称为dll,但这会 提供对BL中目前不需要的其他类和方法的访问 任何人都可以建议什么是正确的

我们有一个活跃的、完全开发的ASP.NET web应用程序,允许用户为各种屏幕/模块创建/更新数据

现在,需要构建一个Web API,该API将仅为特定模块自动创建数据

此API将从源系统接收数据,并将发布的数据保存到我们的应用程序数据库中 (最终删除要创建的前端选项)

Web解决方案中包含了自己的业务和数据层,我们正在寻找重用这些层的方法 在API中也是如此

我能想到的一种方法是在WebAPI中将业务层称为dll,但这会 提供对BL中目前不需要的其他类和方法的访问


任何人都可以建议什么是正确的方法吗?

将一个解决方案拆分为多个项目并不是一件坏事。 一个项目用于BLL,另一个项目用于DAL是一个很好的方法,我绝对推荐这样做

是的,这确实意味着如果您在API中添加对BLL项目的引用,那么是的,API将可以访问比现在需要的更多的内容,但这并不是一个真正的问题。你用多少取决于你自己

另外,如果您开始使用API,您可能会发现越来越多的代码自然会朝着这个方向收敛,因此从长远来看,访问所有内容都会使生活变得更轻松

您还可以将您感兴趣的特定代码片段分解成一个额外的项目/dll,并在API中引用它,如果您看到其中的价值,但我认为这并不是特别有用


我强烈推荐的另一件事是为您的模型类创建一个单独的项目,当涉及到共享它们时,它使事情变得更加容易。

您可以在解决方案本身中创建一个新的Web API项目,并将项目引用添加到
业务
数据访问
层中。当您引用任何DLL或项目时,您可以访问所有公开可用的类型。由您决定哪些应该使用,哪些不应该使用。您可以做的另一件事是创建完整的新类库,该类库将只公开希望在Web API中使用的某些类。为WebAPI创建单独的项目,为BLL(BusinessLogic)和DAL创建一个类库项目。然后在WebAPI项目中添加BLL引用,在BLL中添加DAL引用。