.NET编程模型体会(Programming Model/Paradigm)

不同的编程模型往往意味着不同的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平台对以上编程模型着实下了一番“取其精华,去其糟粕”的功夫。众所周知的一点,meta-programming是整个.NET平台很基础性的一个特性,这里主要是指Generic和Reflection。

 

就Language来言,最具代表性的C#颇有集大成的味道,但又很好地保持了其简约风格。C#整体上属于Imperative,以Procedural为主,局部融入了Declarative和Functional要素。当然其属于OOP+AOP,但实践中,大家着实写了不少OO度不咋地道的代码,也就是Structured Programming或更糟糕了。

 

就Framework而言,其包含的编程模型很丰富,可以说是百花齐放,精彩纷呈,整体上属于Imperative,以Procedural为主,部分属于Declarative,属于OOP+AOP+Component Based,部分属于Service Oriented,以下是个人体会:

ADO.NET属于Imperative。

ASP.NET属于Declarative+Imperative。此领域又分WebForms和MVC二种编程模型。

WPF属于Declarative+Imperative。

WCF属于Declarative+Imperative,属于Service Oriented。由于秉持松耦合理念,AOP无处不在,令人赞叹不已。

WF属于Declarative+Imperative。其秉持“Program Is Data”理念,有meta-programming味道(这里是指DSL),为DSL打开了一扇门,实为DDD粉丝为数不多的利器之一。

EF属于Declarative+Imperative。乃DDD粉丝所钟爱的基本武器之一。

WindowsForms属于Imperative。

EnterpriseService属于Declarative+Imperative。其实质是把COM+包装了一下。

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭