失去信心?还是再度迷惘(二)——Mono only is Mono,not .NET never
失去信心?还是再度迷惘(二)——Mono only is Mono,not .NET never,失去信心?还是再度迷惘(二)——Mono only is Mono,not .NET never
你可以质疑我这样自相矛盾的回答,也可以说我不懂Linux,更加可以说我不了解Mono。我的朋友Kaneboy告诉我越来越发现Mono是一个好东西,等我阅读了部分的源代码之后我也认为Mono是一个好东西,但是它是.NET吗?也许你可以从我下面的文字中找到一些答案。如果你是一个.NET架构师,那么我建议你一定要去阅读Mono的源代码,因为Mono可以告诉你很多你之前不可能知道的东西,你会看到很多你一直想看到却没有机会看到的东西,就比如ASP.NET、ADO.NET。相信在VS.NET或者Web Matrix的帮助下你能够写出很眩的页面,能够写出很漂亮的控件,也会感觉到比之前的ASP更加得心应手,但是你会发现一些东西你始终无法突破,比如很多文档会告诉你ASP.NET Page对象模型,会告诉你页面的在整个HttpApplication管道化过程中的迁移,会告诉你可以启用Session,可以启用片断缓存,但是始终无法明白Web应用中Session的底层是如何设计和考虑的,如何真正有效的提高你的缓存设计策略。一切尽在Mono,相信那些源代码能够解开你一些困挠许久的疑惑。但是,目前的Mono仅仅是在跟Microsoft在走,如果你去阅读过源代码,然后也用Reflector看过微软自身对于类库的实现,你会发现作为追随者真的很辛苦,对于一些核心的实现,微软仅仅是对于原有的技术做了一个包装,然后通过.NET统一编程接口,而Mono却需要一切从零开始。前文提到了微软会不遗余力的将所有技术锁定在Windows操作系统之上,那么从这个角度来说他绝对不运行有一个同样的产品出现在非自己统计的操作系统平台上,对于Mono,也如同对于Application Server的策略是一致的,因为微软比谁都明白,如果让框架运行时(CLR)和应用服务器独立于操作系统,那么Windows就失去了最后的技术壁垒,不知道大家是否记得当年的Visual J++,为了将Java锁定到Windows,微软开发了WFC,并且允许使用Visual J++开发COM组件,Sun后来告发了微软一把,理由很简单,因为微软的险恶用心和破坏了Java世界的纯洁性,平心而论,如果忽略微软对于Java的改动,甚至仅仅将Visual J++当着一门新的语言(比如Pre-C#,当然了,这是我在胡扯),依托于WFC的强大,作为Anders加盟微软之后打造的第一个产品,Visual J++在windows开发上就我个人的感觉来看已经超越Visual Basic。从文化而言,Mono是一个自由斗士,它打破了.NET只能够在Windows上运行的限制,同样也帮忙微软印证了.NET可以跨平台。但是微软真的系统跨平台的.NET吗?肯定不是的,如果所有的开发商都使用.NET开发,而.NET同样可以运行于任何操作系统,那么Windows就不是唯一的选择,开放源代码、免费(这里提及的可能不是特别准确)的Linux会更加成为主流。如果你是商人,你将如何选择?因此没有任何一个理由让微软的.NET要去跨平台,当然商业上标榜的跨平台是另外一个策略问题了。鉴于上述,Mono注定是永远的追随者,1.1的框架还没有在Mono下面完全实现,而.NET 2.0又快要推出,如果你稍微那么了解一点点的Whidbey(Visual Studio 2005的开发代号),你知道.NET 2.0相对于1.1已经改变很多很多,那么Mono究竟有多少力量能够在时间上不被微软甩开太远。我这里没有答案,也许谁也没有。如果你是学习,那么有很多理由建议你去看看mono,如果是你研究,那么有更多