projeto n.º 2paginas.fe.up.pt/~ei08142/files/tdin2.pdf · assim que um pedido foi processado e o...
TRANSCRIPT
Projeto n.º 2
Tecnologias de Distribuição e Integração
André Dias (080509085)
Tiago Cunha (080509142)
29 de Maio de 2012
2
Índice
Introdução ..................................................................................................................................... 3
Arquitetura .................................................................................................................................... 4
Diagramas UML de dependências ............................................................................................. 5
Office ......................................................................................................................................... 6
ITDepartment ............................................................................................................................ 7
StockOffice ................................................................................................................................ 8
Decisões de Implementação ......................................................................................................... 9
Serviço ....................................................................................................................................... 9
Armazenamento da Informação ............................................................................................. 10
Tecnologias .............................................................................................................................. 10
Funcionalidades Implementadas ................................................................................................ 11
Office ....................................................................................................................................... 11
Stock Web App ........................................................................................................................ 11
ITDepartment .......................................................................................................................... 11
StockService ............................................................................................................................ 11
Demonstração ............................................................................................................................. 12
Office ....................................................................................................................................... 12
Stock Web App ........................................................................................................................ 14
ITDepartment .......................................................................................................................... 17
StockOffice .............................................................................................................................. 18
Conclusão .................................................................................................................................... 20
Referências .................................................................................................................................. 21
3
Introdução
Este relatório refere-se ao 2º trabalho prático da Unidade Curricular de Tecnologias de
Distribuição e Integração do Mestrado Integrado de Engenharia Informática e Computação.
Os requisitos expostos para este trabalho são a criação de um sistema SOA (Service-
Oriented Architecture) para simulação de um sistema financeiro para armazenamento e
tratamento de pedidos de venda/compra de acções.
Foram também definidos quais os módulos indispensáveis para o projecto,
nomeadamente:
1. O Servidor encarregue de suportar os serviços, acessiveis pelos outros módulo;
2. O cliente de balcão que acederia os serviços para armazenar e manipular os pedidos a
pedido dos clientes;
3. A página web para acesso pessoal de cada cliente, cujas funções seriam similares à do
cliente de balcão;
4. O cliente do serviço bolsista para processar os pedidos armazenados pelos outros
clientes.
Assim sendo, os objetivos deste projeto são a criação dos módulos especificados
anteriormente, juntamente com outras funcionalidades como envio de email para o cliente
assim que um pedido foi processado e o estabelecimento de uma fila de mensagens entre o
servidor e o cliente do serviço bolsista para garantir que todos os pedidos são processados
pela ordem em que o servidor os transmite, independentemente de o cliente bolsista estar
ligado ou não.
4
Arquitetura
A arquitetura do projecto foi, como já explicitado, definida pelo enunciado do trabalho
e os seus componentes podem ser vistos esquematicamente na figura abaixo.
Fazendo agora a tradução do modelo acima para o nosso projeto, vericamos que:
1. O cliente de balcão é o equivalente ao Office;
2. O departamento de Informática denomina-se ITDepartment;
3. A Web App refere-se à OrderWebApp;
4. O cliente de serviços bolsista equivale ao StockService.
5
Diagramas UML de dependências
6
Office
7
ITDepartment
8
StockOffice
9
Decisões de Implementação
Serviço Foi criado um serviço denominado Stock Service com os seguintes métodos e estrutura
de dados por forma a respeitar a informação necessária para o correto funcionamento do
sistema.
Este serviço é criado no ITDepartment e acessivel por todos os clientes por métodos
especificos dependendo do cliente.
[ServiceContract] public interface IOrder {
[OperationContract] OrderData getOrder(int value); [OperationContract] void newOrder(OrderData od); [OperationContract] Boolean editOrder(OrderData od, string email, string name, string pass); [OperationContract] string getOrderClient(string name); [OperationContract] string getOrderWaiting(); } [DataContract] public class OrderData { enum shareType { Ordinary, Preference, CumulativePreference, Redeemable } enum stateType { Waiting, Ready } [DataMember] public int id; [DataMember] public string clientName; [DataMember] public double value; [DataMember] public string clientEmail; [DataMember] public Boolean buy; // buy = true; sell = false [DataMember] public int quantity; [DataMember] public int type; [DataMember] public DateTime date; [DataMember] public double rate; [DataMember] public int state; }
10
Armazenamento da Informação O armazenamento de informação é realizado num ficheiro sob a forma de XML (Extensible Markup Language), que representa um conjunto de ordens, cada uma delas definidas por todos os campos registados na OrderData do serviço OrderService. Apresenta-se de seguida um exemplo deste ficheiro de dados, cujo nome é “orders.xml”. <Orders>
<Order> <ID>0</ID>
<ClientName>Tiago Cunha</ClientName> <ClientEmail>[email protected]</ClientEmail> <Value>58</Value> <Buy_Sell>sell</Buy_Sell> <Quantity>10</Quantity> <Type>1</Type> <Date>27-05-2012 15:19:09</Date> <Rate>12</Rate> <State>0</State> </Order> <Order> <ID>1</ID> <ClientName>Tiago Cunha</ClientName> <ClientEmail>[email protected]</ClientEmail> <Value>2</Value> <Buy_Sell>buy</Buy_Sell> <Quantity>5</Quantity> <Type>3</Type> <Date>27-05-2012 15:19:09</Date> <Rate>59</Rate> <State>0</State> </Order> </Orders>
Tecnologias
Todo o projeto foi desenvolvido recorrendo a serviços WCF (Windows Communication
Foundation) e a página web usou a tecnologia ASP.NET.
11
Funcionalidades Implementadas
Office 1. Ligação ao OrderService com acesso aos métodos getOrder, NewOrder, editOrder,
getOrderClient, getOrderWaiting;
2. Interface gráfica.
Stock Web App 1. Ligação ao OrderService com acesso aos métodos getOrder, NewOrder, editOrder,
getOrderClient, getOrderWaiting;
2. Página Web em ASP.NET.
ITDepartment 1. Criação e manutenção de OrderService;
2. Envio de correio eletrónico quando ordem é processada;
3. Utilização de uma message queue para envio de ordens para o StockService quando
este está desligado.
StockService 1. Ligação ao OrderService com acesso ao método editOrder;
2. Alteração do estado de uma ordem de Waiting para Ready;
3. Utilização de uma message queue para receção de ordens.
12
Demonstração
Office
13
14
Stock Web App
15
16
17
ITDepartment
18
StockOffice
19
20
Conclusão
Após a realização deste projeto, podemos dizer que conseguimos implementar um
sistema de serviços funcional em .NET, tirando partido das suas principais funcionalidades e
aprendendo qual a melhor forma de os utilizar. Para além disso, a utilização de filas de
mensagens que se revelam bastante úteis para envio de informação de forma assíncrona.
Avaliando, agora, o projeto desenvolvido, concluímos que todas as funcionalidades
requeridas no enunciado foram implementadas, bem como a inclusão de medidas extra que
considerámos necessárias e que enriqueceram o projeto, definidas anteriormente neste
relatório.
21
Referências
Tecnologias de Distribuição e Integração 2010/11: http://paginas.fe.up.pt/~apm/TDIN/
C# Reference: http://msdn.microsoft.com/en-us/library/618ayhy6.aspx
ASP.NET Reference: http://msdn.microsoft.com/en-us/library/9k6k3k4a.aspx
Microsoft ASP.net: http://www.asp.net/
Sending e-mail using SmtpClient and Gmail:
http://blogs.msdn.com/b/mariya/archive/2006/06/15/633007.aspx
Sending and receiving message in MSMQ using C#:
http://www.dotnetfunda.com/articles/article1119-sending-and-receiving-message-in-
msmq-using-csharp.aspx
XML Documentation Comments (C# Programming Guide):
http://msdn.microsoft.com/en-us/library/b2s063f7.aspx
DateTime Structure: http://msdn.microsoft.com/en-us/library/system.datetime.aspx