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