Core Indigo Patterns Ted Neward

Slides:



Advertisements
Similar presentations
웹 서비스 개요.
Advertisements

MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
3 Copyright © 2005, Oracle. All rights reserved. Designing J2EE Applications.
Welcome to Middleware Joseph Amrithraj
Database System Concepts and Architecture
Chapter 13 Review Questions
J2EE Design patterns Sharath Sahadevan August 8, 2002 St Louis Java SIG.
Spring, Hibernate and Web Services 13 th September 2014.
9.5 Software Architecture
A Java Architecture for the Internet of Things Noel Poore, Architect Pete St. Pierre, Product Manager Java Platform Group, Internet of Things September.
Objectives In this session, you will learn to:
Broker Pattern Pattern-Oriented Software Architecture (POSA 1)
Technical Architectures
CSLA Presenter Sergey Barskiy, senior consultant at Magenic Technologies your questions Send an in order.
Object-Oriented Enterprise Application Development J2EE Blueprints.
© 2005, Cornell University. Rapid Application Development using the Kuali Architecture (Struts, Spring and OJB) A Case Study Bryan Hutchinson
Faculty of Information Technology © Copyright UTS Faculty of Information Technology 2004Design-1 Advanced Java Programming Design issues Chris Wong
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Client/Server Architecture
CS 415 N-Tier Application Development By Umair Ashraf July 6,2013 National University of Computer and Emerging Sciences Lecture # 9 Introduction to Web.
Building Web Applications With J2EE Ohioedge Enterprise Java Solutions Provider Since 1996 By Sandeep Dixit, Partner.
UNIT-V The MVC architecture and Struts Framework.
Java Frameworks Indy Java Users Group January 29, 2003.
JDBC Session 5 Tonight: Data Access Patterns 1.J2EE Architecture & Design Patterns 2.The Data Access Tier 3.Data Access Patterns –DataAccessObject (DAO)
J2EE DESIGN PATTERNS Terms important in learning Design Patterns: Pattern : Each pattern is a three part rule, which expresses a relation between a certain.
Copyright © 2012 Accenture All Rights Reserved.Copyright © 2012 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are.
J2EE DESIGN Thanh Nguyen - 10/8/12www.smartbiz.vn1.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
What is Architecture  Architecture is a subjective thing, a shared understanding of a system’s design by the expert developers on a project  In the.
Copyright © 2012 Accenture All Rights Reserved.Copyright © 2012 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are.
Todd Snyder Development Team Lead Infragistics Experience Design Group.
Use to Implement: Input validation Page-Level authorization Session Management Audit Logging Use to Implement: Input validation Page-Level authorization.
95-843: Service Oriented Architecture 1 Master of Information System Management Service Oriented Architecture Lecture 10: Service Component Architecture.
® IBM Software Group © 2007 IBM Corporation J2EE Web Component Introduction
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 09. Review Introduction to architectural styles Distributed architectures – Client Server Architecture – Multi-tier.
The Data Grid: Towards an Architecture for the Distributed Management and Analysis of Large Scientific Dataset Caitlin Minteer & Kelly Clynes.
1 Another group of Patterns Architectural Patterns.
Alcatel-Lucent CDC Workshop, Coaching & Knowledge Transfer Architecture.
The Client/Server Database Environment Ployphan Sornsuwit KPRU Ref.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
1 UNIT –II Architecting Web Service. 2 Why SOA? – business point of view  Information Technology (IT) workers face many challenges, including: Limited.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Enterprise Integration Patterns CS3300 Fall 2015.
آرمان حسين‌زاده آذر  Access to data varies depending on the source of the data.  Access to persistent storage, such as to a database, varies greatly.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system architecture 1 after designing to meet functional requirements, design the system.
COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 8 1COMP9321, 15s2, Week.
Java EE Patterns Dan Bugariu.  What is Java EE ?  What is a Pattern ?
COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 7 1COMP9321, 15s2, Week.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
1 Copyright © 2004, Oracle. All rights reserved. Oracle Application Development Framework.
REST By: Vishwanath Vineet.
SEA Side – Extreme Programming 1 SEA Side Software Engineering Annotations Architectural Patterns Professor Sara Stoecklin Director of Software Engineering-
Introduction to EJB. What is an EJB ?  An enterprise java bean is a server-side component that encapsulates the business logic of an application. By.
Introduction to EJB. What is an EJB ?  An enterprise java bean is a server-side component that encapsulates the business logic of an application. By.
Enterprise Computing Distribution and components.
EJB Enterprise Java Beans JAVA Enterprise Edition
COMP9321 Web Application Engineering Semester 2, 2016 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 8 1COMP9321, 16s2, Week.
Java Web 应用开发: J2EE 和 Tomcat 蔡 剑, Ph.D.. 本讲内容 网络系统设计模式 综合案例分析.
COMP9321 Web Application Engineering Semester 1, 2017
Distribution and components
Design and Maintenance of Web Applications in J2EE
Inventory of Distributed Computing Concepts and Web services
Lecture 1: Multi-tier Architecture Overview
Database Environment Transparencies
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Component-based Applications
Component Technology Bina Ramamurthy 2/25/2019 B.Ramamurthy.
Developing and testing enterprise Java applications
Presentation transcript:

Core Indigo Patterns Ted Neward

Objectives Indigo represents a shift of thinking in building distributed systems; such shifts are always hard to adjust to So let’s take prior art (Core J2EE Patterns) and see how well we can map what we already know to what’s new

Refresh: “Indigo” Now known as “Windows Communication Foundation” Service-oriented communication library/toolkit  Shipping with Windows Vista (code-name “Longhorn”)  Focus on the A/B/C’s of Indigo: Address, Binding, Contract  Emphasis is on “reducing coupling”, not “distributed objects”

Refresh: Core J2EE Patterns By Alur, Crupi and Malks; considered a seminal J2EE work Patterns in three categories:  Presentation Tier  Business Tier  Integration Tier Although Indigo will apply mostly to “Business” and “Integration” patterns, we’ll look at some from all three

Core J2EE Patterns Catalog Presentation Tier Patterns  Intercepting Filter  Front Controller  Context Object  Application Controller  View Helper  Composite View  Service to Worker  Dispatcher View

Core J2EE Patterns Catalog Business Tier Patterns  Business Delegate  Service Locator  Session Façade  Application Service  Business Object  Composite Entity  Transfer Object  Transfer Object Assembler  Value List Handler

Core J2EE Patterns Catalog Integration Tier Patterns  Data Access Object  Service Activator  Domain Store  Web Service Broker

Pattern: Intercepting Filter Problem:  You want to intercept and manipulate a request and a response before and after the request is processed Forces:  You want centralized, common processing across requests  You want pre- and postprocessing components loosely coupled with core request-handling services to facilitate unobtrusive addition and removal  You want pre- and postprocessing components independent of each other and self-contained to facilitate reuse

Pattern: Context Object Problem:  You want to avoid using protocol-specific system information outside of its relevant context Forces:  You have components and services that need access to system information  You want to decouple application components and services from the protocol specifics of system information  You want to expose only the relevant APIs within a context

Pattern: Business Delegate Problem:  You want to hide clients from the complexity of remote communication with business service components Forces:  You want to access the business-tier components from your presentation- tier components and clients, such as devices, web services, and rich clients  You want to minimize coupling between clients and the business services, thus hiding the underlying implementation details of the service, such as lookup and access  You want to avoid unnecessary invocation of remote services  You want to translate network exceptions into application or user exceptions  You want to hide the details of service creation, reconfiguration, and invocation retries from the clients

Pattern: Business Object Problem:  You have a conceptual domain model with business logic and relationships Forces:  You have a conceptual model containing structured, interrelated composite objects  You have a conceptual model with sophisticated business logic, validation and business rules  You want to separate the business state and related behavior from the rest of the application, improving cohesion and reusability  You want to centralize business logic and state in an application  You want to increase reusability of business logic and avoid duplication of code

Pattern: Session Façade Problem:  You want to expose business components and services to remote clients Forces:  You want to avoid giving clients direct access to business-tier components, or prevent tight-coupling with the clients  You want to provide a remote access layer to your Business Objects and other business-tier components  You want to aggregate and expose your Application Services and other services to remote clients  You want to centralize and aggregate all business logic that needs to be exposed to remote clients  You want to hide the complex interactions and interdependencies between business components and services to improve manageability, centralize logic, increase flexibility, and improve ability to cope with changes

Pattern: Transfer Object Problem:  You want to transfer multiple data elements over a tier Forces:  You want clients to access components in other tiers to retrieve and update data  You want to reduce remote requests across a network  You want to avoid network performance degradation caused by chattier applications that have high network traffic

Pattern: Data Access Object Problem:  You want to encapsulate data access and manipulation in a separate layer Forces:  You want to implement data access mechanisms to access and manipulate data in a persistent storage  You want to decouple the persistent storage implementation from the rest of your application  You want to provide a uniform data access API for a persistent mechanism to various types of data sources, such as RDBMS, LDAP, OODB, XML repositories, flat files, and so on  You want to organize data access logic and encapsulate proprietary features to facilitate maintainability and portability

Summary Not all prior art is equally applicable  J2EE did things in a different manner than Indigo does  Less focus on “distributed objects”, more on “decoupled services” But prior art is a good way to investigate new art  Core J2EE Patterns gives us a framework to investigate Indigo  Other patterns works (PEAA, POSA 1 & 2) give us similar structure

Questions ?

Credentials Who is this guy?  Independent consultant  Author  C# in a Nutshell (O’Reilly, with Drayton, Albahari, 2001)  Server-Based Java Programming (Manning, 2000)  SSCLI Essentials (O’Reilly, with Stutz, Shilling, 2003)  Effective Enterprise Java (Addison-Wesley, 3Q 2003)  Papers at  Blog at