【发布时间】:2010-10-15 17:57:36
【问题描述】:
企业业务应用程序的基础构建块有哪些?我正在考虑多个应用程序共享的可重用组件:
- 更快地扩大规模
- 通过消除重新构建来加速开发
- 通过最大限度地减少关键故障点来提供稳定的基础架构
我在集中化/标准化方面看到的一些成功概念示例:
- 日志记录
- 排队
- 调度
【问题讨论】:
企业业务应用程序的基础构建块有哪些?我正在考虑多个应用程序共享的可重用组件:
我在集中化/标准化方面看到的一些成功概念示例:
【问题讨论】:
我会添加 GUI 小部件,使团队能够在整个应用程序中保持相同的外观。
同样,在一个大型项目中,多个团队必须在子系统上工作,这些子系统将在某个时候组合在一起,一组类似子系统的设计模式是非常宝贵的。
此外,创建一组通用库(或者在采用 Boost 的 C++ 中更好),当需要通用实用程序时可以使用这些库,效果很好。
我还会在早期创建带有示例的测试框架。我发现如果你有一个用于测试子系统的模板,那么人们就会使用它。在早期没有任何测试框架的情况下,您一定会得到所有极端的开发人员测试。
【讨论】:
当您说组件时,您是指代码组件还是基础架构组件?我认为基础设施(支持服务和流程),而不是代码,对质量、速度和易于开发的好处最大。您提供的示例现在在大多数语言的标准库中,或者非常特定于应用程序/用例。
我也只是假设版本控制是给定的,因为它对所有开发都是不可或缺的。
我会说最重要的基础设施是持续构建/自动化测试。这让人们可以编写他们想要的任何代码、签入并确保它可以与其他人的代码一起使用。
其次是常用库。这些让人们可以更快地开发并建立外观、感觉和设计的标准(希望是好的)。随着常用库的使用越来越多,持续构建的重要性也在增加,因为这些库的微小变化可能会导致回归。
不过,通用库的一个问题是,它们需要付出很多努力才能设计得很好——因此它们值得重用——而且需要很长时间才能达到这一点。大多数会从特定于一个项目开始,然后有人会将其破解到他们的项目中,然后进行一些分支,然后复制和粘贴。一段时间后,可能是几年后,有人会审核代码并开始将它们合并到一个共同的地方。应该为升级公共库以及如何(或是否)同时拥有它们的两个版本制定计划。另一个隐藏的缺点是它们可以在短期内加快开发速度,但从长远来看会阻碍开发,因为人们会被锁定在旧版本中(第三方库更是如此)。
第三个是构建工具。这意味着可以使用通用工具来简化构建、签出、搜索以及以任何方式与代码交互的过程。当您提交补丁时自动将错误标记为已解决,或通知持续构建者依赖项已更改,或在您提交测试之前自动运行测试,使测试易于(且快速)运行。
第四是密封构建,它是构建工具的简单扩展。这意味着应用程序是自包含的。这有两个好处:1)机器重用更容易,更重要的是,2)开发人员上手非常容易 - 他们不需要安装额外的库,或更改 /etc 中的某些内容,或在他们的环境 - 它只是构建和运行。
我能想到的其他一些:
【讨论】:
不完全在基础设施领域:
如果没有这些,您将有一系列针对同一客户的应用程序开发活动。
- 日志记录
- 排队
- 调度
这些都应该是现成的,以满足使用它们的应用程序的需求。例如。 J2EE 构建应用程序的日志记录解决方案与 .NET 不同。 (在一个重要的企业中,单一文化本身就是一个问题。)
【讨论】: