2009-08-25 3 views
3

根拠:マルチティア・アプリケーションでは、クライアントが独自のlinq式をサーバーに送信することを許可する必要がありますか?

HQLとNH基準はNHibernateは、特定の構築物であり、そのようなものとして、それらは、サーバー側のDALの実装の詳細です。私は彼らがクライアント側に「漏れる」ことを望んでいません。したがって、クライアント側では、処理するサーバーにLINQ式を提供します。

私には正当なものと思われますが、そうでないと思われる人もいますので、その理由を知りたいと思います。

ありがとうございました。

+0

これはあなたの質問に答えることはできませんが、私はあなたが正しいと思います.LINQ式をクライアントから渡すことはOKです。 (懸念の分離などの通常の制約内で) –

答えて

3

クライアント側から式を受け入れること(またはクライアント側にIQueryable<>を公開すること)に対する議論は、フィルタリングや結合などの非クライアントロジックを「間違った」場所で実行できるようにすることです。クライアントが間違ったデータを公開している場合、クライアント側のロジックとDALの背後にあるロジックの2つの場所があります。本質的に、それはあなたの懸念を分けないのはあまりにも簡単です。

しかし、これらの技術を意図的かつ慎重に使用することで、アプリケーションが改善される可能性があることは間違いありません。たとえば、IQueryable<>を使用すると、結果セットではなくサーバーによって効率的に実行されるクライアント側のソートとパーティショニング(スキップ/テイク)をサポートするのに最適です。反対意見では、DALにソートパラメータとパーティションパラメータを提供するだけです。

最終的には、用途に合ったものを使用してください。あまりにも多くのロープを与えて、ぶら下がっているのを見つけたら、いつでも後でリファクタリングすることができます。

関連する問題