segunda-feira, 9 de dezembro de 2013

Invocar serviços WCF via JSON endpoint numa página HTML - 3

No artigo anterior, vimos como fazer um pedido POST para invocar serviços de domínio WCF para operações de alteração, usando o endpoint JSON. Fizemos um exemplo com as páginas HTML e os serviços WCF no mesmo servidor Web (na verdade estavam mesmo no mesmo projeto do Visual Studio).

Vamos aqui tratar de conseguir fazer a mesma invocação, mas tendo a aplicação front-end (HTML) num servidor diferente do servidor dos serviços WCF. Isto implica uma invocação entre servidores (cross-server ou cross-origin).

Quando colocamos as páginas Web (callWCF.html  e  callWCF_Insert.html, nos artigos anteriores) num servidor diferente dos serviços WCF, passamos a obter os seguintes erros:

1 - Ao correr callWCF.html, que invoca o serviço ...svc/JSON/GetCars:




domingo, 8 de dezembro de 2013

Invocar serviços WCF via JSON endpoint numa página HTML - 2

Vimos, no artigo anterior, como fazer um pedido GET para invocar um serviço de domínio WCF para consulta de dados, usando o endpoint JSON.
Neste artigo, vamos ver como podemos invocar os serviços de domínio WCF para operações de alteração ou CRUD, usando o endpoint JSON. Veremos, nomeadamente, como podemos inserir um registo numa tabela, submetendo ao Domain Service WCF um conjunto de dados a alterar no domínio.

Para este exemplo foi particularmente útil a primeira referência da lista apresentada no final.

Este exemplo corre com as páginas HTML no mesmo servidor e porta que os serviços WCF. No próximo artigo veremos como fazer invocações cross domain, as quais trazem as suas próprias dores de cabeça.

A criação dos serviços WCF (Windows Communication Foundation) utilizados neste exemplo foi abordada nos artigos:

Neste exemplo vamos submeter ao Domain Service WCF, através de um pedido HTTP POST, um conjunto de alterações (change set) a efetuar no domínio de dados.
Tal como no exemplo anterior, iremos utilizar o JQuery para simplificar o nosso exemplo, e assume-se que o leitor já tem algum conhecimento de HTML e Javascript.


terça-feira, 3 de dezembro de 2013

Invocar serviços WCF via JSON endpoint numa página HTML - 1

Este artigo ilustra como invocar, numa página HTML, um serviço WCF (Windows Communication Foundation) disponibilizado através de um endpoint JSON, tal como criado anteriormente nos artigos:



Neste exemplo vamos "consumir" (invocar), através de um pedido HTTP GET, um serviço sem parâmetros de entrada e que devolve uma lista de instâncias no formato JSON. Iremos utilizar o JQuery para simplificar o nosso exemplo, e assume-se que o leitor já tem algum conhecimento de HTML e Javascript.

O JQuery é uma biblioteca de JavaScript, multi-browser, e que pretende facilitar o desenvolvimento de scripts do lado do cliente, em páginas HTML.
Para mais informação e introdução ao JQuery, consultar, por exemplo:


Vamos então escrever uma página HTML muito simples:


segunda-feira, 2 de dezembro de 2013

Disponibilizar Serviços WCF em JSON

Vimos, no artigo anterior, como expor os dados da nossa base de dados (BD) como coleções de instâncias através do protocolo OData, recorrendo a um projeto WCF Service Application e ao Entity Framework.

O OData baseia-se em protocolos standard para oferecer serviços de dados interoperáveis com aplicações que não usam a framework .Net. Como é baseado em URIs standard para aceder aos dados, podemos aceder e alterar dados usando a semantica REST (Representational State Transfer), como sejam os verbos GET, PUT, POST e DELETE. Isto possibilita a utilização destes serviços a partir de qualquer cliente que possa aceder a dados transmitidos sobre protocolo HTTP standard.

Um serviço OData pode representar dados no formato Atom, JSON (JavaScript Object Notation) e XML, sendo que Atom é o formato por omissão.
O formato dos dados é especificado no header do pedido HTTP.

É bastante fácil acrescentar serviços customizados a serviços de dados WCF, através de Service Operations.
Service Operations são métodos disponibilizados num servidor e que podem ser acedidos por URIs da mesma forma que os recursos de dados vistos anteriormente.
Service Operations podem também usar expressões de query para filtrar, ordenar e paginar os dados resultado da invocação de uma operação.

Vamos, neste artigo, ver como podemos disponibilizar Service Operations, em formato OData, SOAP e JSON.