本篇讨论应用配置方面,通过比较J2EE和ASP.NET的配置方式来讨论优劣,范围限制在servlets引擎和ASP.NET框架方面,其实各种基于这个基础的框架和组件都会提供自己的配置,本文就不包含了。
在ASP中应用的配置是通过GLOBAL.ASA,基本是代码方式,通过应用、会话的事件来作用于应用全局,可以称之为“脚本配置方式”。在ASP.NET中增加了web.config文件,是XML方式,作用于全局,可以称之为“XML配置方式”。总的来说,ASP.NET的配置还是很清晰、简单的,容易维护,但是有一个非常大的缺点,不能扩展,这也与ASP.NET提供的扩展机制有关。
通过配置改变应用的行为,是灵活性和可扩展性的一个重要方面,一直以来是备受推崇的。在J2EE在Servlets技术推出时就采用了XML方式进行配置,相比ASP这也是后发优势了。主要是WEB.XML文件,还有一个SERVER.XML文件,那是web server的功能,可以不算在内,但是通常的servlets服务器都会提供一个公用的web.xml,应用web.xml可以继承其配置项,这点非常有趣,也有效。IIS中也有类似的机制,可以在IIS中进行配置。说实话J2EE web应用配置web.xml文件是比较复杂的,为了提供强大的扩展机制,可以任意增加servlet配置项,不过现在的IDE都提供了比较好的可视化编辑方式,在创建servlet的时候就帮助你增加了配置项,避免出错。
延伸话题,在相信基于J2EE也好,ASP.NET也好,增加的组件或者框架都通常提供了自己的配置方式,通常也以XML文件方式居多,谁叫XML这么流行呢。J2EE中还有properties文件方式,ASP.NET还有ini方式。当然,任何具有格式的文本文件都可以做配置文件,这里只说框架天然支持的方式。现在问题出来了,配置太多,太复杂,难以维护。有没有一个好的办法来解决这个问题呢?
个人认为,最好的方法是在J2EE规范和ASP.NET规范中制定配置规范,那么各种组件和框架必然会按照此规范来进行开发,然后提供集中管理界面,如是世界干净了!不过J2EE中基本已经不可能了,ASP.NET出现时间比较断,应该可以尝试。SUN和微软可能不屑于去做此事,可能认为对扩展框架限制太多,也不是什么了不起的特性。但在现在配置文件的复杂性和不可管理问题出现的时候,相信此特性会赢得开发人员的认同。
配置方式的原则是:
如果SUN和微软不做,我们在现在框架的基础上是否可以研发一个集中配置框架,对各种开源组件和框架进行整合呢?我觉得还是可行的,开源框架和组件都有源代码,弄清楚其读取配置的机制,提供一个服务,制定一个配置规范,为各框架和组件分别提供扩展插件,应该可以解决此问题。是繁琐了一些,不过一旦成为了事实标准,得到开发人员认同,不愁开源社区不遵从。
是不是大胆了一点?既然是创意,我们不妨大胆一点,呵呵。等我有空了,研究一下是否可行,算是给自己又留了一个课题了(已经两个了!)。也希望大家也帮我多提建议,欢迎拍砖。