Apache Olingo - ApacheCon Denver 2014

  • Published on
    11-Aug-2014

  • View
    672

  • Download
    14

DESCRIPTION

 

Transcript

<ul><li> APACHE OLINGO OASIS OData - Client and Server Stephan Klevenz,ApacheCon 2014 Denver </li> <li> AGENDA Part I OData Protocol Overview OASIS Part II Play with OData Demos Basic Processor Annotation Processor JPA Processor </li> <li> PART I </li> <li> 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 </li> <li> 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 </li> <li> 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 </li> <li> 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) </li> <li> 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 </li> <li> 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 </li> <li> METADATA DOCUMENT </li> <li> 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 </li> <li> SERVICE DOCUMENT (HATEOAS) </li> <li> ODATA URI CONVENTIONS http://services.odata.org/OData/OData.svc/Category(1)/Products?$top=2&amp;$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 </li> <li> URI SYNTAX </li> <li> ATOMPUB - EDM (HATEOAS) Atom / AtomPub Property Entry Collection / Feed Service EDM Property Entity Entity Set Entity Container </li> <li> ATOM ENTRY </li> <li> 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 </li> <li> 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 ) </li> <li> PART II </li> <li> LETS PLAY WITH ODATA AND DO SOME DEMOS </li> <li> QUESTIONS &amp; ANSWERS </li> <li> SOURCES AND CONTACT http://odata.org http://olingo.apache.org https://www.oasis-open.org/ committees/odata/ Stephan Klevenz PMC Member of Apache Olingo sklevenz@apache.org @sklevenz </li> </ul>