微软生物学基金会发布 Mono 兼容性报告

阅读数:1090 2010 年 8 月 14 日

话题:.NET开源DevOps语言 & 开发架构

微软生物学基金会称自己是个“语言中立的生物信息学工具集,是微软.NET Framework 的扩展,最初面向基因组学领域的研究”。目前,它针对常见的生物信息学文件格式实现了一系列解析器;操纵 DNA、RNA 以及蛋白质序列的一系列算法;一套生物学 Web Services 连接器,比如 NCBI BLAST。

虽然微软研究院保证说这些工具会兼容于第三方厂商,但人事问题阻碍了他们为支持 Silverlight 与 Mono 而制订的重构计划。Michael Zyskowski 写到

在 MBF 的开发过程中,我们决定使用.NET 4.0,尤其是通过 Parallel Extensions 在序列比对与装配时充分发挥多核计算机的能量。SL4 的功能并不是那么容易搞懂,最后我们选择充分发挥.NET 4 特性的优势而不是像 Mono 或 SL4 这种只关注某一部分特性的框架。我们打算将框架重构为一个面向 MBF v1 各个版本的子程序集,进而实现 SL4 的兼容性(还有.NET 4.0 Client Profile 子集)。

但遗憾的是,过去几个月,有几个核心开发者离开了我们,因此我们不得不做出妥协。其中一个决定就是将库重构为 Client Profile、Silverlight4 与完整的.NET 4.0 程序集的计划推后。这是继 6 月份 MBF v1 最终版发布后我们所面临的第一要务。但我们希望社区能够继续探究、实现原型、甚至提交代码来完成这个目标。该项目的美好之处在于我们希望社区能够促进平台的不断发展,不必再依赖微软就能实现这一切,这非常重要。

虽然还需要进行很多测试,但由 Mono Migration Analyzer 所检测出的兼容性问题已经非常少了。具体问题有:

  • 有两个地方调用了CredentialCache.DefaultCredentials。它只用于 NTLM、协商以及基于 Kerberos 的认证。这样,如果没有调用的话就可以忽略掉了。但如果需要他们,目前还没有什么好的解决方法。
  • Assembly.GetName(Boolean)调用了 4 次,在对程序集进行 shadow copy 时修改 Assembly.CodeBase 的工作是很无聊的事情。
  • 与安全相关的另一个特性是来自于 Windows Communication Foundation 的HttpTransportSecurity.ClientCredentialType。由于它只用于通过 WCF 调用 Web Services,因此在 Mono 赶上来时需要使用其他的 Web Services 层。
  • 在一个扩展包中对 Win32 函数GetTickCount调用了多次。它仅仅会返回自系统上一次启动以来所经历的秒数,因此很奇怪 Mono 没有为 Linux 与 OS X 实现一个转换层。

总而言之,实现 Mono 版本的工作量并不太大。但遗憾的是,实现 Silverlight 版本就不那么轻松了,因为它与.NET 4.0 相差太多,最终也不会实现完全的兼容性。

查看英文原文:Mono Compatibility Report for Microsoft Biology Foundation