前几天,中国区的 Windows Azure 发邮件说免费试用要到期了,博主的两台 Windows 系统的虚拟机也要没有了。

Linux 系统的 VPS 容易得到,但是 Windows 系统的 VPS 就没这么容易弄到了。国内比如阿里云、Azure 都是贼贵贼贵的,Azure 一个月光开机就要 700+ 腿,还不算带宽、空间,阿里云走 80 端口的 Web 还要备案,我就写个小玩意玩玩特么备个毛线案啊。

只是自己写的小玩意,也没必要去买虚拟主机,所以博主只好去找个能在 Linux 上运行 .NET 的方案。

 

经过一番查找,有3个能使 .NET 在 Linux 上运行的解决方案:wx.NETDotGNU 、 Mono 。但是前两个解决方案都相继停止了开发,唯独 Mono 还在茁壮成长,于是这里介绍一下 Mono 。

 

什么是 Mono?

Mono是由 Xamarin 赞助的,基于 .NET 框架的开源开发平台,它允许开发者构建跨平台的应用程序。Mono 的 .NET 是基于 ECMA 标准的 C# 和通用语言基础架构实现的。

Mono 兼容由 Visual Studio 编译的应用程序,不需要另外编译,只需要将编译完成的二进制文件上传到指定位置。

 

Mono 的支持情况

通过 Mono,开发人员可以在 Linux、OS X、BSD、Windows、Solaris 上运行 .NET 应用程序,甚至支持 Wii 和 PS3,同时 Mono 还支持 x86 、 x86-64 、 ARM 等架构。

Mono 也支持 C#、F#、Java、Scala、Boo、PHP、Nemerle、Visual Basic.NET、Python、JavaScript、Oberon、Object Pascal、Lua、Cobra、Synergy-DBL、Component Pascal、Delta Forth、DotLisp、#Smalltalk 等十余种语音。(详细)

Mono 对 .NET 的支持情况据官方说法,支持除了 WPF 、 WWF 、 有限的 WCF 和有限的 ASP.NET 4.5 的异步堆栈外的全部 .NET 4.5 的功能。(详细)

Mono 也拥有比较完善的 API,除了 ECMA 标准的 CLI API 之外,Mono 也开发出了兼容于微软 Windows Forms、ADO.NET、ASP.NET、Silverlight 的 API。由于 User Interface 实现方法的问题,GUI 需要使用 Mono 自己开发的 GTK# 。

 

Mono 有哪些 IDE?

X-Develop 支持 Windows、OS X、Linux 三个平台,包含跨平台的 GUI 编译器、代码自动完成等功能。

MonoDevelop 是由 Mono 社区开发的 IDE,它支持 Mono 自己的 GTK#,并且支持 Windows、OS X、Linux 平台。但是它现在仍然缺乏对 Windows Forms 和 ASP.NET 的支持。

Visual Studio 是微软自家的 IDE 。由于 Mono 对 Visual Studio 编译的二进制文件完全兼容,所以 Visual Studio 也是 Windows 平台上最好的开发工具,当然,它无法开发 Mono 的 GTK#。

除了这些 IDE ,使用 Vim 和 NotePad 都可以编写 .NET 应用程序,只要你习惯…

 

如何使用 Mono 运行 ASP.NET 开发的网站?

运用 Mono 可以有以下几个方法运行 ASP.NET 开发的网站:

Mono + XSP :XSP 是用 C# 编写的一个 Web 服务器,它可以用于运行 ASP.NET 应用程序。但是 XSP 最近一次更新是在 2011 年,并且 XSP 是单线程的,对高并发的处理并不好。

Apache + mod_mono :mod_mono 是托管在 Apache 上的一个模块,使用 mod_mono 还是需要安装 XSP,说白了还是要调用 XSP…

Nginx + FastCGI :博主没有使用过 Nginx,对基于 FastCGI 的 Web 服务器不怎么了解,但是…Install XSP first…So…

Mono + Jexus :Jexus 是国人基于 Mono 开发出的一款非开源的 Web Server,具有以下优点:

1.具有优秀的稳定性、易用性和并发承载能力、并行处理速度;

2.支持 Fast-CGI 协议,通过 Fast-CGI,Jexus 能支持包括 PHP 在内的所有拥有 Fast-CGI 服务功能的 WEB 应用;

3.具有反向代理功能,同时支持负载均衡;

4.具备基于正则表达式的强大的 URL 重写功能;

5.拥有强大的流媒体支持能力,支持 FLV/F4V 视频文件拖动播放,支持微软平滑流媒体技术;

6.具备可控的 “ASP.NET前置缓存” ,能大大提升 ASP.NET 网站的承载能力和响应速度;

7.支持 Https;

8.具有入侵检测功能,能自动终止已被识别的非法请求;

9.提供符合 OWIN 标准的应用层接口,支持 Nancy 、 SignalR 等符合 OWIN 标准的应用框架;

10.安装部署简便。

以上优点都是 Jexus 这个软件自己说的…不过由于其仍然有人进行开发维护,比单线程早就不更新的 XSP 好很多,所以这也是博主建议和正在使用的方案。

PS:博主在写这篇博文的时候…发现 Jexus 和它的 BBS 都挂掉了…用梯子也访问不了…_(:3」∠)_于是这博文拖了3天…

 

关于 Mono 的文章

张善友先生的 cnblog 有比较完整的关于 Mono 的索引:http://www.cnblogs.com/shanyou/archive/2012/07/28/2612919.html

Jexus 的技术社区:http://www.linuxdot.net/


原创文章,转载请以链接形式注明出处:https://blog.ttionya.com/article-1026.html