APACHE OLINGO OASIS OData - Client and Server Stephan
Klevenz,ApacheCon 2014 Denver
AGENDA Part I OData Protocol Overview OASIS Part II Play with
OData Demos Basic Processor Annotation Processor JPA Processor
PART I
ODATA PROTOCOL OVERVIEW OData stands for Open Data Protocol
(http://www.odata.org) is based on REST principles supports JSON
and AtomPub data formats Implementations available in .NET, Java,
JavaScript, Ruby, PHP and ObjectiveC
Binary API doesnt work over the Internet (ODBC,ADO.NET, JDBC) !
Internet is HTTP! ! HTTP + SQL ! OData as the SQL for the Web RDBMS
Data Files Data XML Data NoSQL Data SQL API Parser API Query API
Applications OData http UNLOCK DATA SILOS
ODATA PROTOCOL REST HTTP GET PUT DELETE ATOM JSON Server
Producer Client Consumer .NET, Java, Ruby, PHP .NET, iOS,
JavaScript, Java, Ruby Excel,Tableau, LINQPad, PowerShel, OData
Explorer Azure, MySQL,AppEngine, SAP, IBM, Oracle
Project Astoria (Microsoft internal) ADO.NET Data Services
(Microsoft) WCF Data Services (Microsoft) OData 2.0 (Microsoft Open
Specication Promisse) OData 3.0 (public) OData 4.0 (OASIS TC)
STRUCTURE OF ODATA Architecture REST Protocol HTTP Data Formats
(Serialization) AtomPub JSON Metadata CSDL (Conceptual Data
Denition Language) Data as Resources GET, PUT DELETE Cache, Proxies
URI Addressable Data Flexible Syntax Entity Data Model (Chens 1976)
Entities == Resources Associations == Links CRUD Create, Read,
Update, Delete GET - Read Resource POST - Create Resource PUT -
Change Resource DELETE - Delete Resource
ENTITY DATA MODEL (EDM) Entity Container Entity Set Entity
Property Property Entity Property Property Entity Set Entity
Property Property Entity Property Navigation Property Entity
Property Navigation Property Association Association
METADATA DOCUMENT
OData Resource Is Described in an Entity Data Model by
Collection Entity Set A navigation property on an entity type that
identies a collection of entities Entry EntityType Note:
EntityTypes may be part of a type hierarchy Property of an entry
Primitive or Complex EntityType Property ComplexType ComplexType
Link A Navigation Property dened on an EntityType Service Operation
Function Import
SERVICE DOCUMENT (HATEOAS)
ODATA URI CONVENTIONS
http://services.odata.org/OData/OData.svc/Category(1)/Products?$top=2&$orderby=name
_______________________________________/ __________________/
_________________/ | | | service root URI resource path query
options Root http://services.odata.org/OData/OData.svc/ Resource
Path /Products Query Options $lter=price lt 3.5 Entity Set
/Products Single Entity /Products(3) Member Access
/Products(3)/Price LinkTraversal /Products(3)/Supplier
URI SYNTAX
ATOMPUB - EDM (HATEOAS) Atom / AtomPub Property Entry
Collection / Feed Service EDM Property Entity Entity Set Entity
Container
ATOM ENTRY
OASIS ODATA 4.0 Design Goals A "web of structured data" without
boundaries between isolated services Request exactly the desired
subset of data with as few roundtrips as possible Keep the query
language simple and intuitive Make all features of OData combine
well with each other Keep each single feature as simple as possible
Avoid having several ways to achieve the same goal
Model Evolution (Versioning) Model Reuse and Cross-Service
Navigation Deltas Asynchronous Requests and Callbacks Vocabularies
and Annotations Actions and Functions Improved Query Language
($search, CrossJoin, Lambda ) ImprovedType System Entity References
New JSON MISC (stream properties, geo data types, any()/all()
operators )
PART II
LETS PLAY WITH ODATA AND DO SOME DEMOS
QUESTIONS & ANSWERS
SOURCES AND CONTACT http://odata.org http://olingo.apache.org
https://www.oasis-open.org/ committees/odata/ Stephan Klevenz PMC
Member of Apache Olingo [email protected] @sklevenz