IdeaBlade Company Presentation

Download Report

Transcript IdeaBlade Company Presentation

We are the dot in… .NET
Distributed Smart Client Applications
November 2004
Jay Traband, CTO
[email protected]
www.ideablade.com
Glad to be here
IdeaBlade Proprietary - July 17, 2015
2
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
IdeaBlade Proprietary - July 17, 2015
3
Typical 3-Tier Architecture
Data
Tier
Middle
Tier
Relational
Database
Business
Object Server
IdeaBlade Proprietary - July 17, 2015
Client
Tier
Internet
PC
Clients
4
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?
IdeaBlade Proprietary - July 17, 2015
5
What is a Business Object?
 An instance of a class with . . .
 Business data - “Salary”
 Business logic - “GarnishWages()”
 Business events - “SalaryChanged”
 Persistence
 Identity
IdeaBlade Proprietary - July 17, 2015
6
Persistence Options
Data
Tier
Business
Model
SQL
Relational
Database
SQL
Data
Encapsulation
Data
Business
Object
Business
Object
SQL
IdeaBlade Proprietary - July 17, 2015
Object
Relational
Mapping
Business
Object
Business
Objects
7
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-selects
“customer.Address.City” vs. “Select City from Address where Address.Id
= Customer.AddressId and Customer.Id=12345”
 Minimize or eliminate developer SQL
 Custom and conflicting SQL
 Stored Procedures
 Database independence
IdeaBlade Proprietary - July 17, 2015
8
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
IdeaBlade Proprietary - July 17, 2015
9
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?
IdeaBlade Proprietary - July 17, 2015
10
Distributed Processing Issues
 Object oriented design conflicts with
Scalable 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 scalability;
Stateful objects for ease of development
 Session info, load balancing & threading
IdeaBlade Proprietary - July 17, 2015
11
Distributing Data / Objects
Data
Tier
Middle
Tier
Client
Tier
SQL
Relational
Database
Web Services / RPC
Business
Object
Business
Object
Business
Object
Web Services /
XML Documents
PC
Clients
Object Remoting
IdeaBlade Proprietary - July 17, 2015
12
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
IdeaBlade Proprietary - July 17, 2015
13
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?
IdeaBlade Proprietary - July 17, 2015
14
Model–View–Controller
Client
Model
Controller
Sales
Sales
Rep
1
Rep
3
Sales
Sales
Rep
2
Rep
4
View
Controllers
Controller
Business
Object
Business
Object
Business
Object
Model
IdeaBlade Proprietary - July 17, 2015
View
15
Distributed Smart Client Architecture
Data
Tier
Middle
Tier
Client
Tier
Database
Business
Object
Server
Client
Databinding
Controller
SQL
Remoting
Table Rows
Business
Objects
Model
IdeaBlade Proprietary - July 17, 2015
View
16
We are the dot in… .NET
Thanks For Your Time
Jay Traband, CTO
[email protected]
www.ideablade.com