| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

How to Architect a Smart Client App

This version was saved 13 years, 12 months ago View current version     Page history
Saved by Phil Dennis
on May 1, 2010 at 6:46:50 pm
 

Convener: Phil Dennis @pjdennis

I have just finished rolling out a small smart-client app to production, and hosting a discussion on Smart Client architecture in light of that experience. The technologies I used:

  • POCO domain model
  • NHibernate for data access
  • Service layer exposed using WCF
  • WPF with MVC architecture for client-side presentation

As a starting point for discussion, here are some "rules" for Smart Client development. These are things we get "for free" to some extent, in web applications:

  1. All access to external resources should Be done via a physically separate service layer:
    • Enables proper security
    • Enables scalability
    • Simplifies deployment
  2. No out-of-process calls from within UI event handlers
    • Goal: responsive user interface
    • Implementation: Asynchronous access to the service layer

 

Tools Mentioned: MassTransit

 

Concerns:

- Working disconnected

- synchronization

- security and impact on the client (trust levels, deployment)

-

 

Why WPF over WinForms:

- seems like future tech, Microsoft is going more this way (VS2010)

- better data binding story

- auto layout capabilities

 

Architecture:

- Shared domain layer across all tiers (service, DTO, client all use the same classes)

 

WCF:

- for communications

- challenges: IEnumerables are not supported for serialization, stick with out of box settings

- blog post series on implementing command pattern over WCF: http://davybrion.com/blog/2009/11/requestresponse-service-layer-series/

 

Comments (0)

You don't have permission to comment on this page.