U3DC.COM | 优三帝研究院

Menu

“Mono是个跨平台的.NET”是否是个正确的说法

Mono创建者Miguel de Icaza给出了最为详细的回应:

“.NET是否跨平台”是一个模糊的说法,无论是框架本身还是整体环境都在不断改变。

简单地说,作为.NET的基础架构,CLI标准是跨平台的,但如果要在不同平台上得到最好的体验,则势必要使用各自平台上有针对性的API。CLI技术家族从来没有试着要“一次编写,到处执行”,好比电话和大型机的区别实在是太大了。与其为不同平台提供统一的API和运行时,不如各自平台上的最佳体验提供最正确的工具。试想那些非Windows PC或Unix服务器的程序员,要知道如今已经出现了游戏设备,移动电话,机顶盒,分布式集群等太多激动人心的平台。

微软的.NET框架不是跨平台的产品,它只能运行在Windows上。其他系统上还有一些.NET框架的变体,例如Windows Phone 7,XBox 360和浏览器中的Silverlight,它们都有些许不同的配置(Profile)。

如今你已经可以在各个主流的操作系统,电话,移动设备,嵌入式系统或是服务器上使用基于.NET的技术,以下是各种CLI实现的列表,虽不完整,但应该可以覆盖99%的情况:

有时候相同的代码很难四处运行。例如XNA代码不会在每个桌面上运行,反之亦然。为了.NET不同的配置里运行,你需要修改些许代码。以下是我所了解的一些配置:

以上配置都有多多少少的不同,这不是坏事。每个配置的设计都适应其平台,去除任何一个都是不明智的。例如,Silverlight API可以控制浏览器,这不关电话什么事;由于缺少合适的支持,XNA的着色功能对PC硬件也没有多少意义。你越早认识到.NET不是个将开发人员绑定在特定硬件或平台上的解决方案,就能越早成为更好的开发人员。

这意味着,有些API或解决方案可以在多个平台中使用,例如ASP.NET可以用在Windows,Linux,Solaris,MacOS X上,因为.NET和Mono都提供了这些API。同时,ASP.NET则无法在某些微软支持的平台上使用,例如XBox或Windows 7,也不支持Mono的Wii和iPhone配置。

其他解决方案的本质也是一样的。要完整列出这些技术需要一张复杂的表格,我不知道如何在这里表现出来,不过这里有个特定技术与特定平台的列表:

核心运行时引擎(所有平台):

语言:

服务器技术:

GUI技术:

图像类库:

Mono类库 - 跨平台,可以在.NET里使用,不过需要手动编译:

MonoTouch为iPhone上运行的Mono,MonoDroid为Andriod上运行的Mono。PS3和Wii的移植只供索尼和任天堂认证的开发人员使用。

打赏
— 于 共写了3009个字
— 文内使用到的标签:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据