BT

Início Notícias Implementar IQueryable vale a pena para APIs?

Implementar IQueryable vale a pena para APIs?

Favoritos

Mark Seemann sugere em seu artigo "IQueryable é alto acoplamento" (em inglês) que a criar uma API de tal forma que ela exponha uma interface IQueryable é uma má ideia por várias razões. Mas por quê? Segundo, Seeman:

A interface IQueryable <T> é um dos melhores exemplos de uma Interface de cabeçalho (header interface) que o .NET tem para oferecer. É quase impossível implementá-la por completo.

Isso significa simplesmente que nunca se terá certeza que o método irá retornar uma implementação completa da interface IQueryable.

Implementar a interface IQueryable <T> é uma grande empreitada... basta dar uma olhada na série oficial de posts construindo um provedor IQueryable para entender a dificuldade. E mesmo assim, a interface é tão flexível e expressiva que, com uma única exceção, é possível escrever uma consulta que um provedor não conseguiria traduzir... A única implementação completa da interface IQueryable <T> é a implementação em memória.

De acordo com Seemann, o que torna a abstração fraca é que maioria das vezes a interface IQueryable será implementada por um provedor de armazenamento (store provider) em seu código.

Embora o argumento faça sentido, podemos contra-argumentar: o quanto essa abstração é fraca? Ela ajuda a escrever menos código ou código mais simples? Podemos conviver com as limitações?

Por exemplo, o ASP.NET Web API torna muito mais fácil usar a WebAPI, mesmo para dados filtrados usando parâmetros de requisição web, se o tipo de retorno for um IQueryable. De maneira parecida, há serviços WCF RIA em que os métodos do DomainContext retornando IQueryable poderão ser utilizados pelo cliente para buscar apenas os dados necessários, usando descritores de filtro direto no XAML ou do seu cliente JQuery.

Será, então, que os benefícios da flexibilidade superam a abstração incompleta?

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

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

Comentários da comunidade

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

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

BT

Seu cadastro no InfoQ está atualizado? Poderia rever suas informações?

Nota: se você alterar seu email, receberá uma mensagem de confirmação

Nome da empresa:
Cargo/papel na empresa:
Tamanho da empresa:
País:
Estado:
Você vai receber um email para validação do novo endereço. Esta janela pop-up fechará em instantes.