我不是在做夢吧? 令人感動的Mono!

最近的工作開始跟Linux扯上關係,有預感總有一天會被逼著在Linux寫些整合用的小程式... orz

十年前唸碩士的時候,一個實驗室畢業學長做起了壓Linux CD販售的生意,送了老板一片他在經銷的Slackware Linux光碟,當年Linux才剛冒出頭,紅帽子可能連毛線都沒開始織,Linux還沒開始受到世人的關注,那塊光碟就一直被留在實驗室桌上。好奇心重又手賤的我,不甘心系上的幾台DEC/Sun UNIX系統只有某幾間實驗室的同學才能把玩,就找來機器裝上Slackware Linux,過過當UNIX root的乾癮,從Apache, Sendmail, Samba一路玩下去,當年翻譯了一篇Firewall & Proxy HOW-TO目前還在Internet上流傳呢! 這是我與UNIX世界的第一次接觸。

進入職場沒多久,只會Delphi, VB, SQL的小菜鳥,接到的第一案子居然是要在SGI UNIX主機上寫查ORACLE資料庫的Web UI… 最後拼了老命,臨時抱佛腳學會了Perl,不會直接連ORACLE,就Call sqlplus讀入即時產生的SQL指令檔,再把結果Dump成Text File收回來(天殺的,能想出這種鋸箭法,我一定是天才)。總之,驚險過關後,逐漸聚焦到MS Solution上,與UNIX世界的緣份愈來愈淡...

最近的案子開始接觸一些Linux主機,有些時候從架構師的角度,在Linux端放個小程式會比在Windows端費盡心機省力而有效十倍以上。但不會C語言一直是我的痛腳(Achilles’ Heel),Perl雖然堪用,但荒廢已久,要用也少不了一番查查找找,如何在Linux上寫程式呢? 最後我想起了可愛的小猴子—Mono

重入Fedora Core 6,感覺Linux已與當年大不相同,不管是Gnome或KDE,都直追Windows的友善度(居然還可以直接連上Windows的分享資料夾讓我大為驚嘆)。不過,安裝Mono RPM時卻一直卡在Dependence Library不齊,讓人很挫折,開始懷念Windows式Setup.EXE下一步、下一步的爽快感。還好,在http://www.mono-project.com/Downloads裡有個Linux Installer for x86,讓Windows世界來的麻瓜可以用下一步、下一步的方式做完這段苦工。

裝好Mono之後,依著網路上找到的Tutorial,寫了一小段hello.cs,用XmlDocuemnt, StringBuilder, Thread.Sleep, System.Text.Encoding, StreamWriter... 幾個基本的.NET功能。用mcs就編譯出hello.exe,再用mono hello.exe執行。

天哪,結果就如預期地顯示在Ptty上,當場感動到不行~~~ 

我會寫Linux程式了! 我會寫Linux程式了! 我會寫Linux程式了! 我會寫Linux程式了!

很有意思的一個問題是,用MONO Build出來的hello.exe,可以拿到Windows上執行嗎?  以我這個簡單的小程式來說,答案是Yes!!  這同時也代表直接把Windows上的.NET EXE檔搬到Linux上跑將不是神話! 不過,也別高興得太早,Mono並沒有實作出全部.NET的基本物件,關於Windows Form的部分,也會因為Windows與XWin的根本差異而必須用特殊的Namespace下的不同物件達成,因此要做到100%通透,目前還有段距離。

只是,可以用熟悉的C#語言寫程式在Linux上跑,.NET Developer自此擺脫"出了國就得當啞巴"的宿命,這種興奮的感受無可取代!! Thank you! Mono!

歡迎推文分享:
Published 04 April 2007 03:25 PM 由 Jeffrey
Filed under:
Views: 12,046



意見

# karron said on 04 April, 2007 01:15 AM

fedora系列的linux可以用yum来安装软件,会自动解决依赖问题. debian/ubuntu系列可以用apt-get安装软件,这些都会自动解决依赖问题.

比windows的下一步下一步还要方便.

# chicken said on 04 April, 2007 04:05 AM

mono 不錯 (Y), 不過 .net 有些東西是透過 Interop 包出來的, 這部份就沒辦法...

# Jeffrey said on 05 April, 2007 12:27 AM

To Karron,

謝謝您的資訊,我猜我曾經糊里糊塗地啟用了YUM,桌面上會出現很長一段時間檢查Dependence及下載的對話框,也許是VM的速度不佳、也許是我的耐心不足,或者是下載來源的網路不怎麼快,好幾次都讓我等不下去(大約等了快半小時)而把它關掉。不過,您說的沒錯,如果一切順利時,YUM應該可以自動補齊欠缺的套件,這點很神奇。

Windows Style的SETUP通常會把所有必須的零組件封裝在安裝程式包中(有時是因為不附上,網路上也沒得抓),跟Linux安裝的哲學不太相同,這點對我來說有待適應。

Jeffrey

# elleryq said on 22 April, 2007 06:31 PM

Windows form 在 .net 1.1 的實做上,算是已經有 70%~80% 的成熟度了。

除了 c# 以外,vb.net, jscript, ironpython 也都可以在上面跑~甚至,你在 windows 上編譯好,丟到 linux 上也可以跑~

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<April 2007>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication