不同的 UI 共享相同的 BLL 和 DAL

Posted

技术标签:

【中文标题】不同的 UI 共享相同的 BLL 和 DAL【英文标题】:Different UI's sharing same BLL and DAL 【发布时间】:2012-04-23 19:36:16 【问题描述】:

我们使用分层 UI、BLL、DAL 架构编写了一个系统。

我们现在需要编写一个使用相同数据库的网站,并将使用多达 50% 的现有系统 BLL 和 DAL。

我不想创建一个单独的解决方案并“复制并粘贴”BLL 和 DAL,因为随着更改的进行,许多内容都必须在两个解决方案中复制。

我考虑为网站提供自己的 BLL 和 DAL,并引用已编译的系统 DLL 来删除重复项,但我担心这可能会被证明是不切实际的,因为这两种解决方案都会经常更新。

如果可能的话,我希望这两个项目在逻辑上是分开的。有什么建议吗?

【问题讨论】:

【参考方案1】:

为什么不向解决方案添加另一个项目,即网站项目,并让它引用 BLL 和 DAL 项目?

没有什么能阻止您在同一个解决方案中拥有一个 Web 应用程序、一个 WPF 应用程序、2 个类库甚至一个 Silverlight 应用程序!

所以你的解决方案最终会是这样的:

--Solution  
  |  
  --- Main appp  
  |  
  --- BLL  
  |  
  --- DAL  
  |  
  --- Web App  

【讨论】:

我如何将其设置为同一服务器上的两个独立网站?还是我只需要将 WebApp 文件夹配置为单独的应用程序? 没错。将它们放在同一个解决方案上只是共享一些 DLL 的一种方式。这两个网站将愉快地(并且自动地)彼此完全独立地运行。

以上是关于不同的 UI 共享相同的 BLL 和 DAL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UI、BLL、DAL 之间使用 DTO

n 层架构 - BLL、DAL 和接口。啥是最佳实践?

除了实例化 DAL 的 BLL 之外,还有啥选项允许在 n 层解决方案中进行单元测试,而不会将 DAL 暴露给 UI 或将 BLL 暴露给 DAL?

通用 DAL / BLL 类

在 Web 应用程序中分离 BLL、PL 和 DAL

具有存储库模式的实体框架 DAL、BLL