WCFサービスとそのASP.NET MVCクライアントを含むアプリケーションを開発しています。 ASP.NET MVCのWebサイトには、製品のグリッド、たとえば製品が表示されている必要があります。これらの製品は、WCFサービスを通じてアクセス可能なデータベースに格納されています。そこでMVCコントローラのどこかでWCFサービスのメソッドを呼び出して、表示する必要がある製品の配列を返します。WCFサービスによるページャの実装
私の質問は何ですか?多くの製品が存在する可能性があるため、製品グリッド用のポケットベル機能を実装したいと考えています。だから、それを行うには、いくつかの方法があります。
- 私のコントローラは、製品の全体のリストを取得し、ちょうど行うことができますメモリ内のページングが
- WCFは、すべての製品を選択して、どこかにそのキャッシュに保存し、その後、渡すことができます要求されたページ番号に従って、コントローラのうちの一部のみに送信する。
- WCFは、要求されたページ番号に従って、データベースから製品の一部のみを選択できます。
- WCFはIQueryableをコントローラに返すことができ、コントローラは必要なときにいつでも必要なものを選択します。
私が理解する限り(真実でない場合は私を修正します)、最初のオプションは役に立たないので、他のものの中から選択する必要があります。
2番目のオプションは、サーバーのメモリを無駄にします。
3番目のオプションはOKですが、WCF側でページングを実装するのはちょっと醜いようです。
そして、4番目のオプションは混乱を招きます。私は実際に何らかのクエリをクライアントに渡し、WCFサービスを通じて自分でデータベースにクエリを実行します。私はこれを正しく実装する方法を理解できません。
これを実装する正しい方法を選択するのを手伝ってもらえますか?
はい、私はLINQ-to-SQLを使用しています。だからあなたが提供しているものは、実際に私の3番目の選択肢です。さて、私はおそらくそれを行くでしょう。私は、WCFサービスがIQueryableを実際にdbから何も選択せずにクライアントに渡すときに、何らかの怠惰な実行について考えました。しかし、私はそれを行う方法を理解することができません –
今、現在の製品では、IQueryableを回すことはやりにくいかもしれないと思います。しかし、MIX'09ビデオを「RIA Services」でチェックしてみると、これはMSが現在Silverlight 3用に構築しているもので、おそらくすべての問題を解決します:-) –