通过WiredChurch.com,教堂可以为它们的教友发送一些重要的团队服务信息,却又无需安装和维护额外的技术设施。当我担当此项目顾问时,我采用.NET平台来运行这套系统。本文中,我主要解释一下这一项目的某一方面的一些具体细节:设计、运行presentation层。
设计WiredChurch系统的一个最主要目的是让客户(教堂)的用户输入教堂的URL,可以连续访问它们的网站。我们本来可以接管这一网站,并把它们移到一套新的集中式服务器里。不过,如果那样做,我们就不是Web服务提供商,而成了托管商了。
设计这套系统的最大问题就是要利用Web服务技术,通过分布必备数据生成presentation,并且要保证presentation层运行在分散的服务器上。出于这一目的,系统今后是可随时升级的。事实上,由于大多数客户都在使用主机托管服务(采用了多台前端服务器,这些服务器又应用了失败保护和轮询DNS技术),所以我们可以从现有主机冗余和伸缩性等方面获得莫大的好处。
这样的系统结构可以让我们把注意力集中到分散结构的下一层上,很多系统结构工程师都喜欢用“business services layer"来形容3层结构中presentation的后一层。但是,当对Windows DNA 3层系统的设计、开发、研究完成之后,微软工程师最终认为实际上在许多系统中,在presentation层和business层之间还存在一个第四层:business facade。
Business façade的作用是把presentation层把business层返回的结果打包(见图A)。这样,business服务层的开发人员可以按一种最行之有效的方式来遵从business规则,同时又不会限制它们的创造力。如果设计正确,business façade还可以让系统开发队伍通过清除由business object负载过重引起的瓶颈,从而使系统具有更大的伸缩性。
图 A
WiredChurch逻辑结构图
在WiredChurch系统中,我们选择运行business façade来实现XML Web服务以及 ASP.NET用户控制。采用这些技术可以满足两个重要设计标准:简化及拓展presentation层。通过XML Web服务实现business façade,这样任何想要享用服务的下游服务器都要按下面两种方法的其中之一来做:
XML Web服务的突出优点就是可以实现下游服务器与任何操作系统和Web服务器软件的完美结合,而且仍然能够享受服务。
当我们和那些潜在的客户谈到这一点时,他们通常会分成持两种不同观点的人:一些人是全职开发人员(技术人员),另一些人是自己亲自操作(维护人员)或者自愿在Web站点上服务的人。
有意思的是,在使用由不同商家提供的多种软件的人和专门使用微软软件(FrontPage, Visual Interdev, 和 Internet Information Server)的人(专门使用免费软件或者非技术人员)之间有很多共同点。主要问题会出现在后者。我认为为第二类用户提供一种简单的方法来实现presentation层也是很有必要的,ASP.NET用户控制就是一个很好的办法。
ASP.NET用户控制封装了XML Web服务呼叫和单个平台上的HTML显示。用户控制不象ActiveX控制和Java程序;也就是说,客户端并不需要时间来运行或者JVM。用户控制通过.NET结构来提交网页。(显然,这就要求在下游Web服务器上装载.NET系统,但是在ISP或用户端安装.NET结构是免费的)。
例如,Web开发人员可以通过AddEvent用户控制在网页上设置一个单一控制,并且可以定义一些新的event来接受信息。如果下游浏览器仅仅支持HTML 3.2的话,对服务器设一个循环控制就可以使输入数据生效,但是如果浏览器能够执行客户端命令的话,就不用激发循环控制命令了。从Web开发人员的角度来看,这种配置的优点就是通过更改属性来配置控制面,同时,也可以把控制放在网页中,这样可以维护网站自己的外观和特性。见图B。
图 B
Business服务、Web服务(business façade)以及用户控制(presentation服务)把对最终页面的处理留给了最终用户,——也就是浏览网站的人。在每层的交界处,双方在返回待处理数据的单独、无限呼叫中进行通信。按照两层之间松散的、无限方式实现每一层的功能,并且为business services层和business façade层添加服务器,可以很容易确定服务器规模。因为每一次呼叫,business façade都不需要重新连接专门服务器。应用轮询DNS技术或其他技术(比如硬件负载均衡技术)分担服务器间的负载,可是实现Web服务。
.NET为提供的最大好处就是能够为我们的客户(church)提供丰富的、基于Windows的管理前台,这样客户仅仅需要安装一次.NET结构就可以了,其它的什么都不用做。那么,它如何工作呢?.NET增强了Windows的开发模块功能,也就是客户可以从浏览器中直接打开Windows应用程序,并且把代码动态的发送到浏览器cache中。同时,business façade把格式化网页通过用户控制发送到用户端。它也可以通过按照Windows格式化程序提供数据来让教堂管理它们的用户。这种双项功能就可以为那些整天必须要“活在系统中”的人提供一个丰富、可拖拉式、功能强大的系统。见图C。
图 C
作为开发人员,只要有可能,我们就会重新应用代码和服务来提高开发的灵活性,利用由business façade提供的服务,在presentation层提高运行时间的可伸缩性,在本系列的下一篇文章里,我们将解释business services 层是如何设计、如何为business façade提供数据的。