Distributed Smart Client Applications - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

Distributed Smart Client Applications

Description:

Ability to run disconnected. One-click deployment. 4. IdeaBlade ... How do I operate when not connected to the server? How do I query for objects on the client? ... – PowerPoint PPT presentation

Number of Views:125
Avg rating:3.0/5.0
Slides: 18
Provided by: wardglenj
Category:

less

Transcript and Presenter's Notes

Title: Distributed Smart Client Applications


1
  • Distributed Smart Client Applications
  • November 2004

Jay Traband, CTO jayt_at_ideablade.comwww.ideablade.
com
2
Glad to be here
3
What 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

4
Typical 3-Tier Architecture
DataTier
MiddleTier
ClientTier
Internet
5
Business 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?

6
What is a Business Object?
  • An instance of a class with . . .
  • Business data - Salary
  • Business logic - GarnishWages()
  • Business events - SalaryChanged
  • Persistence
  • Identity

7
Persistence Options
DataTier
BusinessModel
8
Why 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

9
Enterprise-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

10
Business 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?

11
Distributed 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

12
Distributing Data / Objects
DataTier
MiddleTier
ClientTier
Scalability, Reliability
Too Fine Grained
Data, not Objects
Object Fidelity
13
Where 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

14
Client 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?

15
ModelViewController
Controller
Model
16
Distributed Smart Client Architecture
DataTier
MiddleTier
ClientTier
Controller
Model
View
17
Jay Traband, CTOjayt_at_ideablade.comwww.ideablade.
com
Thanks For Your Time
Write a Comment
User Comments (0)
About PowerShow.com