.NET框架:为何首选框架内置功能而非自创?
- 内容介绍
- 相关推荐
本文共计2042个文字,预计阅读时间需要9分钟。
很多人经常会提出这样的疑问:为什么.NET框架要把一些非常简单的功能也封装起来呢?而有些人则坚持有现成的就用现成的的习惯,认为那些明明只是非常简单的功能却被封装起来,有点过于繁琐。
有很多人经常会持有这样的疑问:为什么 .NET 框架要把一些很简单的功能也封装起来?
而有些人所坚持的“有现成的就用现成的”的习惯在那些“明明只是很简单的功能却被封装了起来”的情况下也显得很可笑。
那么,实际上到底有没有必要用那些本来就很简单的封装?这些简单的封装到底具有什么样的意义呢?
其实大部分这样的简单的封装都是针对“跨平台使用”而设计的。
有些人可能会说:.NET 框架有什么跨平台可言?
其实 .NET 框架虽然现在只提供 Windows 上的版本,但其它平台上的 CLI 实现,如 Mono、DotGNU 等等也都有赖于 .NET 框架和 CLI 的预见性方能成为现实;而可以在多种环境中使用的 RIA 平台 Silverlight 也是将这种思想发挥到了极致。
举个例子来说,.NET 框架中 IPAddress 类型具有 NetworkToHostOrder 和 HostToNetworkOrder 方法,如果你使用 Reflector 来查看反编译后的代码,你会发现 NetworkToHostOrder 只是调用了 HostToNetworkOrder,而 HostToNetworkOrder 的原理也只不过是一些简单的位移运算而已。
有的人看到这里可能会想:包了两层方法性能多差啊,用到它的地方自己写位移运算不是也可以么?
不要这样做。
本文共计2042个文字,预计阅读时间需要9分钟。
很多人经常会提出这样的疑问:为什么.NET框架要把一些非常简单的功能也封装起来呢?而有些人则坚持有现成的就用现成的的习惯,认为那些明明只是非常简单的功能却被封装起来,有点过于繁琐。
有很多人经常会持有这样的疑问:为什么 .NET 框架要把一些很简单的功能也封装起来?
而有些人所坚持的“有现成的就用现成的”的习惯在那些“明明只是很简单的功能却被封装了起来”的情况下也显得很可笑。
那么,实际上到底有没有必要用那些本来就很简单的封装?这些简单的封装到底具有什么样的意义呢?
其实大部分这样的简单的封装都是针对“跨平台使用”而设计的。
有些人可能会说:.NET 框架有什么跨平台可言?
其实 .NET 框架虽然现在只提供 Windows 上的版本,但其它平台上的 CLI 实现,如 Mono、DotGNU 等等也都有赖于 .NET 框架和 CLI 的预见性方能成为现实;而可以在多种环境中使用的 RIA 平台 Silverlight 也是将这种思想发挥到了极致。
举个例子来说,.NET 框架中 IPAddress 类型具有 NetworkToHostOrder 和 HostToNetworkOrder 方法,如果你使用 Reflector 来查看反编译后的代码,你会发现 NetworkToHostOrder 只是调用了 HostToNetworkOrder,而 HostToNetworkOrder 的原理也只不过是一些简单的位移运算而已。
有的人看到这里可能会想:包了两层方法性能多差啊,用到它的地方自己写位移运算不是也可以么?
不要这样做。

