7. MÓDULOS DO SISTEMA
7.3. Módulo aplicação Web Service
O módulo da aplicação Web Service tem como responsabilidade disponibilizar informação das redes de sensores através de pedidos HTTP, por GET e POST.
7.3.1. Estrutura da Aplicação
A arquitetura definida para desenvolvimento do módulo da aplicação Web Service foi a arquitetura Windows ASP.NET Web API. Na figura 30, descreve-se a estrutura definida para este módulo.
API
WEB
Model
HTTP Response HTTP RequestBase de Dados
JSONFigura 30 - Diagrama representativo da estrutura do Módulo Web Service
Camada WEB API – A camada Web API, representa o controlador, que possibilita o acesso à informação através de pedidos realizados por HTTP, GET e POST. Neste controlador estão implementados todos os métodos públicos que permitem, a
Arquitetura Módulo Web Service WEB API
Esta camada representa o acesso aos dados; usou-se o Entity
Framework, para fazer
mapeamento da camada de dados para objetos onde temos os métodos para a consulta e persistência de dados através desta
framework.
Esta camada representa a camada física dos dados. Para armazenamento do modelo físico da base de dados tem-se o servidor de base de dados
Microsoft SQL server.
Esta camada representa o controlador Web API, que possibilita o acesso à informação através de pedidos realizados por
HTTP, GET e POST. O formato das mensagens nos pedidos e
Módulos do Sistema CAPÍTULO 7
Mestrado em Comércio Eletrónico 91
disponibilização de informação das redes de sensores ao utilizador. A informação só é disponibilizada usando uma chave válida fornecida pelo administrador da
eneidaws, caso contrário o Web Service não disponibiliza informação. O formato das
mensagens trocadas nos pedidos e respostas encontra-se em JSON.
Camada Modelo – Para desenvolver esta camada de acesso aos dados usou-se o
Entity Framework para consulta, mapeamento e persistência de dados para objetos
através desta;
Camada de Dados – Esta camada representa a camada física onde a base de dados está configurada; neste caso está configurada no servidor de base de dados Microsoft
SQL Server.
7.3.2. Detalhes de Implementação
Nesta secção apresenta-se de uma forma genérica a implementação da aplicação Web
Service. Na figura 31, apresenta-se a solução da aplicação Web Service onde se pode ver a
estrutura física da aplicação. Esta aplicação foi desenvolvida em tecnologia ASP.NET Web API, assente na Framework .NET 4.5.
Módulos do Sistema CAPÍTULO 7
92
Como se pode ver na figura 31, o desenvolvimento da aplicação Web Service foi integrado na estrutura da solução MVC da aplicação SCADA Web. Esta situação verifica-se porque a estrutura de desenvolvimento e funcionamento da tecnologia ASP.NET Web API é semelhante à tecnologia ASP.NET MVC. Em ambas as tecnologias existe o modelo e controlador. No
ASP.NET MVC o retorno da informação é feito para uma vista/página Web e o retorno do
controlador no ASP.NET Web API é feito no formato JSON; nesta aplicação poderia ser também usado o formato XML.
Para desenvolver a aplicação baseada em Web Service foi necessário configurar a classe
WebApiConfig.cs existente na pasta App_Start, vista na figura 31, e implementar o controlador
para este serviço Online.
A classe WebApiConfig.cs tem como responsabilidade a configuração das rotas nos pedidos feitos por HTTP, como se pode ver num exemplo do excerto de código desta classe. Caso essa rota não exista nesta classe, é enviada uma resposta de erro por parte do Web Service.
Na secção 7.3.3, exemplifica-se como é realizado um pedido ao Web Service, tendo em conta as rotas configuradas no WebApiConfig.cs.
A classe WebServiceController.cs representa o controlador criado para a aplicação Web
Service. Neste controlador estão implementados todos os métodos GET e POST, para
disponibilização da informação relativa à rede de sensores. Este controlador obtém toda a informação a partir do digrama de classes do modelo através da consulta dos dados.
Na figura 32 apresentam-se as classes do modelo que são usadas pela aplicação Web Service para fazer consultas e persistência de dados. Os objetos usados por esta aplicação são as classes
Localização, Rede, Sensor, Grupo, ModeloSensor e Entrada.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute( name: "GetAllLocalizacoes",
routeTemplate: "api/{controller}/GetNumLastMensagens/{key}/{IdSensor}/{id}", defaults: new { id = RouteParameter.Optional }
); }
}
Exemplo de alguns pedidos existentes no controlador WebServiceController.cs
IQueryable<object> GetAllLocalizacoes(int key, int id){…}
IQueryable<object> GetAllRedes(int key, int id)
List<Log_MensagensServidor> GetAllMensagens(int key, int sensor)
List<Log_MensagensAlarmeServidor> GetAllMensagensAlarme(int key, int sensor)
Módulos do Sistema CAPÍTULO 7
Mestrado em Comércio Eletrónico 93
Através do relacionamento entre estes objetos é obtida informação das redes de sensores através das classes Log_MensagemServidor, Log_MensagemErroServidor e
Log_MensagemAlarmeServidor, que contêm os dados recolhidos na base de dados.
Figura 32 - Diagrama de Classes do modelo mapeado pelo Entity Framework
7.3.3. Pedido HTTP Aplicação Web Service
Nesta secção exemplifica-se como pode ser realizado um pedido GET à aplicação Web
Service, com retorno da informação no formato JSON. No Anexo D, pode ser consultado o
manual de utilizador desta aplicação, com todos os pedidos que podem ser realizados ao Web
Service.
Exemplo pedido GET
Aqui exemplifica-se como pode ser construído um pedido HTTP GET ao Web Service que retorne todos os últimos dados adquiridos para um sensor com um determinado id.
Pedido público [ http://domino.net/api/webservice/ ] [ Nome Método ] [ Chave ] [ Id Sensor ] http://domino.net/api/webservice/GetNumLastMensagens/CHAVE/IDSENSOR/
Módulos do Sistema CAPÍTULO 7
94