共用方式為


本文章是由機器翻譯。

程式設計師雜談

Oak 入門

Ted Neward

這是有趣的有時候,看看我們的行業內已經發生在過去 50 年的變化。在 1960 年的大學畢業生可能相當合理的得到一份工作作為一個程式師,有,跨寬度的她的職業生涯,看著她的工作去從填寫到程式設計機打孔卡與活動記憶體高達 4 K (和沒有線上存儲) ; 房間的大小, 看到程式設計等大型機,COBOL 語言,然後如 IBM PC ; 小型機的興起 經驗豐富的技術變化的使用者介面 (GUI ; 如 看著筆記本電腦成為標準的電腦的選擇 ; 目睹的互聯網和 Web"誕生"— — 和最終退休權利的時候,平板電腦和行動裝置正成為消費者的計算裝置的選擇。

但它也是同樣如此,在某些行業的口袋內發生的變化和在技術或域的更小的圈子內發生同樣的"革命"。這種一個迅速變化圈是技術的無處不在的 Web 網站:從通用閘道介面 (CGI) 腳本編寫的 Perl 或 C; 向 Web 服務器擴展如 ISAPI ; 對"以頁面為本"的工具,如 ASP ; 到功能更強大支柱背後那些面向頁的工具 (ASP.NET,而不是本機代碼 CLR 堅強後盾) ; 等等。越來越多地選擇這些工具的方法是從"靜態類型化"語言如 C# 中,對"動態類型化"的更多語言,如紅寶石或 Python。辯論激烈,然而,嚴厲的懲罰使用動態語言 (其中,編譯器無法捕捉常見的錯誤) 和如何他們貿易關閉反對的開銷 (編譯過程和不必工作與或周圍的類型系統) 程式設計的一種靜態的語言。這些辯論尚未取得壓倒性的"贏家",其結果是,一些開發商開始看看如何採取最好的兩個世界。

橡木、 從埃米爾 Rajan 的開放源碼專案 (Twitter:@amirrajan; Web:amirrajan.net),是一種嘗試利用固有的 C# (通過每個類型的關鍵字"動態"和動態語言運行時、 或 DLR,既介紹了Visual Studio2010 中) 的動態功能和獲得的一種系統如 Ruby on Rails,但要保持它都在一種語言 (C#),提供靜態類型檢查和核實生產力好處。

設置

橡木是可用作為 NuGet 包,但來到橡樹的開發人員必須瞭解的一件事是,在所有其他事情之前橡樹是更多比"只是"圖書館發展的生活方式方面。橡樹將採取不同的方法從什麼傳統ASP.NETMVC 開發人員可使用到構建應用程式。例如,重點是極其迅速的回饋將意味著橡樹想要將不斷建設在背景中 (或至少似乎是),這樣只保存.cs 檔將足以在瀏覽器中查看結果 — — 沒有明確的"構建"步驟應該是有必要。(如何實現這一點的橡木實際上並不火箭科學,您會看到)。橡木發展的最終結果將是"傳統的"ASP.NET應用程式,所以行動的人將永遠不會知道從如何你習慣,幸運的是你以不同的方式生成它。

模具

這種生活方式調整的部分是橡木不只是一次 NuGet 下載,但還需要一些其他工具必須安裝在您的機器,入門的使用。IIS Express 是一種工具,許多 Microsoft.NET 框架開發人員已將如果他們已經試驗了Visual StudioLightSwitch 在所有。另一個這種工具是紅寶石,用在一些生成自動化和模具。再次,一旦完成了發展,但你需要它來開始和在橡樹的發展不會在生產伺服器上需要紅寶石。寫這篇文章,紅寶石只是發佈版本 2.0,但 1.9 版作品好 (和,為我的錢,給我更多的舒適,我不會跑到沒人見過的奇怪 2.0 bug)。最後,作為其快速、 互動式的風格,橡木想要能夠從連續的編譯系統為背景,在你 flash 消息的一部分橡木想讓 Windows 的咆哮聲,一個通知系統,會彈出你到桌面的小消息 (如 MSN Messenger 習慣) 當事件發生時 — — 例如在背景中的成功或不成功的生成。(我會探索的咆哮聲 API 在以後的專欄中,順便說一句,因為它是一個有用的工具,要在你的口袋中)。

一旦安裝了這些,還有一步橡木要求:它使用需要的 Ruby 腳本的紅寶石套裝軟體管理器中,通過提供一些套裝軟體寶石。(ruby gem 是,順便說一句,很多靈感的 NuGet 和其他語言套裝軟體管理器節點故宮和哈斯克爾的政治陰謀。火災起具有紅寶石,路徑上的命令提示符和火關閉此命令從命令列:

C:\Projects\Exploration\Oak\Blog>gem install warmup

熱身寶石 (bit.ly/15e51Lx) 其實是你會怎麼開始橡木專案 — — 它將拉下一個包含所有主要的移動的範本組件橡木要求。

你可以告訴已這是很長的路,從"檔 |新 |專案",您可能非常熟悉。

起始橡木

新橡木專案啟動並運行包括使用熱身寶石從命令列向下拉的種子範本從其家線上,就像這樣:

C:\Projects\Exploration\Oak\Blog>warmup https://github.com/amirrajan/loam Blog

這個種子專案,一旦它被推倒到您的電腦包含光禿的骨頭"博客"執行 (和我把博客放在引號中因為如果這可以被稱為網路日誌,然後我 NBA 籃球願望是活著和好,儘管我不能運球,拍攝或扣籃)。 一旦該磁片停止旋轉,打開下載的 Blog.slnVisual Studio解決方案檔 (所以你在你面前的舒適Visual Studio環境)。 然後,從命令列中,您發出的熱身命令,運行這兩個命令:

C:\Projects\Exploration\Oak\Blog>rake
C:\Projects\Exploration\Oak\Blog>rake server

耙子是紅寶石"生成"工具,在也是如此"讓"是 C c + + 生成工具很多很多年 ; 它會發出一系列的步驟根據目標。 第一個命令將生成解決方案,和第二個會告訴耙將代碼部署到 IIS 表示目錄並啟動 IIS 表達。 埠 3000 (預設) 現在將準備接受傳入的 HTTP 要求。

如果你是好奇,想看看完整的目標,支援 Rakefile,調用"耙-T,"名單,你會看到在所顯示的命令列輸出圖 1。 (附註:多長,完成上市的目標是可用的"耙-D,"對於那些想要看到每個任務的完整的説明文本)。

圖 1 目標清單中支援的 Rakefile 從命令列

C:\Projects\Exploration\Oak\Blog>rake -T
rake build                  # builds the solution
rake default                # builds and deploys website to directories iis...
rake deploy                 # deploys MVC app to directory that iis express...
rake export                 # if you have the nuget package oak installed, ...
rake reset                  # if you have the nuget package oak installed, ...
rake sample                 # if you have the nuget package oak installed, ...
rake server                 # start iis express for MVC app
rake simulate_load_balance  # simulate the web application as if it were lo...
rake stop_nginx             # stops nginx
rake sync[file]             # synchronizes a file specfied to the website d...
rake tests                  # run nspec tests
rake ui                     # run ui automation tests
rake ui_tests               # runs ui tests (without building)

一旦 IIS 表示啟動並運行,揭開序幕的連續生成工具,助手:

C:\Projects\Exploration\Oak\Blog>sidekick

助手是實際上一個批次檔,使用命令列的 C# 編譯器來編譯將會成立一個檔案系統觀察程式,看看當目錄中的檔樹的變化,一個小的.exe 程式 (sidekickapp.exe) 和 — — 如果它們是源的檔 — — 觸發MSBuild重新編譯該專案。(Glenn 塊最近實驗與羅斯林來創建一個 C# 複製環境中,ScriptCS,還可用來完成同樣的事情,最有可能)。

再進一步的快速撤銷:注意在圖 1 耙如何提供一個選項來運行"耙 simulate_load_balance"。這是 — — 就如同它的名字所暗示的 — — 一個類比的應用程式的行為方式背後簡單的輪循負載平衡器,所以您可以測試您的應用程式 (和,具體而言,應用程式狀態的行為方式) 在負載平衡環境中而無需擺弄虛擬機器 (Vm),負載平衡器硬體或軟體,以及 IIS。它是對整個專案,幾乎說明理由完全由本身學習橡木俏皮小載入項。

此時,橡木是啟動和運行 — — 和中所示,您可以打開瀏覽器訪問 localhost:3000 來證明它, 圖 2


圖 2 流覽到確保運行橡木 localhost:3000

Don不強調關於什麼橡木現在告訴你 — — 這將是我開始探索下一步。現在,它是不足以確保橡木是啟動並運行。

疑難排解

如果無法正常工作,則可能是耙子並不知道您的 IIS 表達期待的 Web 網站,居住 ; 橡木設置 Rakefile 使用一個設定檔,dev.yml,知道到哪裡去安裝ASP.NET-已編譯的檔。在該檔 (在 Blog.sln 檔相同的目錄) 中,設置以下各行以匹配您的系統上是什麼:

website_port: 3000
website_deploy_directory: c:\Prg\iisexpress\Blog
solution_name: Blog # just the name, no .sln extension
mvc_project: Blog # just the folder name,
  no .csproj extension
test_project: Blog.Tests # just the folder name,
  no .csproj extension
iis_express: C:\Program Files\IIS Express

在 64 位系統上,例如,IIS 表示將被安裝在"C:\Program 檔 (86) \IIS 快車"。

進一步探索

有很多的橡木有待探索 — — 事實上,這篇文章的標題或許應該已經"橡子,"考慮到這是必要的種子會從中誕生的框架 (和一系列文章) 其餘部分。橡樹還有很多尚未來告訴你,從開始,其融入傳統ASP.NETMVC 開發結構 (控制器、 視圖和模型),並實施其資料庫交互。再加上,你尚未看到所有這額外的模具 (紅寶石和咆哮聲) 給你買。出去玩一段時間 — — 開始下一次的真正樂趣。

編碼愉快 !

Ted Neward 是的校長 Neward & 同夥 LLC。他已寫一百多篇和創作和合著十幾本書,其中包括"專業 F # 2.0"(Wrox,2010年)。他是 F # 最有價值球員,並在世界各地的會議上講話。他徵求意見,並定期導師 — — 聯繫到他在 ted@tedneward.com 如果你感興趣讓他來與您的團隊一起工作或閱讀他的博客在 blogs.tedneward.com

衷心感谢以下技术专家对本文的审阅:埃米爾 Rajan (橡木專案建立者)