Title: Distributed Smart Client Applications
1- Distributed Smart Client Applications
- November 2004
Jay Traband, CTO jayt_at_ideablade.comwww.ideablade.
com
2Glad to be here
3What is a Distributed Smart Client?
- Distributed
- Processing in multiple places
- Data in multiple places
- Smart Client
- Maximized client-side processing
- Presentation layer
- Business logic
- Ability to run disconnected
- One-click deployment
4Typical 3-Tier Architecture
DataTier
MiddleTier
ClientTier
Internet
5Business Object Persistence
- How do I get data out of my database into my
business objects? - Do I pick a specific database vendor or write
vendor neutral code? - Do my developers all need to know SQL? If so how
do I isolate it? - How much business logic do I put in the database
(stored proc/triggers etc)? - How do I handle concurrency, transactions, and
multiple databases?
6What is a Business Object?
- An instance of a class with . . .
- Business data - Salary
- Business logic - GarnishWages()
- Business events - SalaryChanged
- Persistence
- Identity
7Persistence Options
DataTier
BusinessModel
8Why Object-Relational Mapping
- Decouple object and database semantics
- Encapsulate database schema
- Database derived properties look the same
- employee.BirthDate, employee.Age
- Object graph navigation
- dot notation vs. n-way joins
sub-selectscustomer.Address.City vs. Select
City from Address where Address.Id
Customer.AddressId and Customer.Id12345 - Minimize or eliminate developer SQL
- Custom and conflicting SQL
- Stored Procedures
- Database independence
9Enterprise-class ORM
- Separate business object developers from
consumers - Hide / filter / extend business objects for
consumers - In-memory, fine-grain object cache
- Offline mode local persistence
- Object query language
- Views, stored procedures, user-defined fields
- Round-tripping handle triggers db calculations
- Transactions optimistic concurrency
- Database independence
10Business Object Mobility
- How do I move business objects between the object
server and the client? - Do I use web Services, remoting, message queues
or all of the above? - How do I handle firewalls proxy servers?
- Should I pass data, objects or distributed refs
to objects? - How do I provide security?
- Authentication / Authorization
- Secure execution context code access security
- What performance / scalability tradeoffs am I
making?
11Distributed Processing Issues
- Object oriented design conflicts withScalable
distributed design - Object methods and properties are fine
grained,distributed methods are chunky - Object mobility (marshal by value vs marshal by
ref) - Data Locality data close to where used
- Stateless objects for scalabilityStateful
objects for ease of development - Session info, load balancing threading
12Distributing Data / Objects
DataTier
MiddleTier
ClientTier
Scalability, Reliability
Too Fine Grained
Data, not Objects
Object Fidelity
13Where is the Business Logic?
Data Tier, Middle Tier, Client Tier ?
- Middle Tier the standard answer
- Logic all in one place
- Security
- Middle Tier (some in Data Tier)
- Performance
- - Encapsulation
- Client Tier and Middle Tier (Object mobility)
- Logic still in one place the business object
- Business object execution space can vary
- Best performance
- Security is shared between the tiers
14Client Side Processing
- How do I manage my business objects on the
client? - How do I keep them in synch with the server?
- Do I cache business objects on the client?
- How do I handle large object graphs?
- How do I operate when not connected to the
server? - How do I query for objects on the client?
- How do I keep my user interface in synch with my
business objects? - How do I insure that any change to a business
object appears in the user interface? - How do I insure that refreshed data from the
object server appears in the user interface?
15ModelViewController
Controller
Model
16Distributed Smart Client Architecture
DataTier
MiddleTier
ClientTier
Controller
Model
View
17Jay Traband, CTOjayt_at_ideablade.comwww.ideablade.
com
Thanks For Your Time