background image

Mono 平台开发前你应该知道

Mono 平台开发前应该做的第一个事情就是,调整好心情,降低期望值:

  对于

Linux 本地 C 程序员而言,由于习惯了疯狂和有魔力的本地 C 程序员开发,因此

对于

Mono 提供的诸多限制可能不太满意。大体而言,Mono 和.Net 程序一样,属于框架开

发的范畴,对于框架开发,最好在框架规定的范围内工作,否则会陷入孤立无缘的境地 。
Mono 没有 C 开发那些唾手可得的工具,也不能对系统进行无限的挖掘, Mono 关注的是应
用软件开发,不是系统软件(

Mono 可以支持本地服务开发)。Mono 支持两重类型软件开

发,以

WEB 为中心的软件和以本地为中心的开发。WEB 包括常规以上的应用型网站开发,

也包括基于服务的模型开发。由于服务现在成为软件开发的中心并且迅速进化。作为

.Net 替

代平台,

Mono 显得很混乱,主要因为.Net 以服务为中心的设计在 Mono 上还无法完全施展,

因为

Mono 基础平台正处于 2.x 阶段,等 09 年底应该是一个新阶段。对于本地程序开发,主

要包括一

GTK#和 System.Windows 为中心的图形界面程序开发,还包括服务软件的开发

(linux service 机构),也包括一 Lucene.Net 为基础的搜索软件的开发。
  对于

Windows .Net 程序员而言,首先要极度降低期望值,Mono 没有绚丽的工具,缺

乏足够的第三方软件,并且工具之间的集成也做得不太好,代码编写可能不很流畅
MonoDevelop 也可能让你很失望,这些都是 Windows 上廉价的.Net 开发工具把我们惯坏了。
Windows.Net 程序员来到 Mono 的主要原因有很多,可能是因为好奇,希望迁移自己的程序,
想窥探一下

Mono 实现以确定和自己想的差距有多远,更多的是要学习。就像把孩子放到艰

苦的地方锻炼一样,来到

Mono,你将会有同样的感觉,非常的贫瘠。Mono 工具还比较原

始,文档也比较少,我觉得这反倒是学习的好地方,每一次当我打开

MSDN,我都会望书

惊叹,多么希望积累足够丰富的

Windows 知识呀,但是 MSDN 让人感到很大很茫然,最后,

还是购买专著研究更合适,其他要用的,用的时候再查资料吧。在

Mono 平台上资料非常少,

这也是优势,对于

C#语言本身而言,那是学习的好地方,就像 C++一样,C#本身是一个迷

人的语言值得研读一下,但是

C#上紧紧捆绑的应用更适合生产而不是学习,如果要学习,

需要找一个单调一点、产品单一的环境,当然学好了赶紧回来,赶紧拥抱

Windows:)

  了解平台之间的差距:
  关于文件系统,

Linux 基于虚拟文件系统,这是 Linux 最成功的设计之一,表面看起来

就是,任何文件和资源都可以通过一

"/"开始的文件来访问,文件之间的分割符是"/"。在

Windows 中,文件系统经过多次抽象,看起来类似与以

“C:”、“D:”这样的方式开始,并且文

件之间的分隔符使用

"\",这是很多程序不可移植的重要原因,可以参考后来的文章,了解

如何提高程序的可移植性。
  第二个差距就是换行符的不同,在

Windows 平台,一个换行符意味着

“\r\n",由于在字

符终端时代,

"\n"的任务是使光标处于下一行的同等位置,而"\r"则是使光标处于一行的开

头,因此,去下一行开始则意味着要配合使用两个控制符;在

Unix 族平台,换行符则使

"\n"表示,这是历史原因,我猜想是由于早期的时候终端程序的规定导致的。

  关于

Unicode,这现在应该不成问题了,现在 Linux 都在内部使用了 Unicode,以前

Linux 在内部使用 ASCII 编码及其扩展。由于 Windows 在内部使用 Unicode 已经很长时间