虽然有证据表明企业的与消费者的Web架构和技术将来会融合在一起,但是,这两种架构和技术目前是完全不同的。如果一个人谈到企业应用程序架构,他可能会说虽然消费者Web应用程序很可爱、简单并且有时候是有用的,但是,消费者Web架构和技术仅仅是一些脚本和技巧的组合。如果一个人谈到消费者Web架构,他可能会说企业软件太复杂,经常不能使用并且以高价格的和新能不佳的技术为基础(如JSF或者门户)。
Nexaweb公司首席技术官Jeremy Chone认为,消费者和企业的Web应用程序有六个主要区别:
1. 伸缩性(用户与应用程序)
伸缩性也许是消费者和企业Web应用程序之间的最重要的区别。消费者Web应用程序主要是为一个应用程序增加或减少用户数量。YouTube、Facebook和Twitter等成功的消费者应用程序的用户群几乎在成倍地增长。因此,消费者Web架构需要支持免除许可证的技术并且通常需要建立一种客户化的技术以便准确地适应这种应用程序高伸缩性的需求。一个很好的例子是谷歌的文件系统。这个系统的架构是一个分布式的文件系统。
另一方面,企业通常有相对固定数量的用户(用户数量可能会遗憾地越来越少),但是,企业的商业应用程序的需求在日益增长。企业IT部门的最大挑战是标准化技术架构和整个应用程序组合的最佳做法,以便最大限度地减少应用程序开发和维护的成本。因此,企业开发人员愿意使用标准的和有良好的技术支持的技术,尽管这种技术有昂贵的许可证费。维护人员通常支持架构的漂亮和性能以及JSF、SOA和门户等能够带来风险与好处的平衡的技术。
2.经验(简单性与功能)
企业和消费者Web应用程序的第二大区别是经验。在消费者领域,应用程序必须要简单和迷人,因为消费者应用程序就是要吸引用户。因此,简单性是王,经常是功能越少越好。Twitter网站胜过FriendFeed网站的主要原因就是其简单性。YouTube、Flickr和许多其它成功的消费者网站显示了简单性经常战胜完美的极好例子。
然而,在企业环境中,用户是企业员工。他们花在应用程序上的时间是为了完成一个具体的工作。虽然企业应用程序需要容易操作和良好的设计,但是,功能是王。为了审美而限制应用程序的功能不是一个好的企业IT战略。
3.安全(一对一与一对多)
虽然企业和消费者Web应用程序都需要保密,但是,企业环境的安全要求远远高于消费者环境的安全要求。在消费者Web应用程序方面,用户通常为每一个人工制品设置一个访问规则。例如,当在YouTube网站发表一个视频的时候,你可以为你的朋友或者为一切人把这个视频设置为专有的。
在企业环境中,你要根据组、任务和时间等复杂的访问规则为一套指定的记录设置许多规则。这是企业应用程序通常使用Spring Security等复杂而全面的安全框架的原因之一。
不过,企业和消费者Web应用程序的一个共同的要求是单一登录。在消费者网站,Open Auth和OpenID的应用势头似乎在增长,而企业都使用专有技术和开源软件组合的技术,如甲骨文的Sign On以及JOSSO和Liberty Alliance(自由联盟)等开源软件和标准解决方案。
4.处理(解耦合与全面)
在消费者Web应用程序中,最有效的伸缩性的方法是分区和把数据和逻辑发布到许多低价格的服务器。使用这种分布式架构的缺点是处理的成本很高并且不可能大规模地实施。在少量的服务器上配置甲骨文RAC或者Java JTA是一回事,但是,在数百台甚至数千台服务器上采用这些软件是另一回事。
因此,大多数消费者Web应用程序采取我所说的解耦合处理模式。在这种方式中,一个事务处理将拆分为若干个较小的能够单独执行的事务处理,让系统有机会包含一些过期的数据。例如,当一个人工设置被删除、增加或者修改的时候,这个项目修改处理通常与关系修改处理解耦合。这个方法就是设计系统让用户在99%的时间里都不会注意到过期的数据,而且这种过期的数据也从来不会导致错误的后果(如,防止eBay用户购买被删除的物品)。大多数消费者Web应用程序都有自己客户化的松散的处理实施。这通常包括缓存、时钟守护作业和固定处理方法等。
在企业Web应用程序中,这个要求是完全不同的。企业应用通常不能容忍过期的数据,系统必须保证全部处理的完整性。甲骨文的RAC等价格昂贵但是可靠的技术在企业需要升级到指定的应用程序的时候能够有很大的不同。