在MONO 2.8.2中遇到的一些兼容性问题

最近公司的一个项目因为要接入腾讯开放平台,需要转移到mono环境中,在做mono兼容性调整的时候遇到了一些问题,记录下来跟大家分享一下。

首先,要把.NET Framework的应用迁移到mono平台,一定要借助这个软件:MoMA。Mono Migration Analyzer (Moma)是一个用于开发者使用的MS .net下开发的应用程序迁移到Mono平台的不兼容性检测工具。工具通过分析.dll或者.exe程序集的代码是否符合ECMA CLI,大家都知道符合ECMA CLI标准的.net 程序可以运行于MS .net和Mono平台。这个工具可以帮助我们生成一个很详细的mono兼容性文档,可以帮助我们调整程序的兼容性。

不过这个工具的分析结果也不完全正确,一些实现方式MoMA提示不兼容,但在mono中是可以正常使用的。

遇到的一些不兼容的问题:

1、项目是使用JS来调用Web Services来做的,用xsp做WEB服务器端的时候发现如果Web Services接口中有使用可空参数的时候,不能正常使用,即使回传的值不是null,接口依然只能接收到null值。

2、如果使用nginx通过调用mono的fastcgi来做WEB服务器,这种方式将不支持Web Services。Apache的mod_mono暂未做测试。

3、在mono环境中,TimeZoneInfo.Local无法使用,这是mono的一个BUG。

4、MySQL Connector的mono版本中有2个类库,一个是.net 2.0,一个是.net 4.0。如果把2.0的类库也用MoMA分析,会提示很多不支持的方法;如果你是用nginx的fastcgi解析.net程序,需要使用4.0的MySQL类库;而在xsp中,使用2.0的类库就好了。

5、如果你的操作系统是SLES,建议获取mono的源码编译完装,会让你省去很多事情。

6、在SLES编译XSP源码时,你系统的sqlite3的版本号要大于3.5.0,否则编译不过。

7、把项目转到mono平台,风险还是非常大的,非常多第三方类库不能直接在mono平台中使用,如Combres/log4net/Quartz.NET等等,都需要修改源代码。

暂时先整理这些问题,后面会补上在SLES中部署mono环境的详细过程。

总的说来,mono整体的兼容性是非常不错的,在linux中跑起来很流畅,mono 2.8.2已经不再是玩具了。关于mono,园子里的geffzhang有很深入的研究,有兴趣的同学可以去看看他的博客。

大家也可以关注我的另外一个独立博客: http://blog.moozi.net

转载于:https://www.cnblogs.com/moozi/archive/2011/01/24/1942781.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值