03 agosto 2011

WCF RESTFull e facilidades do .Net

Num projeto que estou trabalhando estamos fazendo uma API com RESTFull, como não sou muito familiar com Java estou fazendo em .Net, e também aprendendo muita coisa.

Depois de apanhar um pouco do EntityFramework, para fazer uma lista de Objetos voltar como JSON (deslique o LazyLoad e a geração de proxys pelo EF que funciona ;) ) trupiquei numa coisa estranha.

O RESTFul WCF starter kit para o VS2010 tem uma facilidade automática chamada "help", você colocar http://[seu dominio]/[Seu Servico]/help e ele mostra as funções, URIs e exemplos de chamada. Muito útil, e poupa lá um ou dois documentos de Word de explicação rs.

Acontece que num dos métodos (que retorna uma lista tipada de objetos), o help não funcionava, a CPU e a memória iam a 100%, embora a chamada funcionasse Ok.

Depois de procurar no google, achei um cara com um problema igual, mas a implementação dele era um pouco diferente.

No meu EF estou usando Entidades POCO (um passo-a-passo legal aqui e aqui) para poder retornar as objetos sem as informações do EF embutidas, mas o template que gera as entidades não adiciona os atributos [DataContract] e [DataMember] ai foi altera o template para adicionar os atributos e importar o NameSpace "System.Runtime.Serialization".

E como mágica o help passou a funcionar. Eu esqueço que por de baixo do REST tem um serviço WCF, que precisa desses atributos para funcionar 100%, estranho é funcionar a chamada e o help não...

É... detalhes tão pequenos de nós dois... rs