1、不少人向我抱怨能够找到的实用的WebPart太少了,Microsoft在它的网站上其实提供了不少WebPart、Template、Tools等好东东的
下载。当然,自己DIY,丰衣足食。
2、
Microsoft Solution for Internet Business 2.5版发布了,MSIB里面描述了如何高质量的用Windows Server System来构建Internet站点。网管必看!
3、想知道如何设计和使用一套Framework吗?看看
这里。这篇文档对Framework的一些通用原则、IoC、Spring做了简洁明了的描述,绝对推荐!(感谢文章作者,和jjx在.Net评测网上的推荐)
4、
Improving .NET Application Performance and Scalability正式在MSDN上登陆了!它包含了如何在设计、编码、数据库设计、测试等各个阶段对系统的性能进行调整和优化的各种原则和指南。
第四辑讲述了如下内容:
将WebPart打包成(.CAB)部署到SPS服务器上;
升级已经部署的WebPart;
将WebPart打包成(.MSI)部署到SPS服务器上。
第五辑将讲到Connection WebPart了,可能是最难的部分了,心里开始有点忐忑不安...
下载:WalkThrough-WebPart4.ppt(zip打包格式)
做为一位普通的程序员或者客户,如何说服Borland做某件事(开发或支持什么什么)呢?
Danny Thorpe(Borland公司Delphi和.NET的主Architech)说,很简单,“Show us the money.”,因为“我们不会为了艺术的理由去做一个艺术品”。
这个回答着实伤害了忠实的Borland产品用户的心,有一个人回复说,其实还有一个更好的方法,就是“stop using Borland products”,而另一个人则更加尖锐的说,“Todays Borland...More comercial.More trash.Less art.Less passion.Less innovation.Less imagination.Where's Borland before?”。
看来现在Borland要做的是如何将它过去做出的承诺尽快兑现,以安抚众多仍然支持Borland的程序员的心。
根据Borland的计划,今年第二季度,将发布Delphi 7.1,这可能是最后一个支持Win32平台的Delphi版本了(个人的猜测),Borland已经打算将未来的Delphi Win32版本集成进入Delphi.NET中,在一个统一IDE中开发.NET和Win32程序。
如果我是一个Delphi程序员,那么全部拥抱.NET也许是最明智的选择。Delphi2CS是一个很有意思的产品,它可以将Delphi7(不是同为.NET平台的Delphi8哦)的Win32项目转换成一个C#的.NET项目,将VCL控件自动转成相应的WinForms控件。
《WalkThrough : SharePoint WebPart入门指南》已经写了三辑了,感谢很多朋友的支持和鼓励。下一辑计划写比较简单的WebPart的部署(CAB方式和MSI方式),应该能够很快完成。但是以后还有一个很复杂的内容,就是Connection WebPart,现在还没有主意如何写关于它的WalkThrough,如果你有一些不错的资源,请告诉我。
明天就要去上海参加微软的MVP会议了,和其他的MVP聚聚,肯定是件很开心的事情。不过很可惜,到现在还没有机会去北京真正见见开心就好的真容,呵呵。
主要讲解了如何在WebPart中如何使用Code-Behind方式编写的User Control,并演示了如何将所有的内容(WebPart、UserControl、包括ascx文件)全部并入到一个最终的Assembly(.dll)文件中,以简化部署。
下载:
WalkThrough-WebPart3.ppt(zip格式)下一辑准备演示一下如何用(.CAB)方式和(.MSI)方式在SPS服务器上部署WebPart了。
包含下面的内容:
在WebPart中创建可让用户修改的自定义属性;
在WebPart中访问SharePoint Object Model;
WebPart演示是一个可以根据文件的最后修改时间倒序显示文档库中所有文件的WebPart,浏览的用户可在页面的属性Panel中直接指定要显示的文档库的名称和显示文件的数量。
下载:
WalkThrough-WebPart2.ppt(zip格式)PowerPoint用起来N不顺手,大部分时间浪费在探索PowerPoint中...
今天做了一个SharePoint WebPart入门指南,ppt格式,简洁明了,一看就懂(先吹一会...)。下载(zip格式)
建议大家以后可以做一些类似的WalkThrough共享,呵呵。
这两天网上开始流传一则关于Longhorn的流言,内容大抵是说Microsoft为了使Longhorn在2006如期推出,计划大幅削剪WinFS(甚至有的报导说WinFS将只是NTFS+而已)。
报导的来源最初是出自《Business Week》网站上的一篇文章How Microsoft Is Clipping Longhorn。
微软员工Riding Herd已经在他的Blog上正式否认了这个传言。根据他的说法,Longhorn自PDC预览版发布以后,已经在内部又发布了两个MileStone版本,并且,虽然在一些特性上的确有所删节,但是任何产品的开发过程中都会存在这样的情况,而且他所知的删节都是非常非常小的地方(“But the scope of these cuts is so small that it’s barely worth mentioning.”),WinFS几乎没有受到任何影响。
Riding Herd怀疑那篇报导的作者Jay Greene可能是因为听到了微软在一次谈话中涉及到的关于Longhorn Server的部分而产生了误解。
Person p1, p2;
// ...
Console.WriteLine( p1 == p2 );
上面的代码用来判断p1和p2是否指向同一个对象,但有某种情况下,我们却不能保证其正确性,那就是当我们不能肯定Person类的定义中是否重载了“==”的时候。也许根据Person的定义,只要两个Person对象的ID属性相等,那么应用“==”就会返回true。
这个时候,我们应该:
Object o1 = p1;
Object o2 = p2;
Console.WriteLine( o1 == o2 );
Yes,当C#编译器发现“==”两边的对象的声明类型是Object(而不论他们的实际对象是什么)时,C#编译器都不会应用多态原则,调用实际类型中定义的“==”,而会将这两个对象(的引用)载入到堆栈,然后执行一个“ceq”指令,比较他们是否指向了同一个对象。
.NET为了方便我们,提供了一个静态的Object.ReferenceEquals(Object o1, Object o2)来判断参数中的两个引用是否指向同一个对象,它的实现是:
public static bool ReferenceEquals(object o1, object o2)
{
? return ( o1 == o2 );
}
所以,我们上面的那个代码示例可以简单的写成:
Person p1, p2;
// ...
Console.WriteLine( Object.ReferenceEquals( p1, p2 ) );
1、ObjectSpaces in CTP
在我安装了VS2005 CTP版本以后,查看附带的.Net Fx SDK时,首先就发现了讲解ObjectSpaces相关的内容被去掉了(PDC版本中带的.Net Fx SDK文档中包含了详细的ObjectSpaces文档),原因嘛,因为CTP版本中包含的ObjectSpaces和PDC版本中的相比,发生了很大的变化:
最重要的变化,就是ObjectSpaces开始支持Generic了,PDC版本中:
ObjectReader reader = os.GetObjectReader(typeof(Customer), ““, ““ );
CTP版本中:
ObjectReader〈Customer〉 reader = os.GetObjectReader〈Customer〉(““, ““ );
其他的变化包括:新增了一个PagedObjectReader以支持分页,ObjectSpace类增加了更多的方法等等...
而对于ObjectSpaces的发布,比较统一的意见是ObjectSpaces将不被作为.Net Fx 2.0的一部分发布,而是会在Whidbey正式发布后一段时间,作为一个Add-on Pack发布出来,同时ObjectSpaces还会增加一些支持WinFS的特性。可以想象未来ObjectSpaces可能还会有不小的变动。
而公认ObjectSpaces最大的弱点,就是它将只支持SqlServer(97、2000、Yukon)。在用它构建DAL时,就要考虑好以后是否会对数据源进行移植。
相关链接:
http://www.alexthissen.nl/Weblog/PermaLink.aspx?guid=5f3f1285-e24c-495b-acd0-029c6ab96f94
2、Yukon, a new platform
在DevX上有篇文章,Kiss the Middle-tier Goodbye with SQL Server Yukon,文章的内容是说Yukon由于其丰富的“编程”特性,我们已经可以将大量的处理直接写到“Database Tier”上面,而且可以获得更好的性能,也许,我们将(在一定程度上)不需要一个专门的Middle-tier了。
相关链接:
Is Yukon the end of the middle-tier?
1、最近最轰动的新闻就是Microsoft和SUN的和解了,真让人感叹商场无常啊。不过也从一个侧面反应出Microsoft和SUN都意识到了现在Java和.NET都已经成长到谁也不可能消灭谁,在相当长的一段时间内,很可能是双方共同发展,所以,对双方最有利的做法就是维持这样的一个“两极世界”(就像冷战时期的美苏),并同时把其他冒出来的第三方力量打压下去。
当然也有Microsoft的员工不忘调侃一下McNealy,这里收录了过去McNealy对Microsoft的“经典”评价。
2、XC#
XC#是什么东东?和C#有什么联系?呵呵。XC#是基于C#的一个扩展编译器,做为VS.NET的一个Add-in,它会在C#编译器编译完成后,再用自己的编译器将自己定义的扩展符号(以Attribute形式体现)编译成标准的IL嵌入最终生成的Assembly。
XC#能完成的扩展有:混淆代码、分析并校验代码、前置条件和后置条件的支持(我认为最有价值的就是这一点)等。
比如我有一个这样的函数:
public UserInfo BuildUserInfo( String username, Int32 age)
为了保证两个参数合法,同时保证返回的UserInfo对象不为空,我们或者加上检测的代码:
if ( (username != null) && (username.Length > 0))…
或者使用断言:
Debug.Assert( username != null)…
但XC#可以让我们用更加“优雅”的语法来定义这个函数的前置和后置条件:
[ Requires(“username != null” ] // 前置条件
[ Ensures(“result != null” ] // 后置条件
public UserInfo BuildUserInfo( String username, Int32 age)
或者,更灵活的写法:
[reture : NotNull]
public UserInfo BuildUserInfo( [NotNull] String username, Int32 age)
是不是有点Design By Contract的味道?? XC#(最新版本是2.0,开始收费了,而前一个版本1.2是免费的。从我各自安装并查看其帮助文件上看,1.2和2.0几乎没有什么功能上的差别,但是在我试验1.2版本时,它对前至和后至条件的支持有些问题。
3、微软发布了Smart Client Architecture and Design Guide,这份指南着眼于WinForms Smart Client的架构设计。不过现在还并不完整,只包含了介绍、Offline设计和多线程设计三章。另外,LonghornBlogs上一篇The Road to Longhorn Goes Through Windows Forms也值得一读,文章解释了即使Longhorn WinFX是更好的程序架构体系,但是WinForms仍然是现阶段非常有价值的技术。
我现在只对WinForms在企业内部的分布式架构技术的选择有点头疼,因为微软推荐的ES/COM+实在不是我擅长的,但又不甘心用.Net Remoting这样的以后很可能支持度很低(MS已经表示.Net Remoting CANNOT talk with Indigo on-the-fly)的技术,WSE又担心效率不行…Indigo在完成后,会发布一个能运行在WinXP上的单独分离版本,还是挺期待的。
已经记不清从什么时候开始,B/S已经成了我们开发的系统里面最主要的程序模型,在网络浪潮的冲击下,传统的Windows程序所面临的一些问题(部署困难、升级困难、维护困难、安全问题)使得基于Web的系统大行其道,一下子,几乎只要有可能,所有的系统都开始采用B/S开发。当然,Windows程序在某些场合也是不可能被替代的(就像CSDN里面有人反驳的那样,PhotoShop永远别想做成B/S的模样),但的确更多的系统采用了Web架构。
在这篇Blog里面,引用了一项很有意思的数据。www.asp.net和www.windowsforms.net这两个站点分别是微软的WebForms和WinForms的官方站点,4/3上午,这两个站点的论坛的统计数据是:
www.asp.net:413,687个注册用户,141,522个话题,519,521篇帖子
www.windowsforms.net:4,466个注册用户,4,510个话题,13,458篇帖子
那篇Blog的作者分析原因可能是:1、大部分的开发都转向了web,所以大家都想多知道点asp.net的事;2、windows程序员们已经有了足够的知识足以开开心心的完成他们的开发了,所以他们没啥问题可问;3、www.windowsforms.net的名声远远不如www.asp.net,所以较少人光顾。
但是,在这样的几乎“一边倒”的形式之下,我却渐渐的感到了Windows程序的回归,而且这次回归,“杀回来”的已经不仅仅是过去老样子的Windows Application了,而是装备更精良的、表现形式更丰富的、实现方式更多的各种各样的Rich Client。
1、JavaScript + XMLHTTP(Bindows + Janc)
我个人认为这是一对非常好的伙伴,结合起来,可以完成我们想象不到的非常Cool的应用,JavaScript用于客户端界面的显示和处理,XMLHTTP用于客户端与服务器的信息传输。
JavaScript在客户端的表现力不容置疑,看看www.bindows.net所表示出来的能力,利用JavaScript几乎可以实现Windows应用程序所能干的大部分事情,而且Bindows提供了一个封装好的可以直接利用的JS类库,省了我们大把的力气。
XMLHTTP一直以来常被用于实现“无刷新”的Web页面,它和JavaScript配合,可以完成数据从服务器和客户端的传输。Janc是Lostinet实现的一套.NET类库,完整的封装了服务器端XMLHTTP接口,程序员不需要了解XMLHTTP的细节,就可以编写自己的XMLHTTP应用系统。(Lostinet好像在做Janc的下一个版本,叫做Rane)
想想,用Bindows构建客户端的显示界面,而与服务器的传输用Janc来实现,岂不是天作之合?Web系统原有的界面交互性差、页面刷新等问题都可以很好的解决。
2、Smart Client + WebService
从这次的DevDays04,可以看到微软正在越来越重视WinForms。现在微软把新一代的WinForms程序称为Smart Client(开始我看到这个名字也认为是手机、PPC等移动客户端),它更好的解决了传统的Windows程序原有的部署(用ClickOnce可以很好的Publish到Web服务器、FTP服务器、局域网共享目录等地方)、升级(自动的版本检测、下载、更新)、安全等问题。其实.NET很早就提供了类似的功能,比如Updater Application Block很早就出来了。
Smart Client加上WebService,不但给用户更丰富的界面体验,而且和网络有了更好的交互性,即使在Offline的时候,也可以利用缓存来继续为用户服务。
Smart Client面临的最大的问题,仍然是现阶段.Net Fx在客户端的安装问题,即使只是一个20M的分发包,有时候要说服客户安装也不是一个简单的问题。
3、Avalon + Indigo
Yes!在将要到来的Longhorn时代,WebForms和WinForms终于融合在了一起。Avalon(XAML)构建的客户端,加上Indigo的通讯架构,将带给我们前所未有的软件使用体验。
4、其他
虽然Java刚刚出现的时候,Applet被当作一项主要技术被大力宣传,但现在的确应用已经越来越少了。Java WebStart好像现在是被SUN大力推广的一项Rich Client技术(对Java不了解,不敢随便乱说…)。
后记:
在写完上面的文字并发布以后,随手打开了CSDN的文档中心,然后立刻发现了一篇观点和上面文字一致的文章,《迎接Client/Server模式的回归》,并从这篇文章里面找到了另一篇文章的链接,《Back to the Future with Smart Clients》。感觉是:1、天哪,我真的没有抄袭...2、看来有这个想法的不是只有我一个人...
WhiteHorse 无疑是VS2005中最令人期待的东东之一。可惜,在现在的VS2005CTP中,可能只能“预览”一下WhiteHorse的身影…
文章转移到了:
http://bbs.dotnettools.org/activeubb/NewsDetail.asp?GroupName=VS2K5%28Whidbey%29%BA%CDFX2%2E0&DaysPrune=365&lp=1&id=1820
根据ccboy的信息:
CTP其实是pd4,也就是Partner Drop的第四个版本,当然离Beta还远呢,PD版本的做法是最近才有的,以前没有这样的版本号...
前阵子休假一周,把《重构》带着陆陆续续的看,现在看得也七七八八了。最大的感觉是,书中所阐述的重构的原则的意义大过具体步骤的指导,其实总结一下,倒是一份不错的Design & Code Guideline,呵呵。
不过最最重要的,我觉得就是“随时重构”这一准则,程序员都是懒惰的家伙,能够偷懒的时候,我绝不会花费更多的力气去敲入更多的代码。抵住诱惑!Refactoring Anytime!
第三期《程序员》介绍了不少Java平台下Web表现层的MVC框架,Struts、JSF等等,想到.NET平台下实在很缺乏这些东西,除了UIP,好像就没有一个“可用的”框架了。何况现在的UIP也实在算不上一个成熟的作品。
VS2005 CTP大家一定都拿到了,我的感觉离Beta还有一段不小的距离。不知道计划中的6月份的beta能不能按时推出。