摘要: 此图以Linq2Sql为例和Linq2Objects进行了比较性剖析,可以把Linq2Sql换成其它的Linq Provider,则图中Dynamic SQL那一环节需换成其它相应的处理功能。(按:picture source from<<C#in Depth>> 2nd.EditionJon Skeet) 阅读全文
posted @ 2011-10-27 17:37 James Leng 阅读(293) 评论(1) 推荐(0) 编辑
摘要: 说的是C#如何体贴程序员,而非.NET Framework。如果打算写一个类似System.Linq.Enumerable.Where的extention method,假设命名为Filter,下面是C#为满足此需求下的功夫: public static IEnumerable<T> Filter<T>(this IEnumerable<T> source, Func<T, bool> predicate) { if (source == null || predicate == null) { throw new ArgumentNullExc 阅读全文
posted @ 2011-10-26 08:04 James Leng 阅读(1067) 评论(3) 推荐(0) 编辑
摘要: 最近组织了一次中心内部Scrum研讨会,因此,对Scrum下了点功夫, 去官网下了几个资料,琢磨了一番。觉得相对于UP和XP而言,Scrum有以下特点:1. 其橄榄球Metaphor(隐喻)很传神,较好地映射了Scrum的精髓。在这一点上,印象中其它Agile套路无出其右,唯有CrystalClear的Game隐喻稍可与之比美。2. 纯粹的管理视角,不关注技术视角,甚至一些管理和技术均相关的范畴也绝口不提,如XP强调的TDD,Refactor,Continuous Integration,UP强调的Architecture,Model等。3. 没有项目经理角色。很显然,ScrumMaster不 阅读全文
posted @ 2011-10-22 12:50 James Leng 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 不同的编程模型往往意味着不同的Mind或Metaphor,从大视角来看,可以按不同分类得到如下不同组合:Declarative vs Imperative;Procedural Programming vs Functional Programming;Structured Progarmming,OOP+AOP,Component Based,Service Oriented;meta-programming vs ?;.NET作为一个平台,和编程模型相关的主要是Language和Framework。就个人体会而言,.NET平台对以上编程模型着实下了一番“取其精华,去其糟粕”的功夫。众所周知 阅读全文
posted @ 2011-10-22 12:48 James Leng 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 说的是C#如何体贴程序员,而非.NET Framework。这是C#对Delegate相关领域下的精微功夫:List<Product> products = Product.GetSampleProducts();foreach (Product product in products.OrderBy(p => p.Name)) //entention method{ Console.WriteLine (product);}上面的代码等价于下面的,如何,C#体贴不?List<Product> products = Product.GetSampleProduct 阅读全文
posted @ 2011-10-21 08:55 James Leng 阅读(449) 评论(0) 推荐(1) 编辑
摘要: 说的是C#如何体贴程序员,而非.NET Framework。这是C#对getter, setter, local variable, nullable下的细微功夫: public string Name {get; set;} ..... var someString=""; .... int? count; .... var result = count ?? 1; ....上面的代码等价于下面的,如何,C#体贴不? ....(不太可能有人不知道吧!) 阅读全文
posted @ 2011-10-21 08:30 James Leng 阅读(1451) 评论(0) 推荐(0) 编辑
摘要: 说的是C#如何体贴程序员,而非.NET Framework。这是C#对Dispose调用下的细微功夫: using(var obj= new MyClass( )) { obj.SomeMethod( ); }上面的代码等价于下面的,如何,C#体贴不? MyClass obj = new MyClass( ); try { obj.SomeMethod( ); } finally { if(obj != null) { IDisposable disposable = obj; disposable.Dispose( ); } }(按:code source from<<Progr 阅读全文
posted @ 2011-10-20 08:50 James Leng 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 说的是C#如何体贴程序员,而非.NET Framework。这是C#对Monitor使用下的细微功夫: MyClass obj; //Some code to initialize obj; lock(obj) { obj.DoSomething( ); }上面的代码等价于下面的,如何,C#体贴不? MyClass obj; //Some code to initialize obj; Monitor.Enter(obj); try { obj.DoSomething( ); } finally { Monitor.Exit(obj); }(按:code source from<< 阅读全文
posted @ 2011-10-20 08:50 James Leng 阅读(241) 评论(0) 推荐(1) 编辑
摘要: 说的是C#如何体贴程序员,而非.NET Framework。这是C#对Finalizer下的细微功夫: public class MyClass { public MyClass( ) {} ~MyClass( ) { //Your destructor code goes here } }上面的代码等价于下面的,如何,C#体贴不? public class MyClass { public MyClass( ) {} protected virtual void Finalize( ) { try { //Your destructor code goes here } finally .. 阅读全文
posted @ 2011-10-20 08:49 James Leng 阅读(347) 评论(2) 推荐(1) 编辑
摘要: 上半年作为甲方项目经理半路接手了一个SSO项目,很不幸乙方一直未能搞定这个项目,最后乙方要求接入的Web系统必须采用Forms认证,实在令人无语。作为一名.NET老兵,多忙于各种业务系统的开发,时间长了,ASP.NET Core也下了不少功夫,直觉就是如果采用Forms认证,基于ASP.NET自身的一些支撑,做少量开发就可以搞定Web系统的单点登录。Google了一番之后,基本上就了然了,要点其实很简单,就是“跨域共享Cookie”。当然这个解决方案有不少局限性,如:1. 要求采用Forms认证;2. 要求采用ASP.NET2.0以上;3. 要求各Web系统采用同一个二级域名,如hrm.das 阅读全文
posted @ 2011-10-19 17:12 James Leng 阅读(532) 评论(0) 推荐(0) 编辑