多语言展示
当前在线:970今日阅读:183今日分享:45

如何搭建下一代 Web 应用u

新一代Web服务的四层架构:基础层、应用层、分布层和社会层  next-generation-web-infrastructure  1.基础层(3rdPartyWebInfrastructure)  除非你有自己的机房或者数据中心,不然我们的数据就都是交给第三方托管的。按照旧有的托管概念,选择服务商,托管设备,所有的应用逻辑都在这些设备里面完成,计算、存储、数据库全部自己解决,需要大量的设备和维护人员,现在这些基础的逻辑服务可以完全交给通过网格托管(GridHosting)和云计算(CloudComputing)服务来帮你实现。  我们可以把基础层想象成那些第三方已经实现好的程序模块,它们更像是操作系统提供给我的系统功能一样,程序运行空间、磁盘读写服务、CPU调用接口和各种IO服务。  通过传统的网格托管,例如3Tera的AppLogic,还有MediaTemple的Grid-Service,在一定程度上不用为系统的分布式和访问负载担心,直接想服务提供商购买额外的负载能力就行。OpenID可以实现统一的身份验证,现在Google和Yahoo的帐户都能进行这种认证;Amazon的云计算服务S3、SimpleDB和EC2分别提供了虚拟的存储、数据库和应用计算托管的服务,还有Google最近推出的AppEngine,你只需要将程序代码部署到这个Web应用容器之中,就能够使用Google完善的分布式网络架构了(感觉这是Google最伟大的一个项目了)。所以说,现在搭建一个Web服务最核心的技术需求已经能够完全在这些第三方的平台中完成。当然,像第三方的搜索服务(GoogleCoop)、地图服务(GoogleMaps)、消息队列服务(AmazonSQS)、即时通讯服务(GoogleTalk),我们也都能够将其作为基础功能整合成为自己服务的一部分。  2.应用层(Application)  Web服务的业务逻辑和实现方法都在应用层解决,它们在基础层提供的虚拟程序空间里面运行。套用最经典的程序开发模型——文档视图模式(MVC),应用层就是要来实现Web服务的数据模块(Model)、控制模块(Controller)和呈现模块(View)。  Ruby和Python这两个小巧灵活的动态语言现在成了实现新一代Web应用的新宠,很多出色的Web应用都通过RubyonRails框架来实现(例如Twitter和37Signals的所有服务),同时Python+Django则成为了GoogleAppEngine的首选开发框架,在这种新构架之下,编程语言的开发效率,灵活性和运行平台的支持度成为了关键因素,我们需要实现的更像是基础服务的粘合剂,通过快速的组装来提供应用,而不用去考虑语言的执行效率和语言自身有多么完美。  在数据端,MySQL仍然是Web应用的主流数据库系统,但现在很多复杂的业务都被基础层所封装,Rails和Django框架中的数据对象模型正在被广泛采用,提高开发效率并简化查询方式是大家使用的主要动力,当然还有像SimpleDB和AppEngine这种虚拟服务的推动作用。  在用户前端,浏览器是绝对的标准和主流,因此支持好HTML,javascript和Web标准就不会有任何访问的障碍和方向性的选择错误,如果还需要更酷的效果,Adobe的Flash会是个不错的选择,至于Microsoft的Silverlight嘛,革命尚未成功,同志还需要努力。  3.分布层(Distribution)  新的Web站点和服务将不再是信息的孤岛,对外暴露自己的数据显得尤为重要,Web应用就像生物组织内的细胞,它们获取来自外界的能量,同时也产生能量输送给整个生物体。分布层就像Web服务的接口,其他的Web服务可以通过这些标准接口接入进来,自己的内容也可以输出给其他服务。  有一点需要牢记,想让自己的服务在今后的互联网中有立足之地,开放你的接口吧,不管是REST流的还是SOAP派的,因为除了人在访问你的网站之外,还有大量的机器和服务程序对你的应用感兴趣,让自己的服务成为别人业务逻辑的一部分之后,基本算是成功了(看看flickr是如何开放成为全球最大的照片托管服务的)。那些开放的APIs是被动的等着来访问,你还需要主动出击,通过RSS、ATOM和Ping这种特性来通知其他服务你更新了内容。  各种页面嵌入的Widgets和电脑桌面与手持设备使用的Gadgets也是输出服务内容必备选项,Widget的形式更容易被其他的Web服务整合,例如iGoogle和Blog的Sidebar上。让数据能够更加方便的输出,同时也提供给第三方数据输入的机会,这是在“分布层”应该做的最重要的事情。  4.社会层(Social)  无论什么样的Web应用,最终都需要有人的参与,人与人之间的行为相互影响,自然就形成了社会效应,不管参与人数的多少还是服务规模的大小,在这个架构的最上层,就是要平滑的实现Web用户之间的信息流通,所以我们称其为“社会层”。  经过多年的进化,社会化的标配应用形式已经成型,Blog(文字的、图片的和视频的都算),论坛和各种Wiki形式的内容分享,它们像网站的内容骨架,无论何时都可以考虑使用这几种应用形式。现在还多了twitter方式的MicroBlog和facebook形式的WebIM,也许今后会成为网站标配的一部分。  Social的思想已经深入人心,只要有用户登录和身份的网站就会好友关系(FriendsList),好在Google已经为大家准备好了OpenSocial标准和FriendConnect服务,还有facebook的Connect服务,致力于维护用户身份的唯一和好友关系的统一,无论在哪个网站上登录,你就是你,你的朋友也都是那些老朋友,不用重复填写档案信息,也不用重复添加好友,很理想,很完美主义…  不管是Google帮还是facebook派,或者始终特立独行,社会性的Web服务都需要有好友关系、用户档案(Profile)和用户活动流(ActivityStream),在还没有行业标准的情况下,可以使用Google的OpenSocial格式来输出和提供接口。这些用户的数据会被订阅,被聚合网站读取,或者被其他的服务分享,拥有这些数据的人就会更乐于推荐和使用你的服务,所以让用户的数据在不同的服务之间流动起来,这个才是网站社会化的精髓所在。  除了技术架构之外…  当然,构建优秀的Web应用,只靠清晰的技术架构是远远不够的,你需要对Web2.0有深刻的理解,熟悉Web2.0的编程思想、知道如何激发网络效应、利用好集体智慧,还需要拥有优秀的团队,适合新网络应用的产品开发方法和简单易行的处事方法(GettingReal一些比较好),最后还需要一点点运气和机会。
推荐信息