6

自分の判断が正しいか知りたいです。ユーザーがローカル データベース (おそらく SQL CE または SQLite) とリモートの共有データベース (ほとんどの場合 MySQL) からのデータベース エントリを混在させることができるアプリケーションを開発しています。理想的には、柔軟性があり、複数のデータベース サーバー タイプと互換性がある必要があります (初期構成に従って静的に、複数のタイプを動的に混合するのではありません) が、これはショーストッパーではありません。

コードは C#、.NET 4 です。

当然のことながら、NHibernate について考えていたのは、バージョン 3.0 で LINQ を備えていて、コードの読みやすさと効率性にプラスであり、モデル ファーストのアプローチが Entity Framework よりも自然だからです。また、混合データベース部分のシャードもあり、処理がはるかに簡単になります。もう 1 つのオプションは EF 4 です。EF 4 は、.NET コンテキストと Visual Studio で完全にサポートされており、有望な将来性があるため、私はそれを好みます。

Shards は十分に成熟していますか? かなり長い間 3 ベータ版に固執しており、死んでいるプロジェクトのように見えますが、この拡張機能に基づいて専門的なアプリケーションを展開した人はいますか? 未来はありますか?それとも別のオプションがありますか?

NHibernate 3 は Mono 上で動作しますか? 私はそう思いますが、実際の確認は素晴らしいことです。Web サーバーを代替インターフェイスとして開発する必要がある場合、これは EF に勝るもう 1 つの利点です。

情報やフィードバックをお寄せいただきありがとうございます。


更新 1

どうやら .NET 4 が問題であり、NHibernate を使用するには .NET 3.5 が賢明です。また、SQLite と SQL CE、または WPF のようなフレームワークの他の部分にも明らかに問題があります。

NHibernate では、異なるデータベース タイプ (MySQL と SQLite など) 間でのシャーディングが可能ですか?

したがって、クライアント側にとっては EF 4 の方が安全であり、可能な ASP.NET インターフェイスに関しては NHibernate の方が安全であると私は信じ始めています。

4

1 に答える 1

0

シャーディングは(既知のスキーマ用に)既知のサーバーへの呼び出しをリダイレクトするように設計されています。つまり、a、b、c、d で始まる名前がサーバー a に、e、f、g、h で始まる名前がサーバー b にリダイレクトされます。

クロスデータベースサーバーのmakeで使用されているとは聞いたことがありません。これが機能するかどうかは疑問です。

シャーディングはその場所にありますが、異なるシャードが異なるパフォーマンスプロファイルを持つ場合、解決が難しい断続的な問題が発生する可能性があると想像できます.

モノラルで NH3 を実行できることを示すこのリンクがあります... https://nhibernate.jira.com/browse/NH-2312

リモート共有データベース WCF または REST を使用して、既知の API を介して抽象化する傾向があります。

于 2011-03-24T08:20:10.327 に答える