Mono 准备好迎接黄金时段了吗? [关闭]

2023-11-27

有人在大型或中型项目中使用过 Mono(开源 .NET 实现)吗?我想知道它是否适合现实世界的生产环境。它稳定、快速、兼容……足以使用吗?将项目移植到 Mono 运行时是否需要花费很多精力,或者确实如此,really是否足够兼容以获取并运行已为 Microsoft 运行时编写的代码?


有几个场景需要考虑:(a) 如果您正在移植现有应用程序并想知道 Mono 是否足以胜任此任务; (b) 你开始编写一些新代码,并且你想知道 Mono 是否足够成熟。

对于第一种情况,您可以使用Mono 迁移分析器工具(Moma) 评估您的应用程序距离在 Mono 上运行还有多远。如果评估结果非常出色,您应该开始测试和质量检查并准备发货。

如果您的评估返回的报告突出显示了 Mono 中缺失或语义显着不同的功能,您将必须评估代码是否可以调整、重写,或者在最坏的情况下您的应用程序是否可以在功能减少的情况下工作。

根据我们基于用户提交的 Moma 统计数据(这是根据记忆),大约 50% 的应用程序开箱即用,大约 25% 需要大约一周的工作量(重构、调整),另外 15% 需要认真致力于重做代码块,其余部分不值得费心移植,因为它们与 Win32 的联系如此紧密。那时,要么您从零开始,要么业务决策将推动您的代码可移植,但我们正在谈论值得数月的工作(至少从我们拥有的报告来看)。

如果您从头开始,情况会简单得多,因为您将只使用 Mono 中提供的 API。只要您继续使用受支持的堆栈(几乎是 .NET 2.0,加上 3.5 中的所有核心升级,包括 LINQ 和 System.Core,以及任何 Mono 跨平台 API),您就会没事。

每隔一段时间,您可能会遇到 Mono 中的错误或限制,并且您可能必须解决它们,但这与任何其他系统没有什么不同。

至于可移植性:ASP.NET 应用程序更容易移植,因为它们几乎不依赖于 Win32,甚至可以使用 SQL Server 或其他流行的数据库(有很多与 Mono 捆绑的数据库提供程序)。

Windows.Forms 移植有时会比较棘手,因为开发人员喜欢逃离 .NET 沙箱,并绞尽脑汁进行 P/Invoke 来配置一些有用的内容,例如更改光标闪烁率(表示为 wParam 中以 BCD 形式编码的两个贝塞尔点)。或者类似的垃圾。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mono 准备好迎接黄金时段了吗? [关闭] 的相关文章

  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 检测 SignalR Hub 客户端立即断开连接

    SignalR Hub OnDisconnected 何时在服务器端引发 对于崩溃或关闭而不调用Stop method 我正在使用 SignalR NET 客户端进行测试 而不是 javascript 客户端 如果我打电话给Stop客户端上
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标
  • 高度并行化的Levenshtein距离算法

    实际上 我必须实现一个字符串比较 最后得到匹配百分比 不仅仅是布尔结果匹配 不匹配 为此 我找到了 Levenstein 距离算法 但现在的问题是性能 例如 我有 1k 个字符串需要相互比较 现在大约需要 10 分钟 对于每个算法 我已经并
  • 当用户打开文件时如何锁定对文件的访问?

    我正在编写一个 C NET 程序 该程序使用 XmlSerializer 对当前用户正在处理的项目与 XML 文件进行序列化和反序列化 这工作正常 但我试图找到一种方法来防止两个用户从网络驱动器打开同一个文件并让一个用户覆盖前一个用户的保存
  • WCF 服务调用包装器

    为 WCF 服务调用创建包装器的最佳实践是什么 我认为有必要 为了在同一个地方监视所有呼叫 我正在考虑使用这种代码 这是正确的想法吗 RetType t ServiceExecutionContext
  • .NET 内存不足故障排除

    在阅读了几篇有关 NET 技术中的内存的启发性文章后 Out of Memory 不是指物理内存 https learn microsoft com en us archive blogs ericlippert out of memory
  • Android 手机作为 GSM 调制解调器在 PC 上发送/接收短信?

    是否可以将 Android 移动设备用作 PC 上的 GSM 调制解调器 我正在 net下开发应用程序来发送 接收短信等 现在我想通过 USB 将我的 Android 设备连接到我的 PC 并将其用作 GSM 调制解调器来与其通信 这里是参
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此
  • 空 catch 与 try-catch 语句中的“catch Exception”相同吗?

    try catch Exception 我可以写吗 try catch 这在 C NET 3 5 中可以吗 代码看起来更好 但我不知道是否相同 他们是not一样的 catch Exception 将仅捕获托管异常 catch 也会捕获非 C
  • WM_CLOSE 和 SC_CLOSE 之间的区别

    我只是想知道这两个消息常量之间有什么区别 我应该使用哪一个WndProc重写时的方法 用于处理关闭按钮消息 WM CLOSE http msdn microsoft com en us library windows desktop ms6
  • 类库的 app.config 中的绑定重定向有什么作用吗?

    我经常使用的 VS 解决方案包括单个可执行项目 控制台应用程序 网络应用程序 和许多类库项目这些都被可执行文件引用 使用 NuGet 并安装包时 经常会出现app config为每个项目创建的文件 通常只包含合并引用程序集版本的绑定重定向列
  • 在存储库模式中按 ID 进行过滤是否是不好的做法

    我正在使用 ASP NETMVC4 with 实体框架5 基本上每个控制器操作结果按登录用户的公司 ID 过滤数据库结果 我刚刚开始实现存储库模式来返回模型 而不是直接从控制器过滤 DbContext 将companyID传递到存储库中以过
  • 什么是 .NET 程序集?

    什么是 NET 程序集 我浏览了网络 但无法理解其定义 程序集是 net 应用程序的最小部署单元 它可以是一个dll or an exe 它主要有两种类型 私人集会 dll 或 exe 是一个应用程序的专有财产 一般存放在应用程序根文件夹中
  • 如何在 .NET 中使 ComboBox 不可编辑?

    我想要一个 仅选择 ComboBox它提供了一个项目列表供用户选择 应在文本部分禁用打字ComboBox控制 我最初对此进行谷歌搜索 发现了一个过于复杂 误导性的建议来捕捉KeyPress event 要使 ComboBox 的文本部分不可
  • 为什么我的程序集在安装到 GAC 后在“添加引用 > .Net”中不可见?

    我想问一个关于 GAC 的简单问题我创建了一个程序集 Awesome DLL 对其进行签名 然后将其安装到 GAC 中 C MyApps Awesome Awesome Awesome bin Release gt sn k Awesome
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele

随机推荐

  • 如何使对话框(视图)在与主窗口相同的监视器上打开

    在具有多个显示器的 PC 中 假设您运行的应用程序除了主窗口 例如选项 之外还有第二个窗口 对话框 您希望它在与您的计算机相同的屏幕 显示器中打开MainWindow 如何强制这种行为 你基本上想要阻止你的场景MainWindow在一台显示
  • git 是否需要存在于服务器上才能使用它?

    当我开始使用 git 时 我的同事告诉我的最显着的好处之一是git 不需要出现在服务器上反对svn 但这真的是真的吗 在另一个线程我读到至少有一个git upload pack or git receive pack将是必要的 另一方面 我
  • 如何在使用 Chrome 浏览器的 Selenium Web 驱动程序执行自动化测试时绕过 NTLM 身份验证弹出窗口?

    我使用以下 python 代码绕过 NTLM 弹出窗口 chromedriver webdriver Chrome executable path chromedriver path chrome options options chrom
  • maxItemsInObjectGraph 被忽略

    我的 WCF 服务出现问题 该服务尝试序列化过多的数据 从跟踪中我收到一个错误 指出可以序列化或反序列化的最大元素数为 65536 请尝试增加 MaxItemsInObjectGraph 配额 所以我去修改了这个值 但它只是被忽略了 错误是
  • 创建自定义 PSObject PowerShell 2.0

    是否可以创建一个自定义对象 PSObject 并在程序执行之前和之后定义其属性 我们不断向该对象添加值数组 For e g c c New Object PSObject c Add Member type NoteProperty nam
  • emacs 字符串插入矩形数字向量?

    如何使用 emacs string insert rectangle 操作将数字向量添加到一系列行中 例如 我的 emacs 缓冲区中有一堆文本条目的缩短版本 element01 8 1111111110110100001000000011
  • C++、OpenCV:调整大小时断言失败

    作为一名 C 初学者 我目前面临着一个我无法解决的问题 即使代码非常简单 我一直在寻找answers互联网上到处都是 但没有一个适用于我的问题 我目前正在 VS2013 下使用 OpenCV 2 4 8 用 C 编写基本的 SVM 我能够处
  • OpenSSL::SSL::SSLContext SNI servername_cb 不工作

    正如中所引用的OpenSSL X509 证书显示错误域名的证书 我需要使用 TLSv1 或更高版本and 服务器名称指示扩大 即使ssl version and servername cb通过设置SSLContext 我仍然收到错误的证书m
  • 动态创建一个继承自ActiveRecord的类?

    我希望能够动态创建继承自 ActiveRecord 的类 以便在 Rails 应用程序外部编写脚本 我被困在这样的事情上 require active record def create arec table name Class new
  • 如何在graphql和strapi中传递JSON对象

    当我手动编写突变查询 在 graphql 插件中 时 它正在工作 mutation createExam input data name myName desription ggg questions gf hello time 2 sub
  • Java Web 服务返回带有 > 和 < 而不是 > 和 < 的字符串

    我有一个返回字符串的 java web 服务 我正在创建这个 xml 字符串的主体DocumentBuilder and Document班级 当我查看返回的 XML 源 在浏览器窗口中看起来很好 而不是 时 它返回 lt and gt 围
  • Git 类似于 Hg 的 Bigfiles 扩展?

    我想要 git 中类似的东西Mercurial 的 Bigfiles 扩展 注 据我所知git 大文件 但这无关 基本上我想在我的 git 存储库中存储大型二进制文件 但我不想在进行克隆时获得大型二进制文件的每个版本 我只想在签出包含这些大
  • 使用 ReferenceEquals 的 IEqualityComparer

    有默认的吗IEqualityComparer
  • 可能有 ``a < b and not(a - b < 0)`` 带浮点数

    Is a lt b and not a b lt 0 由于浮点轮误差可能导致浮点吗 有例子吗 这个答案旨在作为对帕特里夏 沙纳汉已经给出的好答案的学究补充 这个答案涵盖了正常情况 在这里 我们担心的是您在实践中不太可能遇到的边缘情况 是的
  • “phpinfo():依赖系统的时区设置是不安全的......”[重复]

    这个问题在这里已经有答案了 在运行 Blue box FreeSwitch PBX 前端 的 php 安装脚本时 我收到有关时区故障的错误 然后我开始挖掘 我不确定此时发生了什么 但这是我所拥有的 我在 public html 目录中创建了
  • MS Access - 链接到另一个 Access 数据库中的查询

    如何链接来自另一个 MS Access 数据库的查询 我知道我可以轻松链接表格 但我不知道如何链接查询 该查询从许多我不想链接的表中获取数据 你可以这样做 SELECT RemoteQueryname FROM RemoteQuerynam
  • .NET WebClient.UploadValues 与 WebClient.UploadData

    我正在编写一个类库来在我控制之外的站点上执行操作 该网站正在接受表单帖子作为输入 谁能告诉我这两种方法除了上传数据的形式之外是否有区别 System Net WebClient UploadData Uri Byte System Net
  • scanf("%[^\n]s",a) 与 gets(a)

    有人告诉我 当用户输入字符串时不应使用 scanf 相反 大多数专家以及 StackOverflow 上的用户都使用 gets 我从来没有在 StackOverflow 上问过为什么不应该使用 scanf 而不是 gets 来处理字符串 这
  • C++ 循环遍历 Map

    我想迭代中的每个元素map
  • Mono 准备好迎接黄金时段了吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 有人在大型或中型项目中使用过 Mono 开源 NET 实现 吗 我想知道它是否适合现实世界的生产环境 它稳定 快速 兼容 足以使用吗 将项目移植到 Mono 运行时是否需要花费很多精力 或