随笔分类 - Technology
摘要:21 Craig Larman - Applying UML and Patterns (3rd Edition) 感言: RUP/UML如日中天那阵子,备受名家推崇的OOAD经典之一。UP/UML/Design Pattern溶于一体,贴近实战,所用的例子也均是常规企业应用。文笔平平无奇,特点是细节上无微不至,将OOAD如何落地交代得清清楚楚。作者是敏捷开发重量级人物,近几年兴趣已经由UP转向Scrum了。我猜测,现在Craig鼓吹Scrum的时候,不太可能宣称UP的那些知识是多余的吧。无论具体项目如何敏捷,总有孙悟空跳不出如来手掌的味道。换句话来说,高手可以敏捷,高手带着也可以敏捷,其它.
阅读全文
摘要:早几天,笼统地就经典感慨了一番,接着来个逐一点评,算是有始有终了。经典是用来阅读而非膜拜的道理,自然是明白的,虽然我是属于比较推崇经典那一类的。阅读大致就是一个和作者交流的过程,有兴致时无妨感慨点评一番,算是对作者的一种致敬吧。1 Steve McConnell - Code Complete: A Practical Handbook of Software Construction 感言:二获Jolt Awards,算得上众望所归了,印象中,国内书商有炒作过第二版。作者主持过SWEBOK工作,所以写起书来也明显带有百科全书式的味道。我对SWEBOK一类百科全书式的东西,一般是不太感冒的,.
阅读全文
摘要:说的是Framework如何体贴程序员,而非C#。这是Framework对Concurrency相关下的细微功夫: using System.Runtime.CompilerServices; public class MyClass { [MethodImpl(MethodImplOptions.Synchronized)] //体贴不? public void DoSomething( ) { /* Method code */ } //Class members }这段代码通过[M...
阅读全文
摘要:说的是Framework如何体贴程序员,而非C#语言。这是Framework对Concurrency相关下的细微功夫: using System.Runtime.Remoting.Contexts; [Synchronization] //体贴不? public class MyClass : ContextBoundObject { public MyClass( ) {} public void DoSomething( ) {} //Other methods and data membe...
阅读全文
摘要:此图以一个具体的Linq Query为例,对IEnumerable<T>和IQuerable<T>进行了比较性剖析。如果users支持IQuerable<T>,则走右边分支,如果仅支持IEnumerable<T>则走左边分支。玄机尽在图中,尤其是expression tree作为众多Linq Provider变戏法的关键性支撑作用,可谓不言而喻。此图和一图胜千言 – Linq2Ojects vs Linq2?相得益彰,前者是具体的实例,后者是抽象的机理。而IEnumerable<T>对应的是Linq2Objects,IQuerable
阅读全文
摘要:此图以Linq2Sql为例和Linq2Objects进行了比较性剖析,可以把Linq2Sql换成其它的Linq Provider,则图中Dynamic SQL那一环节需换成其它相应的处理功能。(按:picture source from<<C#in Depth>> 2nd.EditionJon Skeet)
阅读全文
摘要:说的是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
阅读全文
摘要:不同的编程模型往往意味着不同的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平台对以上编程模型着实下了一番“取其精华,去其糟粕”的功夫。众所周知
阅读全文
摘要:说的是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
阅读全文
摘要:说的是C#如何体贴程序员,而非.NET Framework。这是C#对getter, setter, local variable, nullable下的细微功夫: public string Name {get; set;} ..... var someString=""; .... int? count; .... var result = count ?? 1; ....上面的代码等价于下面的,如何,C#体贴不? ....(不太可能有人不知道吧!)
阅读全文
摘要:说的是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
阅读全文
摘要:说的是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<<
阅读全文
摘要:说的是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 ..
阅读全文
摘要:上半年作为甲方项目经理半路接手了一个SSO项目,很不幸乙方一直未能搞定这个项目,最后乙方要求接入的Web系统必须采用Forms认证,实在令人无语。作为一名.NET老兵,多忙于各种业务系统的开发,时间长了,ASP.NET Core也下了不少功夫,直觉就是如果采用Forms认证,基于ASP.NET自身的一些支撑,做少量开发就可以搞定Web系统的单点登录。Google了一番之后,基本上就了然了,要点其实很简单,就是“跨域共享Cookie”。当然这个解决方案有不少局限性,如:1. 要求采用Forms认证;2. 要求采用ASP.NET2.0以上;3. 要求各Web系统采用同一个二级域名,如hrm.das
阅读全文
摘要:和前身OCS2007相比较,Lync2010原生客户端的扩展性大大缩小了,但是提供了很好的客户端SDK,整个系统架构也有较大变化。由于Lync2010原生客户端实在太简单,用惯了QQ的国人,实在无法接受以下功能的缺失:组织结构树截屏短信离线消息消息提醒一番评估之后,决意从长远看,定位于打造公司级桌面的统一入口,因此决定自主开发。基于Lync2010客户端SDK和WPF,中间遇到二个问题,通过供应商找MS也没搞定,或许是商务原因不愿给予支持吧,好在最后终于都自己解决了。从此以后,可以按需扩展此桌面入口了。(感谢周工,刘工,傅工,莫工的工作!)
阅读全文
摘要:工作流(WorkFlow )无疑是一个含义较过载的概念。这个领域,搞市场的还是比较幸运的,不存在挖空心思向客户解释啥是工作流的问题,试问有几个管理人员谈起工作流不是滔滔不绝,头头是道呢?在管理人员看来,工作流就是所谓管理流程,工作流程,操作流程嘛。而像我这样推崇DDD的开发人员,坦白说,对工作流一直有点晕乎乎的。工作流有时是一个用例,有时又是多个用例;工作流有时一个Method就搞定了,有时又得上WF或K2这类核武器;工作流有时属于交互类逻辑,有时又属于装配类逻辑,有时又属于DomainModel;......公司基于K2已经整了几百个流程,个人总觉得需要多下点功夫多关注一下,这个国庆抽空研读
阅读全文

浙公网安备 33010602011771号