作者:宋华
一、什么是应用程序设置
应用程序设置通常是指与应用程序密切相关的一系列参数。在基于窗体的Windows应用程序中,应用程序设置主要包括影响应用程序布局的位置、尺寸等参数;影响应用程序外观的颜色、形状等参数;此外,还包括应用程序的语言、文化等设置以及数据源和连接字符串等等。这些参数设置在程序开发中应用广泛,有的被用来保持应用程序的一致性、连续性,比如保存应用程序结束时的窗体大小、位置及背景颜色,下次执行应用程序时恢复这些设置;另一些参数则使程序代码更加简洁高效,比如保存数据库连接字符串供多次调用。
与基于窗体的windows应用程序不完全相同,基于web的Asp.net应用程序有其自身的特殊性,它是面向网络的。这决定了asp.net应用程序设置除包括上面的参数外,还包括,
# 身份验证和授权等安全机制
# 网络传输协议类型和针对特定类型文档的http处理程序
# 事务处理
# 为所有页面设置超时
# 定制出错页面来代替默认IIS出错页面
# 会话和会话状态信息
# 页面缓存行为
# 自定义及扩展
可见,asp.net 应用程序设置参数类型更为丰富。实际开发中,它们不仅被用来提高应用程序安全性、高效性,而且易于对特定用户实施管理并可定制需求。
二、为什么要将asp.net应用程序设置外置为web服务
关于web服务的优点就不用再提了,媒体铺天盖地的宣传和在许多领域的广泛应用已经足够说明问题。不过这里仍然要强调的是,web服务实际上就是asp.net应用程序,只不过重新进行了组织。特别地,web服务为不同应用程序之间共享对象提供了实现。通过简单的引用,你可以在程序中访问另一程序实现的功能,而不仅仅是asp.net中那样只有通过浏览器才能实现。显而易见,web服务也具有一般asp.net应用程序所拥有的许多功能和特性。Asp.net和web服务都有状态管理功能就是一个典型的示例。
然而,将asp.net应用程序设置外置为web服务有什么优点呢?一方面可以从软件(应用程序)可复用性方面得到答案,试想一想,如果客户应用程序(源)需要使用另一应用程序(目标)的设置参数,这时,将目标应用程序设置配置为web服务,在源应用程序中就能够方便地调用了,就像在本机配置了同样的设置一样。另一方面,web服务(asp.net应用程序应用)特殊的存储其应用程序设置的机制(即下面将讲述的web.config文件存储设置)使得应用程序跨平台、跨internet以及应用程序的升级和xcopy部署方式成为可能。
三、存储asp.net应用程序设置
我们应该已经知道,基于windows应用程序的设置一般保存在注册表中。通过对注册表写入"键值对",保存特定相应的设置值。然后,通过读取注册表的"键值对",取出相应的设置值。看来,过程本身并不复杂,加上.Net框架为注册表的读写提供了丰富的类库支持,使得操作注册表以读写应用程序设置更为简单(关于注册表读写请参见专门的文章,这里就不展开了)。
然而,注册表本身是个相当敏感的区域,对它的读写不可避免地引发安全隐患,即便在本地主机上操作也要相当慎重,更何况置身于不可预料用户数量的网络环境之下,就更应该在公开注册表的读写操作时慎之又慎!或者,干脆找别的方法替代!
正是由于这样的原因,Asp.net应用程序设置除了存储在注册表中外,更多地,通过以下两种方式来存储:
# Application对象
# Web.config文件
四、使用Application对象存储应用程序设置
对我们来说,Application对象相当熟悉。它是asp.net从asp中保留下来的、用以简化应用程序状态管理的两个对象之一(另一个是Session对象)。作为一个asp.net应用程序,web服务就象其他