代码之家  ›  专栏  ›  技术社区  ›  Gavin

如何决定将项目拆分为哪些程序集?

  •  1
  • Gavin  · 技术社区  · 17 年前

    在决定如何将应用程序划分为程序集时,最重要的考虑因素是什么?是否有些人只是为了方便,在每个唯一命名空间(或者每个根命名空间)中创建一个程序集?或者每个应用层一个(如演示、业务/服务、数据)?或者更微妙的是,将整个模型放在一个部件中?这些真的重要吗?

    程序集过多是否会减慢速度,应用程序是否应该具有临界质量或“良好”数量的程序集?同样,当单个部件太大时,是否存在临界点?大型部件是否也会影响性能?

    谢谢


    (虽然在我的特殊情况下,如果有人想对此发表评论,我正在构建一个WCF服务,下面有一个业务层和DAL层,还有一个web站点来使用该服务。我传统上创建了许多较小的程序集,但现在我在考虑“web”、“服务”、“模型”以及“数据”(用于存储库等)的简单性。)看起来很吸引人。Web只引用服务,服务只引用模型,模型只引用数据。不知道它有多重要。)

    3 回复  |  直到 17 年前
        1
  •  1
  •   MrTelly    17 年前

    我倾向于采用垂直分割的一层/层,一旦代码库开始增长,我就会考虑水平分割,通常是围绕特定的业务功能块。例如,如果我的持久层正在与>20个左右的表,我希望将其拆分,知道在哪里拆分有点像是一门黑色艺术,它是高度领域和项目特定的。

    我使用的经验法则是,我可能会在其他地方重复使用哪一组合理的类。在我自己的代码库中刚刚经历了这个过程,有趣的是,有多少其他的东西变得很清楚,可以重新分解为基类、抽象类或接口类,然后它们又被推到一个较低级别的泛型程序集中。

        2
  •  1
  •   Brann    17 年前

    对我来说,我将一些代码隔离到dll中的主要原因是:

    • 多个项目之间的功能共享
    • 无需更新其他功能,即可轻松交付此功能的新版本
    • 例如,客户端和服务器之间的接口共享

    如果你需要这些东西,你应该考虑制作DLL。

    不利的一面是,您需要解决一些棘手的周期性依赖关系(通常使用回调完成)

        3
  •  1
  •   Jon Skeet    17 年前

    每层一个,一个用于任何“自上而下”应用程序特定的东西(比如模型),一个用于“通用工具”,对我来说似乎是合理的。在层之间拆分的一个好处是 internal

    我见过各种各样的应用程序 太多的项目-它很快就会变得笨拙,特别是当您使用单元测试将项目加倍时。

    推荐文章