Welcome my friend. Here is Standing's lifetime miracle......

Always Standing

Lifetime...
小特工笔记(一) - Reading notes of “CLR via C#”

最近读了Jeffery RichterCLR via C# (原版)。没什么可说的——好书!

当初读李建忠老师翻译的Applied Microsoft .NET Framework Programming时就很期待第二版。

看了Jeffery儿子的“前言”觉得很有意思,这小鬼三岁,似乎根他父亲所钟爱的.NET Framework年岁相当。真不知道当这小鬼的时代到来时还会不会有.NET框架存在J,那时候我们又在研究什么样子的“技术”。

下面是一些读书札记。

Introduction

微软有一个很明显的做事原则——To make complicated things easy。(虽然有些时候给人感觉做得有些过分哈哈)

对开发者来说体现在:MFC,VB6,ASP,ATL 等技术。

但是这些技术都是各自负责一个领域,没有统一的设计。换句话说,如果你的web应用程序需要使用com,那么你就得学习ASPATL(这只是例子不能仔细推敲哦J),更糟糕的是你还不得不学习两种以上的编程语言,比如说JScriptVB ScriptC++等等。

这就是为什么有了.NET框架。

.NET出现之前,那些技术是针对不同领域来提供的解决方案,而.NET框架提供了一个更高层次的系统级别的解决方案。结果就是大家会拥有一套统一的编程模式和一套统一的API,而且是对各种类型的应用都适用的。

.NET的另外一个很激动人心的特性就是他支持多种语言,你可以用你喜欢的语言开发.NET应用程序。

/*一切都显得那么自然,似乎.NET框架的诞生是顺应了“民意”,以至于Jeffery用他的职业生涯担保,我们永远不会因为使用.NET而感到后悔J*/

The Development Platform: The .NET Framework

.NET框架大体上分两部分——CLRFCL

CLR (Common Language Runtime) 是核心,他提供一个完整强大的运行时,.NET应用程序必须遵循CLR的模式运行。CLR具有自己的文件加载器,垃圾回收机制,安全机制,线程池等等。CLR提供面向对象的支持。(事实上IL本身可以看作是一种面向对象的高级汇编语言)。

FCL (Framework Class Library) 是一个API集合。

.NET框架的一些令人激动的特性:

  Consistent programming model

相比现在的DLLCOM来说,.NET框架提供的是一个统一的模型。

  Simplified programming model

这是最激动人心的一个特点——简单。之前的应用比如Win32应用程序,COM组件等都各自有各自的规定,一旦交叉起来就更加复杂,现在的.NET框架打破了束缚,一套新的,统一的,简单的模型提供给开发者,这不能不说是我们的福音。

  Run once, run always

这个意思是如果你第一次运行成功了,那么以后永远会成功。(应该说正常情况下都会成功J

这个针对著名的Dll Hell问题。DLL Hell简单的说,就是一个程序A在部署的时候不小心覆盖了一个DLL,而这个DLL同时被另外一个程序B使用,这有可能导致程序B的异常。

.NET框架给出的解决方案很简单,把不同程序引用的组件分开,自己用自己的版本,不要共享一份儿。(呵呵,多朴实的想法J,其实我感觉解决DLL Hell问题只是.NET框架的优秀设计导致的“无心插柳柳成荫”)

  Simplified deployment

简单的部署!(这还隐含着另一层意思,那就是容易卸载J,大家应该还记得当初出现“完美卸载”的原因吧 J。)

.NET框架程序集之间的引用不需要外部信息,这解放了注册表,一切几乎都可以用copydelete来进行)

  Wide platform reach

跨平台特性。

对于传统的非托管程序来说,同时运行在x86IA64下是不可能的(除非你出两个版本)

而对于.NET应用程序来说,这个很简单,只要相应的机器上有配套的CLR+FCL。原因就在于托管程序集里没有具体的机器代码,他包含的是中间语言(IL)代码。CLR在运行时决定将IL编译成什么类型的机器代码。

这样,你的应用程序就可以做到一次编写到处运行(理论上是这样的J

  Programming language integration

多语言支持很自然,因为有CTScommon type system)。其实用什么语言已经成为了一种形势,想象一下当你的代码被统统转换成IL的时候,谁还关心你当初是用什么写的呢?

  Simplified code reuse

这个不用多说了吧,统一不就是为了交流方便互通有无么,呵呵。

  Automatic memory management (garbage collection)

这个非常的牛X。不多说了,对于C/C++程序员来说这就是个神话。

  Type-safe verification

类型安全主要是指CLR不允许越界操作,不允许传递根定义不符合的参数,不允许随便指定执行入口点,总之就是CLR不会做他不了解的事情。这样就避免了很多错误和安全问题。

  Rich debugging support

跨语言调试支持。

  Consistent method failure paradigm

之前的异常处理有时候会返回status code,有时候会返回HRESULTS,而.NET框架对错误和异常的处理采取统一的“Exception”。这样大大简化了开发的复杂度,做到错误处理代码和正常逻辑的分离,而且异常在.NET框架里是无法忽略的,这也保证了程序的质量。

  Security

Code access security

  Interoperability

呵呵,理想在现实面前总是显得很无奈,我们还不能完全忘记过去J


未完待续。。。
to be continued...

posted on 2007-07-11 14:13  Standing  阅读(542)  评论(0)    收藏  举报