四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

聊一聊MONO的前前后后、里里外外

      Mono 2.0 是一個里程碑版本,為Linux.NET程序開發(fā)創(chuàng)造了基本框架。不考慮穩(wěn)定性和可靠性,從功能上考慮,Mono 2.0Microsoft 兼容的API有了大幅的改進(jìn),ADO.NETASP.NET  Windows.Forms 三大應(yīng)用API,使得為Linux平臺遷移大量的網(wǎng)站、客戶端程序和數(shù)據(jù)庫應(yīng)用程序成為可能。

     作為開發(fā)平臺,Mono平臺的兩大致命缺點是,缺乏有效數(shù)據(jù)庫方案集成和開發(fā)工具集成。

缺乏集成數(shù)據(jù)庫支持,是一個致命弱點雖然靈活的中立API可以使得開發(fā)人員靈活的選擇數(shù)據(jù)庫,但是,作為平臺提供商,要銘記一點,那就是,數(shù)據(jù)是軟件的命脈,程序只是表達(dá)工具,一個開發(fā)平臺所展示給開發(fā)者的藍(lán)圖是處處離不開數(shù)據(jù)庫的。

一個平臺應(yīng)該考慮提供兩種數(shù)據(jù)庫解決方案,一個是基于文件的無服務(wù)器的方案,另一個是基于服務(wù)器/客戶端的方案。Microsft.NET 平臺推廣的就是 Access SQL Server,Access 作為桌面數(shù)據(jù)庫,是非常成功的產(chǎn)品。借助VBA可以將Access數(shù)據(jù)庫的能力發(fā)揮到極限。是否記得,在ASP/ADO時代,當(dāng)ASP還很流行的時候,那時我們用的是托管主機(jī),我們經(jīng)常費(fèi)盡心思保護(hù)我們的數(shù)據(jù)庫;Sql Server 扮演了另一個角色,Sql Server 一直是微軟數(shù)據(jù)中心戰(zhàn)略的核心,雖然微軟的平臺以優(yōu)秀的可擴(kuò)展性著稱,但是誰愿意為其他數(shù)據(jù)庫花時間手動開發(fā)數(shù)目巨大的代碼呢。因為客戶需要,微軟提供了SSCE,使得Sql Server也可以勝任桌面數(shù)據(jù)庫便利性和部署的要求。移動版本的數(shù)據(jù)庫就得依靠Sql減縮版了,這不是SSCE所指的那個版本。不要忘記了微軟已經(jīng)不再開發(fā)新版的Visual Foxpro 了,我個人非常喜歡Visual Foxpro,作為數(shù)據(jù)庫,它提供的程序設(shè)計功能要比VBA更合適,并且數(shù)據(jù)庫系統(tǒng)的性能和功能也比Access好的多;作為編程平臺,它和數(shù)據(jù)庫的結(jié)合比任何其他方案都更緊密,更易于操作。微軟之所以放棄了Visual Foxpro,是因為微軟不想讓自己數(shù)據(jù)庫方案混亂的狀況繼續(xù)下去,一個桌面數(shù)據(jù)Access和一個服務(wù)器數(shù)據(jù)庫Sql Server 完全滿足自己的平臺和市場戰(zhàn)略。.NET 方案從一開始就準(zhǔn)備放棄Visual Foxpro.NET 數(shù)據(jù)庫戰(zhàn)略一等公民的權(quán)利,看看.NETVisual Foxpro的支持就知道了,Access 完全是一等公民,應(yīng)對中低端的數(shù)據(jù)方案需求,至少從開發(fā)環(huán)境的支持上看是這樣的。

      看看Mono平臺,Mono 現(xiàn)在數(shù)據(jù)庫平臺的方案部署跟Sun公司當(dāng)年的差不多,廣泛使用開源的數(shù)據(jù)庫和驅(qū)動提供者,我覺的Mono平臺對自己數(shù)據(jù)庫方案的定位也是很明顯的。在低端使用SQLite數(shù)據(jù)庫,這是一個性能優(yōu)秀、定位明確,并且廣泛使用的數(shù)據(jù)庫,在高端使用Postgresql數(shù)據(jù)庫。.NET平臺的戰(zhàn)略規(guī)劃是微軟做的,因此Novell 必須找到一款能夠替代Sql Server 的數(shù)據(jù)庫,否則Novell 必須依賴Sql Server,那么Mono開源的招牌就說不過去。

  在這里插上一段,首先,MonoNovell公司的一個項目,旨在提供Linux開發(fā).NET程序的框架,降低Linux應(yīng)用程序的開發(fā)成本,由于CLI(通用語言基礎(chǔ)設(shè)施)C#和其他.NET的核心和基礎(chǔ)部分都是符合ECMA規(guī)范的,因此,在版權(quán)上應(yīng)該是不會出什么問題,但是,關(guān)鍵的生產(chǎn)用API,比如ADO.NET、ASP.NET、Windows.Forms都是微軟私有的,因此微軟公司實際上卡住了一個核心部分,為了平息社團(tuán)的爭議,微軟和Novell有一份和解協(xié)議,但是前提目標(biāo)Linux平臺必須是Novell自己的,這包括社團(tuán)版本的OpenSuseSuse企業(yè)版。

  由于社團(tuán)的熱心努力,Sqlite 不但提供了跨平臺輕量級的數(shù)據(jù)庫體驗,而且,在Windows平臺下更是能與Visual Studio 完美的結(jié)合,現(xiàn)在Sqlite驅(qū)動的核心部分,絕大多數(shù)來源于sqlite.phxsoftware.com貢獻(xiàn)的代碼,那是很不可思議的工作。

  Npsql .NET 下鏈接Postgresql數(shù)據(jù)庫提供者,并且也是跨平臺方案。伴隨著2.0的發(fā)布,Npgsql也是脫胎換骨,因為內(nèi)置了對ASP.NET 2.0新特性的支持,這使得遷移數(shù)目眾多的ASP.NET 程序成為可能。Postgresql是一款功能強(qiáng)大、可擴(kuò)充性極強(qiáng)的數(shù)據(jù)庫。特別適合作為SQL Server 的替代方案。

     基礎(chǔ)平臺基本完善,我們也能想象出一副Mono 平臺的戰(zhàn)略藍(lán)圖,但是,旅途才剛剛開始。

     Mono 平臺現(xiàn)在面臨諸多問題:

     開發(fā)工具的貧乏,對于小規(guī)模程序,使用Vi來編寫是再好不過的,但是對于習(xí)慣了智能感知和靈活設(shè)計環(huán)境的.NET開發(fā)這而言,這可不是能接受的事情;Mono 社團(tuán)分離的Monodevelop 項目解決開發(fā)環(huán)境的問題,MonoDevelop 用起來感覺還不錯,但是它跟Visual Studio 比起來差遠(yuǎn)了,即使是Express版本也勝它千百倍。好在Mono的主要目標(biāo)是讓Linux本地程序員向.NET 遷移,而不是Windows .NET程序員,除了Eclipse 他們也沒再見到更多的優(yōu)秀IDE,其實Eclipse也一般優(yōu)秀?,F(xiàn)在MonoDevelop正處于第二個Alpha版本,還要經(jīng)歷beta1beta2beta2不再增加新的功能,而是致力于Bug 修復(fù),官方的路線圖說在3月末會和Mono 2.4一同發(fā)布?,F(xiàn)在我正在使用Alpha 版本,感覺不是很好,經(jīng)驗高所我,最終版會比預(yù)期的好的多,期待Monodevelop 2.0的發(fā)布,我還準(zhǔn)備設(shè)計我的插件呢:)

  數(shù)據(jù)庫的問題也很嚴(yán)重,Sqlite 在迅速發(fā)展,并且缺乏統(tǒng)一管理,因此,不能確定以后的發(fā)展?fàn)顩r,版本二和現(xiàn)在的版本三就不兼容的,缺乏類型,事件處理麻煩,數(shù)據(jù)庫本身也需要改進(jìn)。PostgreSQL雖然身出名門,但是性能、可靠性和穩(wěn)定性還無法達(dá)到我們的要求。

  Mono平臺難以應(yīng)對以設(shè)計為中心的開發(fā),因為工具的匱乏和缺乏集成協(xié)作的能力,所以,一種可能的方案是,在Windows上設(shè)計和開發(fā),在Suse企業(yè)版上運(yùn)行。這難以滿足設(shè)計師和架構(gòu)師的要求。

  缺乏成功的案例,雖然Mono展現(xiàn)了大量的案例,但是這些案例要么處于Novell 自己之手,要么是程序自己本身具有兼容性,而軟件生產(chǎn)這從來都沒有準(zhǔn)備銷售Mono版本。.NET 展現(xiàn)優(yōu)勢的一個重要方面是.NET提供了很多很酷的搜索功能,以Lucene.NET作為引擎,極大改善了Linux的搜索體驗。這些都需要跟多的努力,尤其需要一個好的生態(tài)圈。

     不要灰心,展望一下Mono為我們創(chuàng)造的無限潛能和優(yōu)勢:

  觀察分析.NET 2.0 .NET 3.0 .NET 3.5 以及未來的.NET 4.0 我們發(fā)現(xiàn),2.0 之前微軟關(guān)注的基礎(chǔ)平臺建設(shè),但是之后,微軟的設(shè)計更加側(cè)重目標(biāo)用戶而僅僅是自己。并且后續(xù)版本都建立在.NET 2.0 之上。4.0似乎要有大的改進(jìn),應(yīng)該還是擴(kuò)展多一些吧,最近正在研讀各個開發(fā)組的博客。由于.NET 平臺是二進(jìn)制兼容、自解釋的組件方案,這比以Com為中心的二進(jìn)制兼容標(biāo)準(zhǔn)要好的多,更簡便,可移植性更強(qiáng),由于通過CodePlex可以更多了解官方軟件的源代碼,即使不完全相同,這也大大降低了Mono平臺的擴(kuò)展和追趕微軟進(jìn)度的難度。露骨的說吧,就是可以把代碼拿來,編譯后部署,不用從頭實現(xiàn)了??纯?/span>Mono官方的路線圖我們可以發(fā)現(xiàn),Mono平臺的預(yù)期開發(fā)速度非??欤?/span>2009年底在部分項目上追上微軟的進(jìn)度,主要是C# 4.0,發(fā)布Mono 3.0 。如果Mono 多少年后被認(rèn)為是成功的話,那么MONO 3.0才是它輝煌的開端。

  由于 Unix 族操作系統(tǒng)所使用X-Windows 圖形架構(gòu)和微軟Windows相差甚遠(yuǎn),或者說實際上是一樣的,只是側(cè)重點和角度不同罷了。X-WindowsC/S模式,可以在網(wǎng)絡(luò)上運(yùn)行。而微軟的Windows圖形架構(gòu)是內(nèi)置在系統(tǒng)里的,很多人認(rèn)為微軟的Windows(Windows子系統(tǒng))X-Windows是完全不同的,這十是一個為大眾普遍認(rèn)同,但是即使錯誤的觀點,Microsft Windows NT 族的系統(tǒng)使用的是C/S架構(gòu)的微內(nèi)核結(jié)構(gòu),系統(tǒng)內(nèi)部是基于C/S設(shè)計的,不可思議吧。只有Windows能夠進(jìn)行清楚的分層并且支持?jǐn)?shù)目大的擴(kuò)展點。這些優(yōu)勢是由以下設(shè)計或者功能配合提供的:微內(nèi)核設(shè)計、注冊表組件、服務(wù)框架還有大名鼎鼎的COM。微軟公司能夠存活到現(xiàn)在,COM是功不可沒的,微軟公司從來都不自己承擔(dān)所有風(fēng)險,因為COM這個二進(jìn)制兼容接口為程序提供了兼容性、可靠性和可擴(kuò)展性的基礎(chǔ)支持,微軟有大量的客戶群 ,那也是它的盾牌。很多.NET 程序員聽到COM時,只記得一個詞,那就是地獄,世上本無地獄,微軟進(jìn)化了,昨天就成了地獄,看不見的部分,包裝的部分就成了地獄?,F(xiàn)在,Windows繼承平臺依然依靠COM支持,COM創(chuàng)造了性能和兼容性的奇跡,但是,COM依賴于C++,C++這門語言真是讓人又愛又恨,有時你愛的要死,驚嘆她的強(qiáng)大,還有一半的時間,你在學(xué)習(xí),研讀標(biāo)準(zhǔn),剖析宏和模板的用法,另外一些時間,你死的想法都有了,嘿嘿:)。微軟的Native 開發(fā)只有跟C++配合才夠酷、才無敵,但是大量的宏技巧和模板用法,有時讓人他頭暈?zāi)垦!:迷?/span>COM、MFC、ATL實際上并不像傳說中的那么夸張,只是因為用的人少,或者是因為高手都不屑出來討論了,要么是秘密項目不能拿出來說,反正是沒有氛圍,學(xué)起來困難一些,所以,有諸多誤解。注冊表,很多時候,都被人指責(zé)為弊端,這通常都是Linux愛好者,提供集中的信息交流機(jī)構(gòu)是復(fù)雜系統(tǒng)的基本要求,linux一直提供基于配置文件的方案,看看這些年Linux陣營的變化,看Linux平臺中大量增加的軟件總線框架,我們就會明白,Linux是多么希望自己是微內(nèi)核機(jī)構(gòu)呀。從應(yīng)用角度來講,注冊表對Mono的影響不大,因為.NET旨在提供二進(jìn)制兼容自解釋的組建模型,因此可以不依賴像注冊表這樣的機(jī)制。當(dāng)然,Microsfot.NET在深層是絕對依賴于COM和注冊表的。這里說的有點遠(yuǎn)了,跟Mono 聯(lián)系起來就是許多跟COM相關(guān)的部分,Mono不是做的不夠好、要么就是根本沒機(jī)會做。應(yīng)為圖形框架層次布局的原因,在Linux上實現(xiàn)WPF有些困難,這需要更多的底層直接支持。至于WF,Mono好像也沒有實現(xiàn)的打算。WCFSOA的重心,自然是少不了,只是直到Mono2.0Mono平臺的基礎(chǔ)設(shè)施建設(shè)才告一段落,WCF似乎起步的較晚,重要的是CodePlex沒有WCF的源代碼,哈哈。

  C# 2.0、3.0/3.5帶來的巨大變革,讓人激動不已,這次Mono準(zhǔn)備在Mono3.0發(fā)布時,支持C#4.0的部分特性,這是很令人欣慰的事情了。很多事情,不是Mono的錯,Mono的局限大多有WindowsLinux差異造成的。永遠(yuǎn)記住WindowsCOM是靈魂,但是Linux做的不夠好;Linux是松散耦合,追求高性能的系統(tǒng),而Windows是強(qiáng)耦合,基于模型的現(xiàn)代化系統(tǒng)。在Windows中,建一座小屋都會有精心準(zhǔn)備的地基,但是在Linux下,通常就是論事的準(zhǔn)備基礎(chǔ)設(shè)施和框架,但是Linux今天可不僅僅想做網(wǎng)絡(luò)服務(wù)器了,昨天的局限釀成了今天的哭過。Unix族系統(tǒng)的靈魂是通過C語言體現(xiàn)的,而Windows的靈魂是同過C++體現(xiàn)的。重復(fù)一遍,不管在哪一個系統(tǒng)下,COM通常都不會直接影響你的工作,但是想了解.NET了解Windows必須從Com開始。想要真正了解Mono的局限性,同樣必須從Com做起。

     關(guān)于Office,在辦公方式還沒有完全搬到網(wǎng)頁里之前,Office 軟件對我們依然至關(guān)重要,對微軟更重要,C#中動態(tài)的靈魂包括三部分:Office互操作的動態(tài)感知,通過動態(tài)語言運(yùn)行時與動態(tài)語言交互和語言本身的動態(tài)支持。第一個方面,又是COM,在Windows平臺中 COM、C++、統(tǒng)一的對象模型這些都工作很好很自然,但是在Linux中,Start Office Open Office 提供Com功能只能依靠模擬來實現(xiàn),因為Linux沒有類似于COM的機(jī)構(gòu),這樣,提供 VSTO這種優(yōu)秀的方案就很困難,問題不在Office 不在Mono,問題是缺乏中介機(jī)構(gòu),Linux系統(tǒng)自身所能提供支持遠(yuǎn)達(dá)不到Com的這種高度。Linux、Office(linux平臺)、MONO都做了自己該做的事情,只是缺乏原始整體的規(guī)劃,這是歷史問題了。結(jié)果就是 C# 的需多特性不可能在Mono上展現(xiàn),因為沒有基礎(chǔ);C#是一個靜態(tài)語言,不要被表面絢麗所迷惑,心里要明白,在內(nèi)部C#是靜態(tài)語言,動態(tài)效果依賴于功能強(qiáng)大的編譯器支持(我的研究方向),那是強(qiáng)大的可怕的支持,至少我自己實現(xiàn)起來挺困難,嘿嘿。和動態(tài)語言的交互依賴于動態(tài)語言運(yùn)行時和編譯器的支持,或許回家看看編譯原理,要么等我的課程:)

      還有SilverLight,差點就忘了,Monolight負(fù)責(zé)完成SilverLightLinux中使命,現(xiàn)在第一個版本已經(jīng)發(fā)布,感覺非常酷。第二個版本發(fā)布的話, SilverLightLinux平臺上的兼容性就會大幅提高。 

  第一次亂彈琴到此結(jié)束,希望大家喜歡探索Mono,喜歡探索他的底層實現(xiàn)。

NET技術(shù)聊一聊MONO的前前后后、里里外外,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 假如我是一只鸟艾青诗选| 一千零一夜凯瑟林| 87电影| 光明力量2古代封印攻略| cctv6电影节目表| 啪啪电影网址| 谭咏麟电影| 卢昱晓电视剧| 人民的名义电视剧免费版| 极度猎杀| 《爱的温暖》电影在线观看| 石田亚由美| 刘禹| 山东卫视节目表| 转正意见评语| 电影红旗谱| 青草国产在线视频| 底线演员表全部演员介绍| 太卷了正确答案| 美少女战士奥特曼| 皮囊之下| 铁血使命演员表全部| 让我们的家更美好教学设计| 四个房间电影| 小恩雅骑马舞蹈视频| 绝不放弃电影| 色在线亚洲| 朱莉安妮av| 奇门遁甲免费讲解全集| 源代码 电影| 3s游戏交易平台| 植田圭辅| 《致青春》电影| 学校要的建档立卡证明| 上山悠亚| 哈基米| 不要好舒服| 飞龙猛将演员表| 南方车站的聚会| 韩秀云讲经济| 让我们的家更美好教学设计 |