郑则李
(广东粤东高速公路实业发展有限公司,广东 揭阳 515525)
架构Web平台的数据可以是通用的,例如用户信息;可以是私有的,例如一个在线网盘;也可以是个人的,例如博客,微博;也可以是开放的,例如餐饮信息,旅游信息,天气信息;也可以是需要严格保密的,例如银行的账户信息。所有的数据通过Web呈现的面对用户的所有功能都是提供一个给用户操作的接口,通过接口访问Web平台专有的一组核心数据。
Web应用,即使不为用户提供也不使用任何用户数据的平台,仍然是由功能应用内部需要的数据来驱动的。假想一个提供餐饮信息查询方面的网站,该Web站点的功能包括可查找的餐饮信息索引,关于每个菜式,餐饮店的基本信息,以及用户对每个餐饮店做出的评论,用于获取这些具体的信息构成了这个应用的核心,驱动了这一类Web平台的架构。
随着Web2.0的网络技术逐渐流行,数据在系统中的核心地位越来越明显,Web2.0展现的核心主题就是数据驱动,而且依赖用户本身提供了绝大部分的数据,核心的数据映射驱动了网站的功能和体验,与Web2.0之前网站的核心数据不同是,Web2.0数据是围绕用户与用户之间的联系来展开的层次架构中。
围绕用户数据的Web平台层次架构中,在架构的最上层数据展现层,输入模块将用户的 Web输入(Get,Pos,Cookie信息的集合)映射为对原始数据的请求,存储于数据库的中的原始数据被转换为内存中的数据,通过业务逻辑进行智能化处理,输出模块针对显示原始数据对象进行 HTML,JavaScript,CSS等转换,是运行在基础设施之上的应用程序N层栈;而业务逻辑层则是根据一些建立在系统的数据组件规则来执行的,平台开发者可以利用分离的业务逻辑和应用栈将核心的数据映射应用于其他的Web应用,用户在这些应用里提供或消费数据。架构设计考虑创建统一可用的用户关系数据上下文,体现用户与数据之间的关系:数据可获得性和用户隐私。
架构技术的要点:
横向协作,业务分布,数据分布,纵向分层,流水作业;以空间换时间,资源的预准备,资源池,兼顾同步和异步;应用可以通过Web平台的数据服务来访问有用的关系数据,为外部的Web应用,桌面操作系统应用和其它设备上的应用提供关系上下文;应用可以通过数据驱动标记语言来实现显示,在Web平台提供的页面上集成自己的应用;通过数据驱动标记语言针对架构的改进需求,开发者可以使用Web平台的cookie和javascript让满足应用的架构改动最小;架构创建了统一的关系上下文,Web平台应用可获得平台提供的功能而不必放弃对于平台的用户数据和显示提供的用户体验期望。
DNS级负载均衡,动态页面静态化,静态页面使用轻量级的Web服务器,图片,JavaScript,CSS,,Flash,流媒体等资源使用专用的服务器,页面中重要的部分同步处理,次要部分使用Ajax技术进行异步处理。
平台通过创建外部可以访问的Web服务来提供平台数据访问的接口。Web服务API接口为外部应用和平台数据之间建立了关系,本质上位外部应用栈添加了平台数据,对于用户而言,可显式的通过授权外部应用来获得平台关系数据。
在Web平台,目标方法的名称以及它的参数是在HTTP请求中传递的,请求还包括调用应用相关的证书,与用户-应用相关的证书,与请求实例相关的证书。通过将HTTP的Get和Post输入转换成对内部栈的调用,以XML格式输出结果。
4.3 Web服务认证
Web服务的客户端在每次请求时发送Session Key,Web服务知道Session代表的用户请求的应用,当用户或Web平台禁用该应用,或者是用户首次访问的应用,安全检查将无法通过,Web服务返回错误给请求的客户端,当安全检查通过,外部应用站点会把该Session Key计入自己的用户记录,或存放到用户的cookie中。
Web平台通过带有用户控制的认证握手的Web服务将内部库扩展到外部应用,通过这个转换,平台的关系数据可以驱动用户决定认证的其它应用程序,通过关系上下文,在应用的数据中创建新的关系;
随着应用越来越多地使用外部数据平台,由于网络带宽占用,CPU负载造成的请求延迟将很快体现,通过建立关系数据查询服务机制,让开发者能在在平台的数据上使用标准的数据查询语义,将计算推到平台可使用户取得平台数据等同于取得自己的数据,该架构的实现,是一项访问平台数据的架构改进,是标准的黑盒Web服务,让开发者能够消除多次数据请求的来回。
数据架构实现了让平台关系数据更加开放的要求,外部应用和数据平台的共同用户可以共享信息,每个新的关系应用不需要一个新的关系网络,为让更多的用户发现Web平台的应用,平台把应用的内容和它自己的内容等同看待,让外部的应用展现在平台的门户站点上,帮助开发者获得足以支撑数据关系功能所需的关键性用户数。
平台提供各种开源小工具,例如跨语言进程间通信(IPC)工具,序列化输出工具,平台内部异常转换为外部错误代码工具,XML或SOAP工具集等,通过使用这些小工具,应用服务的设计者不必每次小改动都需要花费时间来更新代码,而用户更可以通过工具了解更多的平台内部架构信息。
由于开发者创建的软件运行在Web平台的服务之上,使得平台数据得到了长足的发展,但是仍有一些重要的,常见的Web使用场景和技术,平台的架构不能支持,平台通过下面的支持功能来修正存在的问题:
让Web平台具有浏览器的职责,在平台自己的存储库中复制Cookie的功能,如同用户操作浏览器保存Cookie信息,可有效地分离用户在平台上的应用体验和应用的HTML站点上的应用体验。
Web平台提供一些自定义的JavaScript库,让用户场景更加容易实现,同时场景受到平台的控制,使应用即动态又安全。
通过互联网提供访问的系统,伸缩性已经成为非常重要的要求欧,Web平台可能会突然发现有几百万的用户访问,即使是百万用户访问的Web平台,也有集中的访问和零散的访问需求,这要求为系统投入的设备经过能够在最高承载下也能稳定运行;也可能发现没有用户感兴趣,为系统投入的所有设备都闲置,消耗着能源和管理成本,这对于企业来说同样是一种投入上的浪费。在互联网的世界里,一个Web站点可以在几分钟内从其中一种状态转变为另一种状态。
围绕用户数据有效的提高了Web平台上所有的页面的效用,这些数据拥有通用性,当数据与外部开发者的应用栈结合在一起时,数据的最佳使用开始出现,通过Web平台的展现层服务,数据查询服务和平台特有的门户API接口,协调不断扩展的数据访问方法和网站容量的预期,针对平台的新需求带来的数据架构改动带来的问题,平台又通过对数据访问模式的更强改进来解决问题。
[1]应用Web Services构建多层架构的高效.NET应用 (ISBN:7030152999)科学出版社2005
[2]Web信息架构:设计大型网站(ISBN:9787121070372)电子工业出版社 2008