Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

OData e a Arquitetura SOA (Soap vs Rest)

No description

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of OData e a Arquitetura SOA (Soap vs Rest)

OData / Arquitetura SOA
OData
PROBLEMA:
Atualmente existem uma infinidade de dados disponíveis eletronicamente, o problema é fazer a integração destes dados de forma fácil e padronizada.

SOLUÇÃO:
O Open Data Protocol (OData) veio para isto, ele nada mais é que um protocolo Web baseado em padrões amplamente difundidos tais como HTTP, Atom Publishing Protocol (AtomPub) e JavaScript Object Notation (JSON).
Arquitetura SOA
Exemplo SOAP
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1"
xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">
http://tempuri.org/IService/MyOperation
</Action>
<ActivityId CorrelationId="b898336e-d4e2-4eb7-a2c7-1e23f4630646"
xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
43ffa660-a0c6-4249-bb36-648b73a06213</ActivityId>
</s:Header>
<s:Body>
<MyOperationResponse xmlns="http://tempuri.org">
<MyOperationResult>
<MyValue>Some Value</MyValue>
</MyOperationResult>
</MyOperationResponse>
</s:Body>
</s:Envelope>
SOAP vs REST
REST
Representational State Transfer é um estilo arquitetural usado no projeto de aplicações da Web que contam com recursos nomeados (URL,URI,URN) e engenhosamente utiliza mais profundamente o protocolo HTTP, seu cabeçalho , seus métodos (GET, POST, PUT, DELETE, HEAD) e toda a infraestrutura web já bem estabelecida, reconhecida e utilizada por todos.
Exemplo REST
GET http://del.icio.us/api/peej/bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf

<?xml version="1.0"?>
<bookmark url="http://www.example.org/one" time="2005-10-21T19:07:30Z">
<description>
Example of a Delicious bookmark
</description>
<tags count="2">
<tag name="example" href="http://del.icio.us/api/peej/tags/example"/>
<tag name="test" href="http://del.icio.us/api/peej/tags/test"/>
</tags>
</bookmark>
SOAP
Simple Object Access Protocol é um protocolo para troca de informações estruturadas geralmente em uma plataforma descentralizada e distribuída. Ele se baseia em XML para seu formato de mensagem, ou seja, uma mensagem SOAP encapsula o conteúdo e pode ser trafegada via HTTP, JMS ou outro protocolo.
Asp.Net Web Api
Asp.Net Web Api é um framework que permite disponibilizar de forma rápida e simples Serviços HTTP utilizando a arquitetura REST
http://localhost:xxxx/api/products/
[{
"Id": 1,
"Name": "Tomato soup",
"Category": "Groceries",
"Price": 1.0
}, {
"Id": 2,
"Name": "Yo-yo",
"Category": "Toys",
"Price": 3.75
}, {
"Id": 3,
"Name": "Hammer",
"Category": "Hardware",
"Price": 16.99
}]
OData - O que é?
O OData é uma iniciativa de código aberto da Microsoft e outras empresas (OASIS) para criar um padrão de intercambio de dados entre aplicações on-line. Ele consiste em chamadas HTTP como GET, POST, UPDATE e DELETE, que são usadas para fazer uma consulta, inserção, atualização e exclusão de dados.
OData - Como funciona
OData - Query Options
$top=n: Returns only the first n entities in an entity set (or in Atom terms, the first n entries in a feed).

$skip=n: Skips the first n entities in an entity set. Using this option lets a client retrieve a series of distinct pages on subsequent requests.

$format: Determines whether data should be returned in JSON or the XML-based Atom/AtomPub format. (The default is Atom/AtomPub.)

$orderby=: Orders results, in ascending or descending order, by the value of one or more properties in those results.

$filter=: Returns only entities that match the specified expression.

$select=: Returns only the specified properties in an entity.
GET www.fabrikam.com/example/Orders?$filter=OrderID gt 3000 and OrderID lt 5000
OData - Consumo Demonstração
http://services.odata.org/V3/Northwind/Northwind.svc
LINQPad e Fiddler
OData - Criando Serviço
OData - Como funciona
WCF Data Service
Asp.Net Web Api OData
public class MyDataService :
System.Data.Services.DataService<MyDbContext>
public class EmployeeDataService : DataService<DataModel>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("Employees", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("Departments", EntitySetRights.AllRead);
}
}
public class AirlinesController : EntitySetController<Airline,int>
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Airline>("Airlines");
config.Routes.MapODataRoute("ODataRoute", "oairlinedata", modelBuilder.GetEdmModel());
OData - Criando Serviço
Melhor utilizado para expor dados de um banco por meio de um ORM (Entity Framework)
Melhor utilizado para expor funcionalidades em que aplicações de terceiros (ou arquitetura SOA) possam utilizar
Permitir o compartilhamento de regras e/ou acesso a dados entre as aplicações (camadas)
Cenário Atual
Todas as camadas separadas
Conclusão
OData permite realizar consultas e alterações (CRUD) de forma padronizada
('framework client' de consumo [metadata])
(GetProductById/GetProductByName/etc)
e de acordo com a necessidade do cliente (solicita o formato [json|xml])
Perguntas?!?
OData - Clients
Full transcript