老赵点滴


  先做人,再做技术人员,最后做程序员。
  我的理想:“让外国人看中国人写的技术书籍和文章”。Try as I might
posts - 290, comments - 10751, trackbacks - 146, articles - 6
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2007年11月5日

     摘要: 本来今天是在写一篇关于LINQ的文章,不过写着写着忽然觉得有些找不着北的感觉,似乎有点过于发散了?于是来博客园逛了一下,正好发现有朋友发了一篇文章《.NET面试题,看看你的水平》,于是就在这篇文章里和目前正红火的小包子同学为某个问题进行了一番争论。而在吵吵闹闹的过程中看到这么一句话“pdb文件需要放在Debug目录下才有效果”,忽然觉得有个话题值得一说:“开发环境与运行环境”。回想起平时被问到的问题,发现有不少朋友对于开发环境和运行环境并不是分的非常清楚。那么就让我们从标题中的问题开始:“csproj文件究竟是做什么用的”。  阅读全文

posted @ 2008-08-04 08:57 Jeffrey Zhao 阅读(9108) | 评论 (45)编辑

     摘要: 缓存的作用自不必说,提高系统性能最重要的手段之一。ASP.NET作为一个成熟、强大的应用程序框架,缓存相关的设计自然是它不可或缺的一部份。ASP.NET中的输出缓存即为所谓的“OutputCache”。不过我们有时候需要更灵活和强大的缓存方式,这就CachePanel诞生的原因。本文将分为以下三个部分:
1、缓存的级别
2、ASP.NET的Output Cache及其缺陷
3、CachePanel的构建及使用  阅读全文

posted @ 2008-07-28 10:02 Jeffrey Zhao 阅读(10379) | 评论 (62)编辑

posted @ 2008-07-17 15:33 Jeffrey Zhao 阅读(14840) | 评论 (138)编辑

     摘要: 对于使用User Control生成HTML的方式,大家应该已经比较熟悉了,老赵也曾经写过一篇文章(《技巧:使用User Control做HTML生成》)来描述这个做法。在“我的衣橱”中大量使用了这种生成HTML的方法。不过当项目达到一定规模之后,这个方法的不足之处也慢慢地体现了出来。如果能解决这个问题,就无疑是一个锦上添花的举动……  阅读全文

posted @ 2008-07-14 13:24 Jeffrey Zhao 阅读(14230) | 评论 (61)编辑

     摘要: 以下是包同学导给我的清单。老赵的第二轮把关很严,杀了几乎99%的文章。不过似乎有少部分并没有经过我的手,可能是其他同学转过来的吧。第三轮老赵依旧会严格把关,肯定也会杀更多(包括通过其他同学第二轮的)文章。请大家监督,有疑问请及时告诉老赵。  阅读全文

posted @ 2008-06-14 16:48 Jeffrey Zhao 阅读(19570) | 评论 (22)编辑

     摘要: 在阅读很多朋友问题的过程中,以及平时和别人讨论中,亦或是园子里的文章中经常发现一些误用概念的情况。如果在概念上没有形成共识,那么在工作和交流上就会造成许多问题。因此,老赵已觉得有必要特地来澄清一些概念,解释一下这些概念之间的区别和联系。希望在明确这些概念之后,大家能够把注意力集中在对于具体问题的分析解决上,而不要让沟通成为瓶颈。
在这篇文章中,我希望澄清三组概念,它们是:
AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAX
LINQ / LINQ to SQL / LINQ to XXX
Lambda Expression / Expression Tree / 匿名方法  阅读全文

posted @ 2008-06-04 01:51 Jeffrey Zhao 阅读(17575) | 评论 (116)编辑

     摘要: 博客园要做精华集,老赵觉得很有意思。老赵被分配到的工作是ASP.NET AJAX和ASP.NET MVC。不过事实上老赵想搞得东西很多,还有ASP.NET、.NET 3.5也想参一腿等等。不过这篇文章想和大家讨论的并不是计划,因为有些东西老赵还没有确定,所以现在只是来谈谈一些想法。  阅读全文

posted @ 2008-05-22 09:35 Jeffrey Zhao 阅读(15167) | 评论 (73)编辑

posted @ 2008-05-10 17:50 Jeffrey Zhao 阅读(12800) | 评论 (19)编辑

     摘要: 在一年多前我发布了一系列文章(让UpdatePanel支持文件上传(1)、(2)、(3)、(4)、(5)),设法让UpdatePanel支持上传文件。可惜缺陷无数,当时收到了无数bug report但是我都没有时间(和兴趣)去解决,因此只是一个实验品中的实验品。这个组件还有一个问题就在于非常复杂,复杂的原因是为了解决iframe传输数据的问题。当时想了很多办法最终让IE6、7,FireFox 1.5支持了这个组件,但是对于Safari,Opera等浏览器就无能为力了。最近发现jQuery的Form插件能够在一定程度上支持我需要的功能,于是就有了简化并改进该控件的想法。虽然后来发现jQuery在这方面的表现并不如我想象中那么好……  阅读全文

posted @ 2008-05-04 08:57 Jeffrey Zhao 阅读(17547) | 评论 (44)编辑

     摘要: 前一段时间尝试为ASP.NET MVC构建了一个类似于UpdatePanel的AJAX解决方案,本文叙述了这个组件的设计思路以及使用方式,并提供了源代码以及示例程序。  阅读全文

posted @ 2008-04-27 23:59 Jeffrey Zhao 阅读(13192) | 评论 (89)编辑

posted @ 2008-04-27 17:18 Jeffrey Zhao 阅读(6021) | 评论 (15)编辑

posted @ 2008-04-21 14:51 Jeffrey Zhao 阅读(10651) | 评论 (75)编辑

     摘要: 合理使用匿名方法能够大大简化开发,提高代码质量。您善于使用匿名方法吗?  阅读全文

posted @ 2008-04-04 00:10 Jeffrey Zhao 阅读(10281) | 评论 (104)编辑

posted @ 2008-03-24 10:17 Jeffrey Zhao 阅读(7230) | 评论 (10)编辑

posted @ 2008-03-23 23:12 Jeffrey Zhao 阅读(7494) | 评论 (7)编辑

     摘要: ORM框架在删除数据方面一直有个尴尬,那就是无法通过指定条件批量删除数据。于是对于一些删除操作,我们不得不写SQL语句或者执行存储过程。幸运的是C# 3.0所拥有的强大特性足以让我们对LINQ to SQL的功能进行扩展。为了更好地进行项目开发,以及周五的一次技术交流,我为LINQ to SQL扩展了批量删除功能。  阅读全文

posted @ 2008-03-05 13:01 Jeffrey Zhao 阅读(14912) | 评论 (66)编辑

     摘要: 异步操作是提高Web应用程序吞吐量的重要手段,关于这方面的话题已经在前文《正确使用异步操作》中解释过了。对于大多数互联网应用来说,性能瓶颈数据库访问。换句话说,一个请求在数据库操作上所花的时间往往是最多的——并且占总时间的90%以上。因此,当Web应用程序的吞吐量因为数据库操作的阻塞而受到影响的话,我们可是尝试使用异步数据库操作来进行优化。那么我们又该如何使用LINQ to SQL进行异步查询呢?  阅读全文

posted @ 2008-03-01 01:51 Jeffrey Zhao 阅读(14066) | 评论 (32)编辑

posted @ 2008-02-27 23:56 Jeffrey Zhao 阅读(11868) | 评论 (28)编辑

     摘要: 本想写一点有关LINQ to SQL异步调用的话题,但是在这之前我想还是先写一篇文章来阐述一下使用异步操作的一些原则,避免有些朋友误用导致程序性能反而降低。这篇文章会讨论一下在.NET中有关异步操作话题,从理论出发结合实际,以澄清概念及避免误用为目标,并且最后提出常见的异步操作场景和使用案例。这样我们就可以知道什么时候该使用异步操作,什么时候会得不偿失。  阅读全文

posted @ 2008-02-24 22:03 Jeffrey Zhao 阅读(12324) | 评论 (27)编辑

     摘要: 目前LINQ to SQL的资料不多——老赵的意思是,目前能找到的资料都难以摆脱“官方用法”的“阴影”。LINQ to SQL最权威的资料自然是MSDN,但是MSDN中的文档说明和实例总是显得“大开大阖”,依旧有清晰的“官方”烙印——这简直是一定的。不过从按照过往的经验,在某些时候如果不按照微软划定的道道来走,可能就会发现别样的风景。老赵在最近的项目中使用了LINQ to SQL作为数据层的基础,在LINQ to SQL开发方面积累了一定经验,也总结出了一些官方文档上并未提及的有用做法,特此和大家分享。  阅读全文

posted @ 2008-02-19 03:02 Jeffrey Zhao 阅读(12357) | 评论 (51)编辑

     摘要: ScottGu同学最近在Blog上发布了一些有关MIX 2008和ASP.NET MVC框架的消息。  阅读全文

posted @ 2008-02-13 17:38 Jeffrey Zhao 阅读(8592) | 评论 (24)编辑

     摘要: 在Web程序中上传文件是很常见的需求,最近忽然想到了点这方面的内容,就随便谈谈吧,希望对大家有帮助。  阅读全文

posted @ 2008-02-12 17:25 Jeffrey Zhao 阅读(12913) | 评论 (56)编辑

posted @ 2008-02-01 21:16 Jeffrey Zhao 阅读(6442) | 评论 (114)编辑

posted @ 2008-01-31 22:48 Jeffrey Zhao 阅读(3135) | 评论 (1)编辑

     摘要: 明日博客园上海俱乐部活动,老赵有幸受邀与大家一起讨论一下ASP.NET方面的问题。经过了一段时间的思考,我准备这次的主题定为“ASP.NET WebForms、MVC与MVP的演变与结合”。  阅读全文

posted @ 2008-01-26 15:51 Jeffrey Zhao 阅读(4378) | 评论 (30)编辑

posted @ 2008-01-25 01:24 Jeffrey Zhao 阅读(3132) | 评论 (57)编辑

posted @ 2008-01-24 02:11 Jeffrey Zhao 阅读(2334) | 评论 (6)编辑

     摘要: 在之前的文章里我们已经谈论了有关URL Rewrite的几个主要的方面。在本系列的最后一篇文章中,我们就来讨论一下有关不同级别URL Rewrite的一些细节与特点。  阅读全文

posted @ 2008-01-13 16:35 Jeffrey Zhao 阅读(5345) | 评论 (41)编辑

     摘要: 在进行了URL Rewrite之后,经常会遇到的问题就是页面中PostBack的目标地址并非客户端请求的地址,而是URL Rewrite之后的地址,这就将我们服务器端的URL映射规则暴露给了客户端,甚至会引起应用程序错误。这无疑不是我们所希望的,那么我们该如何避免这个情况发生呢?本文就不同层面的URL Rewrite方式分别讨论了这个问题。  阅读全文

posted @ 2008-01-13 03:17 Jeffrey Zhao 阅读(5175) | 评论 (42)编辑

     摘要: 可能已经没有人会使用上一篇文章中的方法进行URL Rewrite了,因为提供URL Rewrite的组件早已铺天盖地了。如果要我推荐,我指挥推荐两款组件,那就是Intelligencia的开源组件UrlRewriter.NET和IIRF,它们分别在ASP.NET层面和IIS层面上进行URL重写。  阅读全文

posted @ 2008-01-13 00:27 Jeffrey Zhao 阅读(5928) | 评论 (48)编辑

     摘要: 之前觉得这个话题已经被谈滥了。URL Rewrite早已经被广大开发人员所接受,网上关于URL Rewrite的组件和文章也层出不穷,但是总是让我感觉意犹未尽,于是最终还是忍不住提笔写了这系列文章。这些文章不会谈论URL Rewrite的价值与意义,而只会谈论纯技术的内容。文章中也不会有详尽地实现分析,而是结合了我的经验,从应用角度来讲解这个话题。您已经知道的,您还不知道的,别处已经讲过的,或者还没有讲过的,希望这系列文章的“旧事重提”不会让您觉得沉闷,并且能让您了解ASP.NET中URL Rewrite的方方面面。如果您以后再遇到URL Rewrite方面的问题是能够想到这几篇文章,估计我做梦也会笑出声来。  阅读全文

posted @ 2008-01-12 19:52 Jeffrey Zhao 阅读(5842) | 评论 (26)编辑

     摘要: User Control大家肯定不会陌生,在使用ASP.NET的过程中,除了aspx页面,最常见的就莫过于ascx了。ascx是一个有独立逻辑的组件,提供了强大的复用特性,合理使用,能够大大提高开发效率。通过User Control直接生成HTML内容其实已经是一个比较常用的技巧了(尤其在AJAX时代),不过网络上这方面的内容比较少,很多人还是在苦苦地拼接字符串,因此在这里我通过一个实例简单介绍一下这个技巧。  阅读全文

posted @ 2007-12-30 23:06 Jeffrey Zhao 阅读(9269) | 评论 (210)编辑

posted @ 2007-12-24 00:03 Jeffrey Zhao 阅读(3242) | 评论 (17)编辑

     摘要: 有人说,客户端ID污染问题使脚本代码很难做到“内聚”。可能他的意思是将脚本代码提取到js文件中吧。但是我认为,这种污染“迫使”我们必须使用内聚性高的方式进行客户端开发。
这也算是一种因祸得福吧。  阅读全文

posted @ 2007-12-23 18:44 Jeffrey Zhao 阅读(6377) | 评论 (58)编辑

     摘要: 在ASP.NET的WebForms刚出现时,各种“演示”看上去真的很美。这个特点微软至今还保留着,各微软技术大会上的演示真的让人感到心潮澎湃。在我看来,那些“激素大会”更是一种推广策略,而并没有将目光集中在技术细节的本身。所以微软的东西似乎总是有入门容易提高难的“毛病”。开发人员被“宠坏”了,上一篇文章中有位朋友说这就是“穷人的孩子早当家”,还是有一定道理的。在.NET环境下我们就像是官宦子弟,不过这并不能成为我们习惯于“吃喝嫖赌”的理由。我们要合理利用富裕的环境带给我们的资源,但是要适当地抛弃一些不好的东西。  阅读全文

posted @ 2007-12-22 22:41 Jeffrey Zhao 阅读(6634) | 评论 (148)编辑

     摘要: 我还是想写这篇文章,我只会WebForms平反,而不会“贬低”MVC框架;我只是想证明WebForms的那些缺点到底真的是缺点,还是开发人员自身没有好好利用起这把利器。因此我将会根据我的经验,一一回应对WebForms比较常见的指责。如果措辞上有任何的不妥,也请大家多多包涵。  阅读全文

posted @ 2007-12-22 02:22 Jeffrey Zhao 阅读(10771) | 评论 (166)编辑

posted @ 2007-12-07 01:48 Jeffrey Zhao 阅读(2639) | 评论 (39)编辑

     摘要: 就是那本书,提出了14条开发高性能Web应用准则的书。  阅读全文

posted @ 2007-11-26 14:26 Jeffrey Zhao 阅读(6094) | 评论 (37)编辑

posted @ 2007-11-23 14:35 Jeffrey Zhao 阅读(3025) | 评论 (56)编辑

     摘要: 在《在Linq to Sql中管理并发更新时的冲突(2):引发更新冲突》一文中,我们描述了Linq to Sql检测在更新时是否产生了冲突的基本方法:将该记录每个字段原来的值和更新时的值进行对比,如果稍有不同则意味着记录被修改过,因此产生了更新冲突。不过您是否有这样的感觉,这种方法实在累赘了一些?因此Linq to Sql提供了另外一种检测并发更新冲突的方式:使用记录的时间戳。这并不是Linq to Sql特有的功能,如果您了解其他的ORM框架的话,就会发现诸如Hibernate也提供了类似的机制——自然,在使用上不会像Linq to Sql那样方便。  阅读全文

posted @ 2007-11-23 09:21 Jeffrey Zhao 阅读(3534) | 评论 (18)编辑

     摘要: 复用查询计划是Sql Server降低CPU开销,提高性能的一个重要手段。但是Linq to Sql可能无法复用查询计划,这是怎么回事儿呢?  阅读全文

posted @ 2007-11-21 08:43 Jeffrey Zhao 阅读(3465) | 评论 (31)编辑

posted @ 2007-11-20 19:53 Jeffrey Zhao 阅读(1458) | 评论 (2)编辑

     摘要: 在上一讲中,我们提到了一些诸如“乐观并发控制”、“悲观并发控制”的概念,以及察看Linq to Sql自动生成sql语句的方法。从这篇文章起我们将继续来查看Linq to Sql在管理并发更新时是如何发现冲突问题的。  阅读全文

posted @ 2007-11-20 19:30 Jeffrey Zhao 阅读(2413) | 评论 (14)编辑

posted @ 2007-11-12 22:38 Jeffrey Zhao 阅读(1981) | 评论 (42)编辑

     摘要: 为您的页面也添加一个Web Live Messenger吧!  阅读全文

posted @ 2007-11-10 00:37 Jeffrey Zhao 阅读(6282) | 评论 (75)编辑

posted @ 2007-11-05 11:52 Jeffrey Zhao 阅读(2000) | 评论 (14)编辑