The document discusses service design principles for coarse-grained distributed services. It recommends using data transfer objects (DTOs) to represent data in a self-contained way using identifiers instead of object references. DTOs should be serializable and protocol-independent. The document also recommends keeping business logic separate from data objects and avoiding language-specific data formats. Services should have stateless, coarse-grained interfaces to enable scalability and loose coupling between providers and consumers.
This slide deck is the part of the talk, generally centered around the topics and details of the Riak Architecture & related material. It currently doesn't have the Azure sample commands or other elements around that, as it is the live part of the presentation. I'll likely add these parts in the future though.
Presentation given by Limecraft at the 2012 EDM Metadata Hands-on Workshop organised by the EBU.
Summary: The Material Exchange Format (MXF) has by now become the de facto standard for file-based media exchanges. Even though MXF is incredibly rich in features and flexibility, handling MXF files, and in particular, the metadata that describes the essence within them is still a complex matter as there are many ways in which metadata can be associated with MXF (e.g., as side-car information, as dark metadata or as properly encoded and standardized metadata sets, …). In this presentation we will discuss and demonstrate a recent initiative, supported by EBU, that aims to make the association and processing of MXF metadata easier and more accessible for application developers. In particular, an open source MXF SDK is demonstrated that is able to serialize and deserialize EBUCore metadata natively in MXF audiovisual containers.
Tools for mxf-embedded bucore metadata, Dieter Van Rijsselbergen, Jean-Pierre...FIAT/IFTA
WHICH FILE CONTAINER?
• Material Exchange Format ( )
• Standardized in 2004
• By now the de facto standard of "
professional audio-visual file formats
• Many specifications and many features
• Structural Metadata…
Machine learning in the enterprise is an iterative process. Data scientists will tweak or replace their learning algorithm in a small data sample until they find an approach that works for the business problem and then apply the Analytics to the full data set. Apache SystemML is a new system that accelerates this kind of exploratory algorithm development for large-scale machine learning problems. SystemML provides a high-level language to quickly implement and run machine learning algorithms on Spark. SystemML’s cost-based optimizer takes care of low-level decisions about how to use Spark’s parallelism, allowing users to focus on the algorithm and the real-world problem that the algorithm is trying to solve. This talk will introduce you to SystemML and get you started building declarative analytics with SystemML using a simple Zeppelin notebook and running on Apache Spark environment.
This slide deck is the part of the talk, generally centered around the topics and details of the Riak Architecture & related material. It currently doesn't have the Azure sample commands or other elements around that, as it is the live part of the presentation. I'll likely add these parts in the future though.
Presentation given by Limecraft at the 2012 EDM Metadata Hands-on Workshop organised by the EBU.
Summary: The Material Exchange Format (MXF) has by now become the de facto standard for file-based media exchanges. Even though MXF is incredibly rich in features and flexibility, handling MXF files, and in particular, the metadata that describes the essence within them is still a complex matter as there are many ways in which metadata can be associated with MXF (e.g., as side-car information, as dark metadata or as properly encoded and standardized metadata sets, …). In this presentation we will discuss and demonstrate a recent initiative, supported by EBU, that aims to make the association and processing of MXF metadata easier and more accessible for application developers. In particular, an open source MXF SDK is demonstrated that is able to serialize and deserialize EBUCore metadata natively in MXF audiovisual containers.
Tools for mxf-embedded bucore metadata, Dieter Van Rijsselbergen, Jean-Pierre...FIAT/IFTA
WHICH FILE CONTAINER?
• Material Exchange Format ( )
• Standardized in 2004
• By now the de facto standard of "
professional audio-visual file formats
• Many specifications and many features
• Structural Metadata…
Machine learning in the enterprise is an iterative process. Data scientists will tweak or replace their learning algorithm in a small data sample until they find an approach that works for the business problem and then apply the Analytics to the full data set. Apache SystemML is a new system that accelerates this kind of exploratory algorithm development for large-scale machine learning problems. SystemML provides a high-level language to quickly implement and run machine learning algorithms on Spark. SystemML’s cost-based optimizer takes care of low-level decisions about how to use Spark’s parallelism, allowing users to focus on the algorithm and the real-world problem that the algorithm is trying to solve. This talk will introduce you to SystemML and get you started building declarative analytics with SystemML using a simple Zeppelin notebook and running on Apache Spark environment.
Navigating the Transition from relational to NoSQL - CloudCon Expo 2012Dipti Borkar
For more deep NoSQL content from Couchbase, check out http://www.couchbase.com/webinars
NoSQL databases have emerged as a better match than relational systems for modern interactive applications, offering cost-effective data management at “Big Data” scale. But there are significant differences between structured and schema-less database technology. What should architects and technical managers know as they explore NoSQL solutions for their teams?
In this workshop you will learn:
- How to evaluate NoSQL (both technical advantages and limitations) as a potential data management approach
- Critical differences between NoSQL and RDBMS for designing, building and running production applications
- Ideal use cases for NoSQL technology and sample reference architectures
Notes on a High-Performance JSON ProtocolDaniel Austin
This is my presentation from JSConf 2011. I am proposing a new Web protocol to improve performance across the Internet. It's based on a dual-band protocol layered over TCP/IP and UDP and is backward compatible with existing HTTP-based systems.
Paolo Ciccarese and Tommaso Teofili
These slides present
- current facilities and future plans for the Domeo Annotation Toolkit relating specifically to textmining use cases.
- and details of the integration of the Domeo Annotation Toolkit with Apache UIMA through Apache Clerezza.
The OMG has recently standardized a UML Profile for DDS. This brief tutorial, which was presented at the OMG RTWS 2009, provides you with an introduction to the standard.
Review of basic XML
Review of XML in Domino
Web Services defined
XML and SOAP
Finding Web Services "Out There"
Building Web Services "In Here"
Domino as WS client
Domino as WS server
Security?
The Road Ahead
Drupal Day 2011 - Drupal and the rise of the documentsDrupalDay
Talk di Claudio Beatrice | Drupal Day Roma 2011
Sono passati quasi tre anni da quando il termine 'NoSQL' è stato coniato, contribuendo a formare nell'immaginario di sviluppatori e appassionati un gruppo definito di tecnologie che, allontanandosi dal vecchio e consolidato modello relazione, hanno dato il via all'esplorazione di nuove soluzioni e permesso la formulazione di nuove risposte volte a soddisfare le esigenze del mercato di oggi, che come tutti sappiamo è molto legato al web ed alla scalabilità. Assieme a CouchDB, Redis e molti altri ancora, MongoDB fa anch'esso parte di questa ormai nutrita schiera, trattandosi di un "database orientato al documento". Nella sessione verranno dunque presentati i suoi principali punti di forza e debolezza, assieme alle metodologie da utilizzare per integrarlo con Drupal.
The DDS specification provides fine-grained control over the real-time behaviour, dependability, and performance of DDS applications by means of a rich set of QoS Policies. The challenge for many DDS users is that the specifications explains very clearly how each QoS allows to control very specific aspects of data distribution yet it provides no hints on how different QoS should be composed to control complex properties such as the consistency model, or to impose end-to-end real-time scheduling decision. This half-day tutorial will fill this gap by providing attendees with (1) an explanation of how the various QoS compose, and (2) providing attendees with a series of QoS-composition Patters that can be used to control macro-properties of an application, such as the consistency model.
LoopBack is an open source API framework built on top of Express optimized for mobile and web. Connect to multiple data sources, write business logic in Node.js, glue on top of your existing services and data, connect using JS, iOS & Android SDKs.
Building a Node.js API backend with LoopBack in 5 MinutesRaymond Feng
LoopBack is an open source API framework built on top of Express optimized for mobile and web. Connect to multiple data sources, write business logic in Node.js, glue on top of your existing services and data, connect using JS, iOS & Android SDKs.
More Related Content
Similar to Building Flexible APIs for Web 2.x/Cloud Applications (JavaOne 2011 Session 25208)
Navigating the Transition from relational to NoSQL - CloudCon Expo 2012Dipti Borkar
For more deep NoSQL content from Couchbase, check out http://www.couchbase.com/webinars
NoSQL databases have emerged as a better match than relational systems for modern interactive applications, offering cost-effective data management at “Big Data” scale. But there are significant differences between structured and schema-less database technology. What should architects and technical managers know as they explore NoSQL solutions for their teams?
In this workshop you will learn:
- How to evaluate NoSQL (both technical advantages and limitations) as a potential data management approach
- Critical differences between NoSQL and RDBMS for designing, building and running production applications
- Ideal use cases for NoSQL technology and sample reference architectures
Notes on a High-Performance JSON ProtocolDaniel Austin
This is my presentation from JSConf 2011. I am proposing a new Web protocol to improve performance across the Internet. It's based on a dual-band protocol layered over TCP/IP and UDP and is backward compatible with existing HTTP-based systems.
Paolo Ciccarese and Tommaso Teofili
These slides present
- current facilities and future plans for the Domeo Annotation Toolkit relating specifically to textmining use cases.
- and details of the integration of the Domeo Annotation Toolkit with Apache UIMA through Apache Clerezza.
The OMG has recently standardized a UML Profile for DDS. This brief tutorial, which was presented at the OMG RTWS 2009, provides you with an introduction to the standard.
Review of basic XML
Review of XML in Domino
Web Services defined
XML and SOAP
Finding Web Services "Out There"
Building Web Services "In Here"
Domino as WS client
Domino as WS server
Security?
The Road Ahead
Drupal Day 2011 - Drupal and the rise of the documentsDrupalDay
Talk di Claudio Beatrice | Drupal Day Roma 2011
Sono passati quasi tre anni da quando il termine 'NoSQL' è stato coniato, contribuendo a formare nell'immaginario di sviluppatori e appassionati un gruppo definito di tecnologie che, allontanandosi dal vecchio e consolidato modello relazione, hanno dato il via all'esplorazione di nuove soluzioni e permesso la formulazione di nuove risposte volte a soddisfare le esigenze del mercato di oggi, che come tutti sappiamo è molto legato al web ed alla scalabilità. Assieme a CouchDB, Redis e molti altri ancora, MongoDB fa anch'esso parte di questa ormai nutrita schiera, trattandosi di un "database orientato al documento". Nella sessione verranno dunque presentati i suoi principali punti di forza e debolezza, assieme alle metodologie da utilizzare per integrarlo con Drupal.
The DDS specification provides fine-grained control over the real-time behaviour, dependability, and performance of DDS applications by means of a rich set of QoS Policies. The challenge for many DDS users is that the specifications explains very clearly how each QoS allows to control very specific aspects of data distribution yet it provides no hints on how different QoS should be composed to control complex properties such as the consistency model, or to impose end-to-end real-time scheduling decision. This half-day tutorial will fill this gap by providing attendees with (1) an explanation of how the various QoS compose, and (2) providing attendees with a series of QoS-composition Patters that can be used to control macro-properties of an application, such as the consistency model.
LoopBack is an open source API framework built on top of Express optimized for mobile and web. Connect to multiple data sources, write business logic in Node.js, glue on top of your existing services and data, connect using JS, iOS & Android SDKs.
Building a Node.js API backend with LoopBack in 5 MinutesRaymond Feng
LoopBack is an open source API framework built on top of Express optimized for mobile and web. Connect to multiple data sources, write business logic in Node.js, glue on top of your existing services and data, connect using JS, iOS & Android SDKs.
OSGi Remote Services With SCA using Apache TuscanyRaymond Feng
OSGi goes beyond service invocations in a single JVM with the introduction of RFC 119 - Distributed OSGi. It will enable an OSGi bundle deployed in a JVM to invoke a service (either OSGi or non-OSGi) in another JVM or process, potentially on a remote computer accessed via a network protocol. Meanwhile, an OSGi service deployed in another JVM or a non-OSGi program such as Web Service client, potentially on a remote computer, to find and access a service running in the "local" OSGi JVM (i.e. an OSGi deployment can accept service invocations from remote OSGi bundle or external environments). The distributed computing functionality is added to the OSGi programming model without additional APIs or concepts as the distribution layer will be mostly transparent to OSGi developers by configuration.
SCA (Service Component Architecture) provides a technology-neutral approach to abstract business logic into components and assemble them into composite applications. It greatly simplifies the component communications using declarative bindings. QoS requirements can be uniformly declared as SCA intents which can be mapped and realized using different stacks. SCA is a great fit to be a distribution provider for distributed OSGi.
Apache Tuscany is an open source project that implements the SCA specifications. It provides integrations of implementation types (such as Java, Scripting, BPEL, Spring, OSGi and JEE) and binding types (such as Web Service, JMS, EJB, CORBA, RMI, JSONRPC, and ATOM) as the infrastructure for SCA programming. The latest version of Tuscany runtime is fully built on top of OSGi as the foundation. We recently added the OSGi RFC 119 support.
In this session, we will teach you how to develop a distributed OSGi application to leverage the SCA capabilities using Apache Tuscany. A calculator scenario will be used to demonstrate the distributed OSGi service invocations using RMI and Web Service protocols. We will also explain how to model an OSGi bundle as an SCA component and configure the SCA composite to provide communications between services. The readers will understand the basic ideas behind distributed OSGi in the concrete example and the power of Tuscany SCA for service composition.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
2. ¡ Raymond
Feng
§ Staff
Software
Engineer
–
Shutterfly,
Inc.
§ Member
–
Apache
Software
Foundation
§ Committer:
Apache
Tuscany,
Wink,
Nuvem
§ Co-‐author
–
Tuscany
SCA
In
Action
¡ Luciano
Resende
§ Staff
Software
Engineer
–
Shutterfly,
Inc.
§ Member
–
Apache
Software
Foundation
§ Committer:
Apache
Tuscany,
Wink,
Nuvem,
PhotoArk
3. ¡ Why
open
and
simple
APIs
¡ Sample
scenario
¡ Service
design
¡ Model
data
using
DSL
¡ Define
the
service
interface
¡ Bind
to
REST
and
JSONRPC
¡ Implement,
deploy
and
test
¡ Documentation
¡ Q&A
4.
5. ¡ A
great
way
to
build
the
ecosystem
¡ For
some
companies,
APIs
=
products
¡ Proliferation
of
mobile
clients
¡ Universal
access
for
internal
systems/web
or
mobile
fronts/third
party
apps
Top
APIs
for
Mashups
6. ¡ Address
Book
Service
§ Provide
“web
scale”
contact
management
functionality
§ Consumers
▪ Access
from
internal
applications
running
within
the
same
data
center
▪ Java,
.NET
▪ Access
from
browsers
▪ Access
from
mobile
applications
▪ Access
from
newly
acquired
company
▪ Access
from
3rd
party
applications
7.
8. Coarse-‐grained
Fine-‐grained
Remotable
interface
Local
interface
(Possible
to
deploy
service
providers
and
(Must
be
in
the
same
class
loading
space
consumers
to
two
different
JVMs
that
within
the
same
JVM)
communicate
using
a
protocol
stack)
Data
by
value
in
documents
Data
by
reference
in
Java
programming
(Share
the
same
info
set)
(share
the
same
object
instances)
Data
in
documents
(hierarchical
Data
in
OO
graphs
(for
example,
circular
structures
such
as
XML
or
JSON,
ids
or
references
are
allowed)
links
are
required
to
reference
data
outside
the
document)
Stateless
Various
scopes
(stateless
or
stateful)
9. ¡ Stateless
is
key
for
service
scalability
§ Services
are
designed
to
be
scalable
and
ready
for
deployment
into
high-‐availability
infrastructures.
To
accomplish
this
they
should
not
rely
on
long-‐lived
relationships
between
consumer
and
provider,
nor
should
an
operation
invocation
implicitly
rely
on
a
previous
invocation.
¡ Loose
Coupling
is
the
key
for
coarse-‐grained
services
§ Interface
and
implementation
§ Service
providers
and
consumers
§ Protocol
bindings
§ Data
representations
10. ¡ Data
(what
info
to
flow
between
services)
¡ Interface
(operations
defined
as
the
data
exchange
patterns)
¡ Component/Service/Reference
(abstraction
of
business
logic
unit:
functions
it
provides
and
functions
it
consumes)
¡ Implementation
(how
to
write
the
business
logic)
¡ Communication
(access
protocols)
¡ Composition
(wiring
services
together)
¡ QoS
(cross-‐cutting
concerns)
11.
12. • Use
Data
Transfer
Objects
(DTO)
for
remotable
coarse-‐grained
services
§ Be
marshal-‐able
over
the
network
using
platform/
language
independent
encodings
such
as
XML,
JSON,
or
other
binary
ones
§ Be
document/resource
(hierarchical
structure)
oriented
rather
than
object-‐oriented
§ Be
self-‐contained
(using
links
or
ids
to
reference
other
data
outside
the
document)
• Use
JAXB
as
canonical
DTO
representation
for
POJO.
§ If
possible,
generate
JAXB
classes
from
XSD
§ Or
write
“pure”
Java
Beans
and
add
JAXB
Annotations
if
necessary
13. • Don’t
mix
business
logic
into
the
data
objects
• Do
not
use
interfaces
for
the
data
model
(interfaces
are
not
friendly
data
representations
for
many
Java
data
bindings
such
as
JAXB
and
JSON)
§ Upon
de-‐serialization,
most
frameworks
use
the
default
no-‐arg
constructor
to
instantiate
the
DTO
• Object-‐oriented
graph
is
not
remoting
friendly
§ The
relations
between
objects
need
to
be
maintained
by
IDs
or
links
instead
of
programming
language
specific
references/pointers
§ Distributed
object
model
(such
as
RMI
or
CORBA)
doesn’t
fit
into
SOA
• Don’t
use
language
specific
serializations
such
as
Java
Serialization
• Don’t
use
complex
Java
generics
and
collections
for
DTOs
• Multiple-‐inheritance
complicates
the
issues
• Avoid
to
use
more
than
one
complex
type
for
the
parameters.
Use
wrapper
object
if
necessary
§ One
parameter
for
the
HTTP
entity
§ XML
documents
require
a
root
element
• Strictly
follow
JavaBeans
patterns
if
we
need
to
use
POJOs
as
the
DTOs.
15. • We
adopted
Tuscany
SCA,
which
separates
componentization,
composition,
communication
and
QoS
concerns
from
the
business
logic.
It
becomes
obviously
natural
to
abstract
the
data
modeling
now
(inspired
by
DDD).
• (Annotated)
POJO
(JAXB,
JPA,
Morphia)
has
too
much
noises
and
is
abuse-‐prone.
We
want
to
enforce
the
patterns.
• XSD
is
too
complicated
and
it
doesn’t
fit
all
for
web
2.0
• We
need
a
simple
human
(&
machine)
readable
language
to
describe
our
domain
model
to
provide/promote:
§ Service-‐friendly
DTO,
Persistence
(RDB
and
NoSQL),
Governance,
Reuse,
Validation,
MVC,
Best
Practice,
Documentation
• We
call
the
DSL
as
Universal
Data
Definition
Language
(UDDL).
16. • Derived
from
an
Apache
licensed
open
source
project
Sculptor
§ http://fornax.itemis.de/confluence/display/fornax/Sculptor+%28CSC%29
• Easy
to
learn,
intuitive
syntax
of
the
textual
DSL,
based
on
the
concepts
from
DDD.
• Textual
DSL
has
a
lot
of
productivity
benefits
over
graphical
tools
• Quick
development
round
trip,
short
feedback
loop
• Generation
of
complete
application
from
a
single
model,
not
only
fragments
that
are
hard
to
fit
in
to
the
overall
design
• Supports
JPA
(oracle/mysql/postgresql)/MongoDB/JAXB/Spring/SpringMVC
• Great
extensibility
and
customization
• Based
on
Eclipse
Xtext/Xtend/Xpand
code
generation
framework
• Can
be
used
with
text
editor
or
any
IDE,
but
DSL
editor
with
error
highlight,
code
completion,
and
outline
is
provided
for
Eclipse
users
• Documentation
w/
diagrams
for
domain
model
• No
runtime
magic
is
built
into
the
tools
(generated
code
can
be
used
without
the
tooling)
16
17.
18. Semantic
model
Generated
artifacts
Grammar
Language
Eclipse
Model
Load/save
(DSL)
Workflow
Engine
Java
code
(MWE)
Parse/validate
Eclipse
Xtext
UI
Configuration
files
Xpand
Documents
Parse
tree
Grammar
model
model
(UML
diagrams,
HTML
docs)
EMF
Ecore
model
Xtend/
Check
EMF
Ecore
model
Other
DSLs
(such
as
XSD,
GPB,
Thrift
or
Extend/
Avro)
transform/
validate
19. ¡ DSL:
<
145
lines
including
blank
ones
¡ Java
source
code:
§ 13
files
§ >1,500
lines
in
total
§ We
get
setter/getter/fluent
APIs,
static
field
names,
equals/hasCode/toString,
JAXB/JPA/
Morphia
annotations
22. ¡ Clean
and
Flexible
Interface
§ Infrastructure
details
are
abstracted
away,
and
declaratively
attached
to
the
services
if
required
¡ Remote
friendly
interfaces
§ Always
use
remote
friendly
data
objects
¡ Identify
required
Data
Access
Patterns
¡ Anti-‐Patterns
§ Don’t
make
your
service
interfaces
dependent
of
protocol
specific
information
(e.g.
HTTP
Headers,
etc)
26. ¡ Plain
JSON/XML
with
certain
data
access
patterns
mixed
in
§ Simple
§ No
client
library
is
required
¡ Open
Data
Protocol
(OData):
§ http://www.odata.org/
¡ Google
Data
Protocol
(GData):
§ http://code.google.com/apis/gdata/
28. ¡ REST
has
a
resource
oriented
programming
model,
which
does
not
map
gracefully
into
RPC
languages
¡ Use
the
Resource
layer
when
exposing
the
service
as
REST
¡ Use
the
Service
Interface
when
exposing
the
services
to
other
RPC
style
protocols
(e.g.
JSONRPC,
RMI,
SOAP
WebServices,
etc)
29. This
provides
a
JavaScrip RESTful
view
of
the
t
Object
resources.
One
Service
Monitoring
REST
w/
JSON
API
might
expose
multiple
resources.
Browser
Contacts
Id
Name
…
DTO
Mongo
(JAXB)
DB
DOM
Flex
REST
w/
XML
Resource
Client
Collection
Oracle
.NET
Service
3rd
Party
API
SOAP/HTTP
App
JSON-‐RPC
DTO
(JAXB)
Other
Internal
DTO
Client
(JAXB)
High
Performance
Security:
Binding
Authentication
oAuth
and
Authorization
authorization
33. ¡ Start
a
MongoDB
¡ Start
Tuscany
with
embedded
Jetty
(within
Eclipse)
¡ Start
a
browser
to
test
REST
and
JSONRPC
34.
35. ¡ Composition
diagram
§ Describe
the
service
and
the
assembly
¡ Data
Model
§ Describe
data
and
the
relationships
¡ Service
Documentation
§ Describe
service
interfaces
and
resources