[解決済み】Monoはプライムタイムに間に合うか?[クローズド]
質問
オープンソースの.NET実装であるMonoを大規模または中規模のプロジェクトで使用したことのある方はいらっしゃいますか?私は、それが現実の生産環境に対応できるものなのかどうか、疑問に思っています。安定性、高速性、互換性、......どれをとっても、使うに足るものでしょうか?Monoランタイムにプロジェクトを移植するのは大変な作業ですか、それとも本当にそうですか? 本当に Microsoftのランタイム用に既に書かれたコードをそのまま引き継いで実行できるほど互換性があるのでしょうか?
解決方法は?
いくつかのシナリオを検討する必要があります。(a) 既存のアプリケーションを移植しようとしていて、Monoがこのタスクに十分適しているかどうか疑問に思っている場合。
最初のケースでは Monoマイグレーションアナライザーツール (Moma) を使って、あなたのアプリケーションが Mono 上で動作するまでの距離を評価することができます。 評価結果が良好であれば、テストとQAを開始し、出荷の準備をする必要があります。
もし、評価結果が、Mono で欠けている機能やセマンティクスが大きく異なる機能を強調するレポートであった場合、コードを適合させることができるか、書き直すことができるか、最悪の場合、機能が低下してもアプリケーションが動くかどうかを評価する必要があります。
ユーザーからの投稿に基づく Moma の統計によると (これは記憶によるものです)、約 50% のアプリケーションがすぐに動作し、約 25% は約 1 週間分の作業 (リファクタリングや適合) を必要とし、さらに 15% はコードの塊をやり直すことに真剣に取り組み、残りは Win32 と信じられないほど結びついているので移植する価値がない、ということです。 その時点で、ゼロから始めるか、ビジネス上の決断でコードをポータブルにする努力をすることになりますが、(少なくとも私たちが得たレポートでは)数ヶ月に値する作業ということになります。
ゼロから始める場合は、Monoに存在するAPIのみを使用することになるので、状況はかなり単純になります。 サポートされているスタック(.NET 2.0 と LINQ や System.Core を含む 3.5 のすべてのコアアップグレード、および Mono クロスプラットフォーム API)を使用している限り、問題なく使用することができます。
たまにMonoのバグや制限に遭遇して、それを回避しなければならないこともあるかもしれませんが、それは他のシステムと変わりません。
移植性については。ASP.NETアプリケーションはWin32への依存がほとんどなく、SQLサーバーやその他の一般的なデータベースを使用することもできます(Monoにはたくさんのデータベースプロバイダがバンドルされています)ので、移植はより簡単なものとなります。
Windows.Forms の移植は、開発者が .NET のサンドボックスから抜け出し、P/Invoke を使って、カーソルの点滅速度を 2 つのベジェポイントで表現し、wParam に BCD 形式でエンコードするというような便利な設定をしたがるため、時にやっかいです。 あるいは、そのようなジャンク。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] ServicePointManagerは、*スキームのプロキシをサポートしていません[closed]。
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] .NET WebRequestを使用してsharepointにファイルをアップロードすると、409/Conflict HTTPエラーが発生する理由?
-
[解決済み] "SSL/TLSセキュアチャネルの信頼関係を当局と確立できませんでした "の解決方法
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] 文字列から数字を抽出する正規表現
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] URLのPath.Combineは?
-
[解決済み] WPFの場合、x:Name属性とName属性の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み] データテーブルの並べ替え
-
[解決済み] EF Coreのadd-migrationのビルドに失敗しました。
-
[解決済み] スマートクライアント・ソフトウェアファクトリーの体験談
-
[解決済み] Microsoft.NETFrameworkとMicrosoft.NETFramework64の違いは何ですか?
-
[解決済み] .Netの配列のLongLengthの目的は何ですか?
-
[解決済み] データテーブルがすでに別のデータセットに属している
-
[解決済み] 1は有効なWin32アプリケーションではありません "を解決するには?
-
[解決済み] RelativeSourceでWPFバインディングを使用するにはどうしたらいいですか?
-
[解決済み] プライベートメソッドのユニットテストはどのように行うのですか?