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

包括Mono创建者MigueldeIcaza在内的许多人给出了回复。 理由如下:  首先, CLI(CommonLanguageInfrastructure)和. NET是有区别的, 同样, C#也是一个公开规范, 也和睦.   Mono绝关于. NET是有些落后, 但也只有一丁点而已。 Mono可以运转C#4. 0的代码(最新的. NET版本), 这意味着mono可以直接运用IronPython, IronRuby, NET的CTP版本, NET保持同步。 NET中的部分工具和扩展, 如CodeContract等等, 它们并没有mono中的完好完成, 假如这些扩展变得流行起来了,   WinForm没有得到完好的移植, 由于它们是. NET的特性功用, 而并非CLI的一部分。 CLI中并没有定义特定的组件库。 有一些组件库是跨平台的, 例如GTK#和Silveright, 假如你从编写应用程序的一末尾就思索到可移植性, 那就不应该运用Win. 此外,   关于不情愿运用开源产品的商业应用, Mono可以运用另一种受权方案, NET可否移植”这个命题, 我想假如你从一末尾就思索到框架的可移植性问题, 但假如换个说法“我有个运用.   除了技术方面的要素以外, 关键还是在于编写代码的方式。 Python, 那么你应该假定这些代码可以直接跨平台执行的可能性为零(即使实际上这样的可能性要高出许多)。 选择. 不过关于跨平台的代码来说, 你还是需求不断地停止测试。 假如你运用持续集成, 那么只需简单的创建一个Mono构建的节点即可。 只需养成良好的习气(例如途径的分隔符), 很多问题可以在开发阶段就解决掉, 而绝大部分代码只需运用单元测试以及其他一些罕见的实际方式, 剩下的, 则可以经过封装, 为不同平台提供针对性的完成。 这样产出的项目, 几乎不会付出额外的代价就能得到很好的移植性。   当然, 运用一个Mono中不存在或是不兼容的类库则另当别论, 不过就我的团体而言还没有遇到这样的情况。 这些是我们在工作中实际用到的做法, 我可以担心的宣称“. NET+Mono”是跨平台的解决方案。   我用过Mono, 我以为它就和其他开源平台一样好, 只不过不是微软直接支持的而已。 Mono关于. NET的支持水平可以参考MonoRoadmap页面。 Mono并不等同于. NET, 它们有或多或少的区别, 例如如今你还无法运用EntityFramework。 NET能否跨平台”是一个模糊的说法, 无论是框架自身还是全体环境都在不断改动。   简单地说, 作为. CLI规范是跨平台的, 但假如要在不同平台上得到最好的体验, 则势必要运用各自平台上有针对性的API。 CLI技术家族从来没有试着要“一次编写, 好比电话和大型机的区别实在是太大了。 不如各自平台上的最佳体验提供最正确的工具。 试想那些非WindowsPC或Unix服务器的程序员, 要晓得如今已经出现了游戏设备, 移动电话, 散布式集群等太多激动人心的平台。 NET框架的变体, 例如WindowsPhone7, 它们都有些许不同的配置(Profile)。   如今你已经可以在各个主流的操作系统, 电话, 移动设备, 嵌入式系统或是服务器上运用基于. NET的技术, 以下是各种CLI完成的列表, 但应该可以掩盖99%的情况:  以上配置都有多多少少的不同, 这不是坏事。 每个配置的设计都顺应其平台, SilverlightAPI可以控制浏览器, 这不关电话什么事;由于短少合适的支持, XNA的着色功用对PC硬件也没有多少意义。 NET不是个将开发人员绑定在特定硬件或平台上的解决方案, 就能越早成为更好的开发人员。 要完好列出这些技术需求一张复杂的表格, 我不晓得如何在这里表现出来, 不过这里有个特定技术与特定平台的列表:

你可能感兴趣的:(.net,职场,跨平台,休闲,Mono)