第3章 DSL驱动的应用程序开发
本章内容
- 将内部和外部DSL集成进核心应用程序
- 管理错误和异常
- 优化性能表现
前两章我们在用户和实现的层次对DSL进行了多方位的观察和探讨。可以看到,提高抽象的表现力可使代码更易于理解,可以帮助缩短与领域专家之间的反馈循环。不过,不管DSL设计得多么出色,归根结底你要把它和核心的Java应用程序模型集成在一起。(倒不一定是Java应用程序,这里只是举例。)集成牵涉到的众多方面也需要你未雨绸缪。以上种种,以及用DSL来开发一个完整应用程序会遇到的其他问题,就是本章的讨论内容。
一般来说,我们会用平台上的主要语言(比如Java)来开发应用程序的主体部分。然后,对于一些业务规则或者配置规范,我们可以用比Java表现力更强的语言写成DSL来表述。那么,DSL部分应该怎样跟核心应用程序无缝集成呢?DSL的演变往往独立于应用程序的主体部分,所以架构上要足够灵活,不能妨碍DSL时时的改变,还要使变化对应用程序主体的影响尽可能小。本章对以上问题的讲解计划参见图3-1。
图3-1 了解本章学习计划,学习DSL驱动应用程序开发的各种问题
关于DSL驱动的应用程序开发,我们主要探讨三个方面:
- 集成问题
- 处理异常和错误
- 管理性能表现
DSL不能独立发挥作用。集成DSL到应用程序需要考虑诸多问题,其中有一项是错误处理:无论DSL还是核心应用程序都有可能产生异常。你打算怎样向DSL用户报告错误?又打算怎样处理?(我们将在3.4节尝试解答。)DSL使用中还可能出现各种性能问题,本章结尾部分对此有个简要的总结。
读完本章,你将学会安排应用程序的架构,使之能与别种语言编写的DSL无缝集成。