• Nenhum resultado encontrado

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 Request

Base de Dados

JSON

Figura 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