一个层的多个DLL

时间:2013-02-15 19:06:52

标签: vb.net

我通常将项目分成多个层,即表示层,业务逻辑层和数据逻辑层。有时我会使用命名空间分隔图层,有时我会有三个单独的DLL(使用层)。

我看到开发人员将层分成多个DLL。例如,我曾经看到一个包含一百多个不同项目文件的业务逻辑层,因此有超过一百个不同的DLL。此外,MSDN文档显示.NET框架包含多个DLL,例如mscorlib等。

我相信拥有单独DLL的原因在于它最大限度地减少了内存占用,并且它允许多个开发人员处理不同的项目,例如一个团队可以在一个项目上工作,另一个团队在另一个项目上工作等。

我在两个开发团队工作。开发人员使用什么标准来决定拆分成单独的DLL?

2 个答案:

答案 0 :(得分:1)

  

将图层分成多个DLL的原因是什么?

有很多理由这样做。

  1. 它增加了隔离,这可以帮助编译器防止混淆问题。如果不明确添加引用,则不能“偶然”在其他DLL中使用内部类型,这样编译器可以帮助您保持代码更清晰。
  2. 如果在运行时不使用程序集,则不会加载它。这可以减小内存占用。 (但是,如果使用了所有程序集,它将无济于事。)
  3. 它在您的API和项目中提供逻辑分离,这有助于组织和代码的可维护性。请注意,太多的项目与太少的项目一样糟糕(或有时更糟),因为许多项目增加了可能无益的复杂性。

答案 1 :(得分:0)

出于多种原因将代码分成多个程序集,其中一些技术比其他原因更具技术性。程序集可以像命名空间一样用于代码的逻辑分组,实际上,一种常见的模式是将大型名称空间(关注点)分离为该命名空间的单独程序集。但这个原因绝对不是使用多个组件的最佳理由。

代码重用就像是将代码放入不同程序集的首要因素。例如,您可能有一个控制台应用程序,并且所有代码都是编译的一个执行文件。稍后,您决定为同一应用程序创建一个Web应用程序。您可以将解决方案重构为三个项目,而不是将核心代码从控制台应用程序复制到Web应用程序:代码代码的类库(主要实现),控制台应用程序(已存在)和Web应用程序。控制台应用程序和Web应用程序项目/程序集将引用类库项目/程序集,并且主要代码将在两个实现中重用。请注意,这是一种过于简单化的做法。

将代码分成多个程序集以在管理依赖项时分离关注点的另一个原因。在这种情况下,您可能拥有需要引用您可能不希望在核心应用程序集中引用的面向Web的依赖项(其他程序集)的代码。您可以这样做,以便您可以重用核心程序集,而不需要在不需要时通过将应用程序分解为其他程序集/项目来获取不必要的依赖项。

另一个原因是促进大型团队的并行开发,其中子团队可能各自在不同的程序集上工作,有助于减少处理应用程序不同问题的开发人员之间的“冲突”数量。