Disk-Based Caching in Whidbey, Longhorn…

在2004年春天发布的Whidbey beta中的ASP.NET 2.0,将增加一个特性,可以将Output Cache写到硬盘或者数据库中。这样我们可以将缓存在磁盘上保留很长一段时间,并且当后台数据变化后自动重新生成缓存。并且缓存也不再会因为工作进程的重启而消失。我们甚至可以设定使用多大的磁盘空间来放置缓存内容。

但是,Whidbey不会提供类似于支持Session的State Server一样的集中式的缓存服务器(这个特性对于服务器集群很有利),ASP.NET小组推荐在各个服务器上保留不同的缓存实例,而且他们认为这种模式的缓存的性能也会大打折扣。

这里是一篇很不错的介绍Longhorn三个主要编程模型Avalon、WinFS、Indigo的文章。其中对WinFS介绍了很多。其中提到在Longhorn PDC预览版本中,WinFS并未完成,在beta 1中将完成基础模型,在beta 2中将基本完成。而PDC预览中Indigo完成度就比较高了,而且微软也承诺在WinXP和Win2003中提供Indigo技术的实现,而且最终版的Longhorn里面,Indigo Message Server之间也没有信息交换的能力。(Otherwise, the release version of the Longhorn client wouldn’t have Indigo-compliant servers with which to trade messages. 难道我理解错了??)相对于现在创建WebService的简单性来说,Indigo也存在一个比较陡的学习曲线。(但Microsoft也在致力改善)

文章最后的两句话很有指导性。If you want a shorter-term payoff for the time you invest in exploring Longhorn, concentrate on Indigo’s MessageBus. Otherwise, make the effort to gain an equal working knowledge of all three pillars. If Microsoft’s bet on Longhorn pays off, you’ll be amply rewarded by the demand for competent Longhorn programmers. 如果你想马上从学习Longhorn编程模型中获益,那么就先学习Indigo,但是如果努力学习所有的这三个主要编程模型,一旦微软在Longhorn上的赌注兑现,那么你将从对Longhorn程序员的需求中大大获益。

一个很Cool的特性

在C# 2.0中:
public class StringList : System.Collection.Generic.List<String> {}
类似的,我们可以直接创建出符合我们要求的IntList、UserControlList,呵呵。

工作、SOA、MBF…

1、上周在部门的SharePoint项目主要里面加入了两个特性,“用户个人文档库”和“文档库多级权限”。

用户个人文档库很简单,就是给用户一个单独的“私人的”文档库,虽然可以让管理员手工给每个用户建立一个文档库,然后让这个文档库只能给一个用户访问,但步骤太繁琐,我把这个步骤做成了自动的。

SharePoint默认的文档库权限只针对于每个文档库,下面的文件夹是不能再单独授权不同权限的。有些用户使用时,一个项目使用一个文档库,但是有些项目文档是只能给特定用户访问的,所以这样的单级权限就做不到了。在建立子文件夹时,偶给用户两个选择,“普通文件夹”和“高级可管理文件夹”,后者是可以单独进行授权的(后面实际是用SPList来管理的…),建立是的默认权限直接继承上层的。

2、Microsoft Business Framework,微软正在做的一个东东,随Whidbey会发布一个可用的版本。

什么是MBF?MBF是一个包含了建立在.Net Framework之上的中间件层的在一个大的代码基础层之上的应用程序集(is that the suite of applications will be based on a global code base, with the middleware layer the Microsoft Business Framework, which builds on top of .Net Framework)。看看一篇专访

这里还有一篇,Microsoft Business Framework: The 10-year plan,嗯,看来微软是“蓄谋已久”了。

当然还有微软自己的ppt,Developing Applications Using the Microsoft Business Framework

3、SOA,面向服务的架构。第一次听说是从ccboy的blog上。ZDNet China上有几篇不错的文章。

微软已经作出了一个SOA的东东了,Shadowfax,现在的版本是Pre-Alpha,呵呵,怎么名字听着有点想《魔戒》里面甘道夫骑的那匹马的名字?

学习,学习,努力学习…

前几天在China-Pub上买了三本书。

《ASP.NET Intranet 高级编程》,实际就是讲解IBuySpy的,不是很推荐,属于典型的流水帐式,典型的Wrox图书(N多人,一人一章),没什么深入的东东。只所以买,是抱着“少吃两次KFC而已”的心理把它拖进购物篮的…

《ASP.NET 分布式数据应用程序高级编程》,买这本书的原因是以前看过这本书两位作者之一写的《ASP.NET WebForms 高级编程》,对那本书颇有好感,所以就本着相信作者的态度,选了这本书。翻了翻,还不错,讲解了各种环境下,数据的存取、传递和数据层的设计等等。

《高级 .NET 程序设计》,讲解IL、CLR、GC的书,比Jeffery的那本《Applied…》更深入,不知行文能否比得上。作者好像就是那个写那本大块头的《C#高级编程》的。这里再夸Jeffery的那本书,不但内容充实,而且循序渐进、行文轻松,阅读起来毫丝不觉艰深,实在是难得。

顺便再罗列一下以前看过的.NET书籍:

《Microsoft.Net 程序设计技术内幕》,Jeff Prosise写的,名为“内幕”,实为入门(真不知道译者怎么翻译的的书名),而且是一本ASP.NET的入门书,原著和翻译都没得说,偶三个月前就是靠这本书入门.NET的。庆幸自己选对了入门书。

《Applied .Net Framework Programming 中文第一版》,最有名的作者加上最差劲的翻译,呵呵,不过偶实话实说,只要你不是刚学写程序的,还是可以看的,反正我是觉得基本上看起来没有障碍,很多地方都可以“中译英”猜出原文笑脸。现在出了中文修订本,没买的人有福了。

《ASP.NET WebForms 高级编程》,这本书是一本难得的佳作,作者的写作水平不容质疑。没有多层设计等深入的东西,但是有很多值得学习的内容和技巧。作者设计网页认真的态度值得钦佩,在页面设计上考虑了各种浏览器(IE、Netscape、Mozila、Opera、IBM的盲人用发声浏览器、纯文本显示的Lynx什么的…各种支持或不支持Cookie,支持或不支持JavaScript的浏览器)的兼容性和可浏览性。

《ASP.NET Web 站点高级编程》,在Amazon上评价颇高,内容也确实不错,全书精华在讲述全站框架、设计(所有数据存取类、商务逻辑类和页面的)基类和权限角色管理两章,后面的那些模块基本上都是罗列代码,重复着一遍遍演示怎么用三层来进行设计等等之类的(接近于罗嗦)。

下阶段要阅读的东东(好像地球人都知道了哈…):

《ESP 2.0 中文版》,感谢Microsoft翻译过来了,呵呵,chm版本有了,呵呵…

《A First Look At ASP.NET 2.0》,应该是第一本“(打折的)全面”ASP.NET 2.0的书籍,chm版本也有了,呵呵…

ASP.NET 2.0中更好的Code-Beside特性

ASP.NET 2.0中,将现阶段用于实现页面-代码分离的Code-Behind方式改为了Code-Beside方式,更加简明和舒适笑脸

Code-Behind方式通过继承实现,用下面链接中的文章的话说,“excellent OO, but awkward in practice”,呵呵,.Net Framework 1.2将支持Partial Class特性,于是ASP.NET也使用了更加漂亮的Code-Beside方式。

一篇言简意赅的介绍文章:
ASP.NET v2.0: Code-Beside Replaces Code-Behind

解决了那个SharePoint的小问题

昨天因为在SharePoint中应用Office2003带的那个“STSUpld.UploadCtl”本地文件导航和上传控件的问题而发了点牢骚,今早一打开偶的Blog就看到ccboy在“严肃”的教育偶,“SPS是一个非常有文化背景的产品–奇特的出生”,然后受到发条木偶的启发,赶紧跑去http://download.microsoft.com看看是否有更新版本下载。

搜索的结果让偶吃了一惊,SharePoint Services的版本已经更新了,最新发布日期是两天前,SharePoint SDK也更新了,最新发布日期是10/27,显然比正式版刚发布时偶下载的新多了。于是赶紧下载回来,定位到文档中“STSUpld.UploadCtl”那一页,内容多了N多,后面还提供了一个Sample,哈哈,狂笑…

让偶郁闷的是,MSDN中SharePoint Service的在线SDK居然仍然是刚发布时的那个版本,偶一直都盯着那里,以为文档的更新应该会最先在在线文档中体现出来呢,晕…

朋友landws做的一个ORM Component

    Grove Develop Component Kit 包括 Grove Develop Component 和 Grove Tool Kit两部分;
    Grove Develop Component是一套基于Microsoft .NET Framework的可重用开发组件,支持多种不同数据库项目,提供标准的二层,三层及多层等开发框架. 
    Grove Tool Kit 是针对Grove Develop Component提供的一套.NET Develop Environment的外接程序(Addin) ,能够帮助预览(生成)依赖于Grove组件的可重用代码,包括数据库映射的实体类(Entity Definition Class) ,XML实体描述(XML Definition for data store)等.

作者主页可以了解详情,这是在CodeProject的页面

Web Application的设计是很重要的

CSDN论坛挂了Blogcn.com也挂了,Web Application的设计和性能调整看来越来越重要了。从思归介绍的那个PPT里面,的确可以看出些许问题。

www.asp.net的数据:
超过4000个文件,23%的aspx文件,46%的代码文件;
整个站点同时运行了11个不同的Application,包括www.asp.net、weblogs.asp.net、IBuySpy等等;
2003/5/15一天,约16GB的数据量,104887个独立访问者;

升级前:2个WebServer,WindowsServer2000,双750M CPU,500M内存,1个DB Server,WindowsServer2000,单750M CPU,1G内存;

数据库成为瓶颈,95%的CPU占用率,大量的论坛更新和临时表的建立拖住了服务器。

升级后:2个WebServer,WindowsServer2003,双2.2G CPU,1G内存,1个DB Server,WindowsServer2000,双2.8G超线程CPU,2G内存,RAID-0磁盘镜像;

升级后的效果:CPU占用率只有6%,SQLServer占用了1.5G内存。

设计上的调整:
不再从数据层返回DataReader,而是返回实体类;
预先缓存(Cache aggressively);
用DataSet替代DataReader,因为DataSet可以被缓存起来;
每次数据库调用尽量返回多个值;
……

我自己的感觉就是,Faster CPU, More RAM, More Cache,呵呵。

自评这个ppt里面最“有益”的三句话:

Database background is critical. (数据库是祸根)
Hardware is inexpensive, people aren’t. (硬件便宜人力昂贵)
Memory is inexpensive, buy lots for SQL. (内存很便宜,多买点给SQLServer)