孜孜不倦的程序员

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 Studio 2010 中) 的动态功能和获得的一种系统如 Ruby on Rails,但要保持它都在一种语言 (C#),提供静态类型检查和核实生产力好处。

设置

橡木是可用作为 NuGet 包,但来到橡树的开发人员必须了解的一件事是,在所有其他事情之前橡树是更多比"只是"图书馆发展的生活方式方面。橡树将采取不同的方法从什么传统的 ASP.NET MVC 开发人员可使用到构建应用程序。例如,重点是极其迅速的反馈将意味着橡树想要将不断建设在背景中 (或至少似乎是),这样只保存.cs 文件将足以在浏览器中查看结果 — — 没有明确的"构建"步骤应该是有必要。(如何实现这一点的橡木实际上并不火箭科学,您会看到)。橡木发展的最终结果将是"传统"的 ASP.NET 应用程序,所以操作的人将永远不会知道从如何你习惯,幸运的是你以不同的方式生成它。

模具

这种生活方式调整的部分是橡木不只是一次 NuGet 下载,但还需要一些其他工具必须安装在您的机器,入门的使用。IIS Express 是一种工具,许多 Microsoft.NET 框架开发人员已将如果他们已经试验了 Visual Studio LightSwitch 在所有。另一个这种工具是红宝石,用在一些生成自动化和模具。再次,一旦完成了发展,但你需要它来开始和在橡树的发展不会在生产服务器上需要红宝石。写这篇文章,红宝石只是发布版本 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.sln Visual 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

Browsing to localhost:3000 to Ensure Oak Is Running
图 2 浏览到确保运行橡木 localhost:3000

不强调关于什么橡木现在告诉你 — — 这将是我开始探索下一步。 现在,它是不足以确保橡木是启动并运行。

疑难解答

如果无法正常工作,则可能是耙子并不知道您的 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.NET MVC 开发结构 (控制器、 视图和模型),并实施其数据库交互。 再加上,你尚未看到所有这额外的模具 (红宝石和咆哮声) 给你买。 出去玩一段时间 — — 开始下一次的真正乐趣。

祝您工作愉快!

.Java 是的校长 Neward & 同伙 LLC。他已写一百多篇和创作和合著十几本书,其中包括"专业 F # 2.0"(Wrox,2010年)。他是 F # 最有价值球员,并在世界各地的会议上讲话。他征求意见,并定期导师 — — 联系到他在 ted@tedneward.com 如果你感兴趣让他来与您的团队一起工作或阅读他的博客在 blogs.tedneward.com

衷心感谢以下技术专家对本文的审阅:埃米尔 Rajan (橡木项目创建者)