BT

IQueryableは悪いAPIか

| 作者: Roopesh Shenoy フォローする 0 人のフォロワー , 翻訳者 徳武 聡 フォローする 1 人のフォロワー 投稿日 2012年4月5日. 推定読書時間: 1 分 |

原文(投稿日:2012/03/30)へのリンク

Mark Seeman氏が “IQueryable is Tight Coupling”と題した記事でIQueryable<T>を継承するインターフェイスを持ったAPIを設計するのは、いくつかの理由で良くないと指摘している。

Why?

..IQueryable<T>は.NETが提供する代表的なヘッダーインタフェースで、完全に実装するのは不可能です。

したがって、メソッドが確実にIQueryableインターフェイスを完全に実装したオブジェクトを返すとは想定できない。

このインターフェイスは柔軟で表現が複雑でひとつの例外しか持たないため、インターフェイスの提供側が解釈できないクエリを書くことができてしまいます。

IQueryable<T>を完全に実装しているのは、インメモリの実装だけです。

Mark氏によれば、このインターフェイスは漏れが起きやすい。というのは多くの場合、IQueryableが実装されるのは、コード内のデータストアのプロバイダだからだ。

この主張は完全に正しいように思える。考慮すべき点は漏れが起きやすいインターフェイスにはどんな問題があるのか、ということだ。漏れが起きやすいインターフェイスでも、最低限、耐えられる程度にはコードをシンプルにしてくれるのではないか。

例えば、ASP.NET Web APIはIQueryableを返す場合、リクエストのパラメータを使って、取得するデータのフィルタリングができる。同様に、WCF RIA ServicesのDomainContextメソッドはIQueryableを返すので、クライアントはXAMLのフィルタディスクリプタを使って、または、JQueryクライアントから要求することで必要なデータのみ取り出すことができる。

読者はどのようにお考えだろうか。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT