Download JavaScript Micro Services

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
JavaScript Micro Services
Simon Kaegi
27 March 2012
What are Micro Services?
• OSGi minus the modularity
… about software development in a browser
Orion and OSGi Modularity
• e4 – OSGi style modularity in JavaScript
{ "Bundle-SymbolicName":"sample.jsbundle",
"Bundle-Version":"1.0",
"Bundle-ScriptPath":"script.js",
"Import-Package":"a.resource;version=[1.0.0,2.0.0)",
"Export-Package":"sample.resource;version=1.0.0",
"Require-Bundle:"some.other.bundle“
}
• AMD – RequireJS
define(["dojo", "orion/serviceregistry", "dojo/DeferredList"],
function(dojo, mServiceregistry){… return exports});
Orion Plugins
• Orion applications are NOT made up of plugins
• Orion pages are designed to be 'extended' with plugins
• Orion plugins are 'separate' HTML pages hosted in non-visible IFrames
• Can be cross origin and communicate using HTML5 postMessage which is
ASYNC
• Plugins are isolated and secure against direct modification of the hosting
page
Java Web Application / OSGi
Web Application
Front-end
Web Client
Proxy Server / Portal
Web Application
Front-end
Web Client
Web Application
Front-end
Proxied Service
Web Application
Front-end
Web Server
7
Web Application
WebPlugin
Application
Front-end
Web
Application
Front-end
Plugin
Front-end
Plugin
Web Application
Front-end
Web Server
Web Application
Front-end
Proxied Service
Orion way / Client-side Extension
Web Application
Front-end
Web Client
Web Application
Front-end
Plugin
Web Application
Front-end
Plugin
Web Application
Front-end
Web Server
Web Application
Front-end
Web Server
Web Application
Front-end
Web Server
Eclipse IDE Extensibility
Orion Extensibility
registerService(INTERFACE_NAME, IMPLEMENTATION, PROPERTIES)
In-page
Plugin
Comparing OSGi and Orion Service APIs
• Orion provides a nearly complete implementation of the Service API from
OSGi BundleContext
• ServiceReference, ServiceRegistration, …
• service listeners, event types
• Use Strings instead of java.lang.class when referencing Service interfaces
• All Service calls return a “promise” – needed to abstract asynchronous
service implementations
• No ServiceTracker currently
• originally built into getService but this was a mistake
What’s next
• Declarative Services
• wire.js – extends Asynchronous Module Definition
define([“wire!aService", “wire!anotherService],
function(aService, anotherService){…});
• Configuration Admin and Metatype Services
• Permission Policy and Admin
http://eclipse.org/orion/
14
Related documents