我接触mono是在2012年,当时正和一位朋友聊起他做的服务器开发框架,他在开发框架里加入了python和javascript的嵌入式支持,其实也谈起了mono这个第三方的c#虚拟机。
我自己也有维护一套服务器开发框架,是用c++开发的,主要是插件式的开发方式,应用逻辑做成插件,在容器中运行,容器负责网络通讯等底层处理,如果可以使用lua、javascript、c#等来开发逻辑插件,将可以大大降低开发和维护的难度。
mono作为一个第三方c#虚拟机,除了可以运行独立的c#程序外,还可以进行嵌入式应用,同时它也支持在Linux上的使用,相比使用非常广泛的嵌入式脚本语言lua,c#语言特性更加完备,资源更丰富,很适合大规模的多人合作开发。
从那时候开始我就关注上了mono,也做了初步的应用研究,但那时候正好碰上被朋友拉去搞创业,没时间继续研究了,就暂时放在了一边。
随后的几年不管是创业还是创业失败被招安,都一直在从事手游的开发,而开发的主要平台就是unity3d,unity3d正式借助mono做到了多平台开发,因而被广泛用于手游开发,我自己也更加坚定了要把mono整合进自己的服务器开发框架里的想法,同时这么做也可以解决一个很现实的问题,服务端和客户端代码共享问题:客户端unity3d通常使用c#开发,而服务器则c++、java、python等都有,但唯独很少有用c#的,在维护客户端和服务器都需要使用的逻辑代码时,如果两边的开发语言不一致就非常麻烦。
因为最近一段时间比较空闲,所以重启了mono的嵌入式开发研究,目前已经初步完成了,以后会慢慢的将一些心得写出来,同时作为实际开发,一个好用的调试器是必不可少的,unity3d下有一个叫unityvs的调试工具非常好用,所以我也找了一些资料和例子,做了个类似的vs调试插件,以后也会慢慢的聊一下。