基于Ajax技术构建的Portal是Web 2.0这一代中最为成功的Web应用程序。在这块市场上iGoogle和Pageflakes这两大站点已经走在了时代的前列,同时它们也首次把Ajax的真正潜能挖掘出来了。这些门户站点为个人用户提供了非常个性化的主页,使得他们仅仅通过一个站点就能获取整个Internet上自己关心的信息,同时也为企业信息内容整合带来了巨大的帮助。企业可以使用基于Web 2.0的Portal进行内部内容存储和管理,其功能就像SharePoint或DotNetNuke这些的站点一样。由于采用了Ajax技术来丰富客户端体验,因此基于Web 2.0的Portal相比于未采用Ajax技术构建的Web站点具有更强的可用性和更快的响应能力。也因为Portal本身是由很多普通的Widgets(小工具、部件)构成,因此对于你需要通过添加多少的Widgets部件来为站点提供多少的功能没有进行限制。Widgets部件的开发和维护都是单独进行的,因此它们可以保持整个Portal的核心架构,使其外观看起来更干净、使用时更简便。DotNetNuke是一个在Portal中推动Widget部件开发模式的很好的例子,它为开发低耦合的企业级Web应用程序开创了一个新时代。.
本书使用微软最新、最尖端的技术并以崭新的视觉来看待Portal的解决方案。在开发个人、教育、社区以及企业Portal的过程中,我曾遇到过很多有趣的有关设计、开发、可扩展性、性能及生产方面的挑战。在本书中,我试图通过构建一个开源的、基于Web 2.0的Portal原型来展示解决这些问题所要面临的一系列挑战,然后循序渐进地告诉你需要面对的包括设计和架构、高级的Ajax应用、性能优化技术,以及服务端可扩展性等在内的挑战。该Portal原型也为你带来了很多新技术的实践实现机会,它们包括:.NET 3.0和.NET 3.5框架、LINQ、Windows Workflow Foundation等最新技术。此外,还探讨了实现基于Ajax技术的Web站点构建细节,及面临的一些挑战,如浏览器的性能、兼容性、安全性等方面,同时也针对ASP.NET AJAX框架的优点和缺点进行了探讨。
关于该案例可参见www.dropthings.com站点。Dropthings是一个开源的案例,它用以说明使用微软的最新技术到底能实现什么样的功能。本案例仅供学习使用。虽然就它在一系列特性如:性能、安全和可扩展性等而言并不接近一个真实的Web Portal,但是很好地展示了如何在一个商业Web应用程序中使用很多新技术。
本书读者对象
本书主要针对ASP.NET 2.0或ASP.NET 3.5的开发人员,他们应该已开发过一个或多个Web应用程序并且对JavaScript和ASP.NET 2.0已相当熟悉。也包括希望对ASP.NET AJAX技术有充分了解的读者。这些信息在很多出版物中都能见到,其中包括很多本书里介绍的O'Reilly的书。
对于中级开发人员,即为了寻找一种新途径来深入了解Web开发所面临的挑战,并想学习如何成功构建一个真正的Web站点使之正常运行起来的读者,将从这本书中获得更大的益处。高级开发人员将学习到如何构建一个坚固结实的Web程序,使其能够承受每天数百万次的点击访问量、因突发事件而引起的功能扩展需求、阻止黑客攻击和拒绝服务(DoS)攻击、利用内容传送网络(CDN)将站点部署和运行在一个分布式集群环境中以及面对真实产品环境中的问题挑战,等等。
本书组织结构
本书首先描述了什么是一个基于Ajax技术的Web Portal(确切的说应为一个基于Web 2.0的Portal,并且讲述了如何为更多类型的Web站点提供一种有用的模式,如个人站点、企业内部网或大众消费的Web应用。然后为你讲解该类应用程序所面临的架构挑战,并为解决这些设计问题提供一种循序渐进的指导。阐述了什么是Widget部件以及如何架构设计Widget部件来满足在Web站点上添加无限多特性的情况下,能创建一个高度解耦的Web应用程序。
随后的各章中,你会一步一步找到对应内容的导航,通过使用ASP.NET 2.0/3.5和ASP.NET AJAX 1.0开发某些Web工程的组件、使用Workflow Foundation构建业务层以及使用LINQt。SQL构建数据访问层。一旦这些基础设施建立起来,就会面临很多稍微困难的挑战,像用户第一次访问时站点的性能问题、浏览器兼容和内存泄露问题、高级缓存技术问题、把太多的内容和功能放到一个单独页面所出现的问题,等等。然后,还会面临一些现实生活中有关Ajax和ASP.NET 2.0/3.5应用的挑战,同时在我构建过的一个高伸缩性的商业Portal中这些挑战都已经得到了解决。
贯穿本书,我也分享了一些实际场景的开发心得,并突出显示了我在构建Portal的过程中所遇到的一些实际问题(如Dropthings)。因此,无论“实际情况(Real-Life)”这个术语出现在本书中在哪里都并不奇怪。
最后,针对基于Ajax技术构建的Portal展示了一些很难解决的问题:扩展性的挑战、安全性的挑战,以及对于一些普通的其站点用户分布全世界并达数百万的Web应用程序会出现的13种灾难问题。
本书共包括10章,每章的主要内容如下:
第1章,“Web Portals和Dropthings.com简介”
介绍Web Portal的一些概念,以及将在本书中构建的案例概述。第1章中还展示了如何在你的产品中应用ASP.NET AJAX和.NET 3.5技术。
第2章,“Web Portal和Widgets架构”
展示Dropthings.com站点的一个架构概况。也阐述了Widget部件的架构以及如何使用Widget部件构建一个高度解耦的Web应用程序。这会涉及一些基于Ajax的Web站点所面临的性能和安全方面的挑战。
第3章,“使用ASP.NET AJAX构建Web界面层”
从主页到Widget部件,对于如何构建这种Web应用程序给出了一个详细地阐述。也展示了如何使用.NET框架提供的ASP.NET AJAX 1.0实现拖拽功能、如何构建一个真实的Widget部件,以及如何使用ASP.NET 3.5来构建服务端的Web界面层。
第4章,“使用.NET 3.5构建数据和业务层”
展示了如何使用LINQ来构建数据访问层和使用.NET 3.0中的Workflow Foundation来构建业务层。
.第5章,“构件客户端Widget部件”
展示了如何使用JavaScript来构建基于客户端的Widget部件,以此来提升性能并达到优化缓存的目的。也展示了如何构建一个内容桥或代理服务以允许Widget部件从外部源抓取内容。
第6章,“优化ASP.NET AJAX”
深入发掘基于Ajax技术的原理来使站点运行得更快,并加强站点缓存的友好性和可扩展性。本章还讨论了关于浏览器性能的一些具体问题,也讨论了很多通过Ajax框架(在Ajax框架中)来最优化浏览器性能的技术。
第7章“创建异步、事务化、缓存友好的Web服务”
展示了如何构建一个调用了Ajax句柄的自定义Web服务,这样可以克服ASP.NET AJAX 1.0中的一些缺点,并使你的Web服务变得具有异步、事务化和更友好的缓存。也介绍了主要依赖Web服务的Web应用程序所面临的可扩展性和安全性挑战。
第8章“提升服务端的性能和伸缩性”
一个基于ASP.NET 2.0的Web应用程序当其站点用户从数百人到数百万人的时候,提高性能和可伸缩性会给你带来意想不到的惊喜。了解如何解决这种高访问量的Web站点所面临的性能、可靠性和可伸缩性的挑战。..
第9章“提升客户端的性能”
基于Ajax的Web站点为客户端浏览器提供了很多功能,并介绍了很多浏览器面临的具体挑战和JavaScript性能问题。本章提供了很多策略方法用来克服浏览器上的速度和内存问题,并且使得UI加载更快和具有更快的响应。
第10章“应对普通的部署、主机和产品挑战”
Web项目开发的最后一步就是成功地部署产品并运行它。了解如何才能部署和运行一个高产量的Web站点需要解决软件、硬件、主机和Internet设施等问题。这些因素都会对你的站点以及业务造成及大的不利。
使用本书需要什么
你需要Visual Studio 2008 Professional Edition和SQL Server 2005 Developer Edition。你可以下载该开源项目的最新源代码:www.codeplex.com/dropthings并在本地安装配置它。
以Dropthings命名运行的开源项目将因你的贡献而获益。欢迎加入开发行列,你可以对现有核心框架进行扩展或为该项目构建一些新的Widget部件。
本书约定
下面是本书中使用到的约定:
纯文本
显示为一些新的菜单标题、菜单选项、菜单按钮和键盘快捷键(如:Alt和Ctrl)。
斜体字(Italic)
显示为一些新的术语、URL、邮件地址、文件名、文件扩展名、路径名、目录和Unix utilities。
等宽字体(Constant width)
显示一些命令、选项、switches、变量、特性、键、函数、类型、类、命名空间、方法、模块、属性、参数、值、对象、事件、事件处理器、XML标签、HTML标签、恶意指令、文件内容或命令输出等。
等宽字体加粗(Constant width bold)
显示一些应该由用户输入的命令或文本。
等宽字体斜体字(Constant width italic)
显示该文本应该被用户提供的值取代。
注意:表示一个提示、意见或简单注释。
警告:表示为一个警告或提醒。
使用本书代码
本书在这里能帮助你完成很多任务。一般情况下,你可以在自己的程序或文档中使用本书中的代码。你也不需要联系我们来征求许可,除非你想为该核心框架重新开发一部分更完善更有效的功能代码。例如,使用本书中的很多代码来实现你的程序,这不需要获得我们的许可。销售或分发来自O'Reilly的CD-ROM样例需要许可。引用本书中的概验或例子代码来答复一些问题不需要许可。公司要使用本书中的大量代码到产品文档中需要许可。
我们不要求读者注明出处,如果注明,我们表示感谢。注明出处包括标题、作者、出版社和ISBN。举例来说:“Building a Web 2.0 Portal with ASP.NET 3.5,by Omar AL Zabir.Copyright 2008 Omar AL Zabir,978-0-596-51050-3.”。
如果你需要合理使用该代码范例,或考虑上述情况的许可,请随时与我们联系:permissions@oreilly.com。
建议与问题
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商:
美国:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
100035北京市西城区西直门南大街2号成铭大厦C座807室
奥莱理软件(北京)有限公司
下面是本书的在线页面,我们放置了勘误表、示例和一些关于本书的附加信息。可以通过如下地址访问该页面:
http://www.oreilly.com/catalog/9780596510503
有关对本书的评论或技术问题探讨,请发送邮件到:
bookquestions@oreilly.com
info@mail.oreilly.com.cn
欲了解更多关于我们的书籍、会议、资源中心,以及O'Reilly网络的信息,请访问我们的网站:
http://www.oreilly.com
http://www.oreilly.com.cn
本书作者或Dropthings项目的信息可以通过如下方式取得联系:
omar.zabir@mvps.org
本书代码可以在这里下载:
www.codeplex.com/dropthings
致谢
在写作本书的过程中,我对我父母给予的支持表示最深切的敬意和感谢。特别感谢微软公司的Mike Pope和Infusion公司的Craig Wills。感谢他们的真诚支持和建议,以及对本书认真仔细的审阅
关于本书译者
罗江华,微软成都程序员俱乐部主席,多次组织大型技术交流活动并担任讲师。曾先后在新加坡及国内知名外资企业任职,参与多个系统的设计和开发。2006年7月被评为微软MVP,并于2007年7月连任成功。其著作有《.NET Web高级开发》。主要关注ASP.NET 3.5、C# 3.0、SQL 2008、SOA、WCF、WF与.NET Framework及相关技术的发展,个人技术博客:http://jigee.cnblogs.com。...