中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

主站蜘蛛池模板: 国产高潮好爽受不了了夜夜做 | 欧美日韩在线观看一区二区三区 | 91国在线 | 日本不卡免费新一二三区 | 黄色网址在线免费观看 | 欧美人成在线视频 | 在线不卡视频 | 日韩三片| 91黄色免费看 | 波多野结衣av中文字幕 | 日日拍夜夜| 午夜视频在线观看一区二区 | 国产精品毛片 | 国产精品久久久久久久久久免费看 | 亚洲视频一区在线 | 国产精品欧美一区二区 | 欧美天堂 | 中文字幕在线免费视频 | 高清视频一区二区三区 | 久久精品视频播放 | 精品久久国产 | 精品久久久久香蕉网 | 99在线免费观看视频 | 亚洲成人一区 | 日韩一级在线 | 久久久国产一区 | 一级黄色播放 | 亚洲人成人一区二区在线观看 | 亚洲成av人片在线观看无码 | 一区二区免费在线观看 | 一区在线观看 | 欧美日韩在线播放 | 波多野结衣一区二区 | 久久久av中文字幕 | 亚洲v日韩v综合v精品v | av黄色在线| 懂色av蜜桃av| 精品久久久久久中文字幕 | 在线视频国产一区 | 狠狠干网站 | 久久免费国产视频 |