Web开发者晋级之道:架构、模式和领域驱动设计
王西友
前言
Web应用程序是企业应用开发的主流领域之一,它一般采用“客户端-服务器”架构,用户在客户端的浏览器上进行人机交互,而重要的逻辑和数据计算则在服务器上进行。随着移动互联网的普及,手机App逐渐兴盛,它比Web应用程序有更好的用户体验,在使用的灵活性上也远超Web应用程序,以至于出现了“手机App会代替Web应用程序”的说法。但这种说法忽略了一个事实:一个软件,尤其是企业应用软件,其核心在于解决问题的领域模型。从这个角度看,手机App和Web应用程序的区别仅仅在于人机交互方式的不同,手机App同样采用“客户端-服务器”架构,这和Web应用程序一样,其最有价值的核心代码仍然运行在服务器上。事实上,手机App和Web应用往往使用的是同一个服务器。
随着物联网技术的发展,软件的交互方式更加丰富,很多联网的硬件可以和软件系统进行交互,而不仅限于人机交互。这些智能硬件作为新的交互方式将会大大改变软件的模式。手机App和Web应用程序作为流行的交互方式,将与智能硬件交互方式共存。交互方式本质上也是企业应用中流程控制的一种方式,就算Web应用程序会进化到所谓的“流程嵌入软件”的程度,运行在服务器端的越来越复杂的领域模型代码也不会改变。
开发一个功能强大、性能稳定、使用灵活和易扩展的Web应用程序离不开编程语言的支持,更离不开软件工程的支持。如果说软件产品是现实的抽象,那么软件工程就是抽象的抽象,或者说是对软件开发过程和解决方案的提炼与重用。对于开发人员而言,编程语言是基础,但其对软件工程的理解程度决定了他所开发的软件的质量。可以说软件工程的重要性要远大于编程语言本身,毕竟软件是思想的产物,而语言只是表达思想的手段。
目前,已经出版的Web开发类图书大多都把重点放在了Web框架的使用和项目的编码实现上,而鲜见一本从软件的设计思想、架构和开发模式的角度讲解Web开发的图书。这便是笔者写作…