0

私は ASP.NET MVC と .NET フレームワーク全般にある程度精通しています (仕事で使用しています)。
個人的なプロジェクト(ウェブサイト)を始めようと考えています。ただし、私は特定のプラットフォームに縛られたくありません (それは私を大いに悩ませます)。
これにより、Mono を検討するようになりました。しかし、私が見てきた限りでは、Mono は、私にとって重要な (または私が本当に利用したい) いくつかの側面で、Microsoft の .NET に遅れをとっています。これらのいくつかは次のとおりです。

  • LINQ to SQL。Mono チームはたった今 (Mono 2.6)、DBLinq プロジェクトの助けを借りて LINQ のサポートをリリースしました。問題は、DBLinq の主なテスト プラットフォームが MS SQL SERVER と SQLite であることです。PostgreSQL と MySQL は少し見捨てられているように思えます。また、LINQ to SQL は実装されたばかりなので、いつ成熟するのか考えさせられます。
  • Linux での Mono のホスティング。これらのうち、利用できるものはほとんどありません。

また、サーバー上で負荷の高い処理を処理できるように準備したいと考えています (これが主な問題です)。Twitter の経験から、私は Ruby on Rails から遠ざかっていますが、RoR がスケールすることを証明できれば (ベンチマークを表示してください/意見ではなく事実です)私は喜んでそれを試してみたいと思います.

  • 時間をかけて別の Web フレームワークを学習する必要がありますか、それとも Windows/SQL Server 以外のプラットフォームで近い将来 (1 ~ 2 年) の間、Mono の進歩とホスティング オプションに頼るべきでしょうか。
  • スケーラビリティに関しては、C# にはスケーラビリティの固有の側面があると考える傾向があります (厳密に型指定され、解析/解釈される代わりに ByteCode)。そう思うのは間違っていますか?
  • コードがサーバーでホストされない方法で他のフレームワークと連携する方法はありますか (私は python/ruby/anything VM などを受け入れます)
4

1 に答える 1

1

これは古い質問なので、元のポスターよりも他の人にもっと答えているかもしれません。

ホスティング

Monoで記述している場合は、Windows、Mac、またはLinux(またはSolaris、FreeBSDなどの信頼性が低い)でホストできます。ただし、Windowsでホストする場合は、Monoアプリを実際の.NETで実行してみませんか?

自分でホストしていないのに、Monoでホストされているかどうかを気にするのはなぜですか?確かに、Windows、Linux、またはMacを使用してMonoでアプリケーションを作成し、それらが最も安価で見つけやすい場合は、Windows/.NETホストでホストすることができます。.NETをMonoのMS実装と考えてください。

私はもともと反対の問題を抱えていました。雇用主がWindows開発環境を提供していても、Linuxでホストしたかったのです。私は.NETで開発し、Mono/Linuxでホストしました。モノはこのように私にとって素晴らしい働きをしました。

私の現在の雇用主はMacに夢中です。昨日、ASP.NETMVC2アプリをMacサーバーにデプロイしました。私はMacBookProで、Windowsに一度も触れずにすべてを書きました。

Linuxで.NET/Monoを実行するための私のお気に入りのホストは、Linodeです。最も安いプランは月額$20ですが、同じサーバー上で必要な数のアプリをホストできます。パフォーマンスは優れているので、月額5ドルのホストでうまく動作するものはすべて、確かにLinodeインスタンス上の4つのアプリの1つとして問題なく動作します。

.NETとの互換性

Monoは、Microsoftアプリの互換性ソリューションとしてではなく、プラットフォーム自体として考えるのが最善だと思います。Monoは、ほぼすべての.NETFrameworkをサポートしています。これは素晴らしいフレームワークであるため気に入っていますが、ほとんどの場合、MSと互換性があるかどうかは気にしません。

不快感はありませんが、「MonoはLINQ-to-SQLを十分にサポートしていないため、Ruby-On-Railsを検討しています」という意味をまったく理解していません。MonoはRubyよりもはるかに優れたLINQ-to-SQLをサポートしています。私が思うに、本当にLINQ-to-SQLが必要だからという理由だけで、Windowsを使い続けていると言えます。「クロスプラットフォーム」または「LINQ-to-SQL」のどちらがあなたにとってより重要ですか?

Monoは、データアクセスのための多くの選択肢を提供します。Railsが提供するようなORM(Object Relational Mapper)が必要な場合は、たとえばNHibernate、Subsonic、CastleActiveRecordなどを選択できます。Mono 2.10では、WebMatrixデータを使用することもできます。もちろん、これらすべてのものがとにかく上に構築されているものである、優れた'oleADO.NETを使用することもできます。

ああ、MonoがLINQ-to-SQLをサポートしているという事実を忘れないようにしましょう。私はそれがうまく機能したSQLiteでのみそれを使用したことがあります。ただし、.NETが遅れていることに同意します。おそらく、EntityFrameworkのサポートについて心配していると思います。上記の私のコメントを参照してください。

私の考えでは、問題は、MonoデータアクセスがRailsデータアクセスとどのように比較されるかということです。私の答え:Railsはもう少し統合されており(よりシンプル)、Monoははるかに強力で柔軟性があります。

ヘビーデューティー処理

これは、.NETとMonoが本当に輝くところです。

コンパイルされたバイトコードはインタプリタされたコードよりもはるかに高速であり、C#のような静的言語はRubyのような動的言語よりも高速であると考えるのは正しいことです。もちろん、最終的にはすべてが実装に依存します。

また、C#のような静的言語が他の方法でスケーラビリティを支援することにも同意します。しかし、これは本当に個人的な意見の問題です。動的言語で大規模なソリューションを作成して維持することは実行可能であると考える人は確かにいます。もちろんそういう人はあまりいません。.NETとJavaがエンタープライズ標準であるのには理由があります。

結論

別のWebフレームワークを学ぶ必要がありますか?まあ、私はあなたがすべきだと思います。心に良いです。

他のWebフレームワークはMonoや.NETよりも優れた選択肢ですか?もちろん、それは必要性にもよる。Railsの人々は、おそらく一般的な.NETの群集よりも少し速くサイトを送り出すと思います。ただし、ASP.NET MVC2 +でギャップは実際に埋められました。私は、Railsソリューションよりも.NETソリューションを維持および拡張したいと考えています。また、私はC#がとても気に入っているので、Ruby自体が本質的に満足できるものではなく、使用する必要があります。もちろんそれは私だけです。

また、私だけですが、Monoは優れたクロスプラットフォームWeb開発フレームワークであることがわかりました。私は他のソリューションよりも毎日それを選びます。また、Monoは.NETエコシステムの大部分(特にオープンソースユニバース)にうまく適合していることもわかりました。繰り返しになりますが、本当に必要なのが最新で最高のMSのものを使用することであり、MonoでLinuxまたはMacで実行できるようになることを期待している場合は、がっかりする可能性があります。

Windows Presentation Foundation(WPF)、Entity Framework、または程度は低いもののLINQ-to-SQLがアプリケーション戦略の最も重要な部分である場合、Monoは適していません。

.NETのすべての優れた利点を提供し、必要な場所でほぼすべて実行できるプラットフォームが必要な場合、Monoは非常に優れています。

于 2011-03-03T19:53:45.770 に答える