Design Principles

March 11, 2009

  • Break application into pieces as small as possible, one component one feature, one function one implementation (in shortly, an object should do one thing and do it well).
  • Encapsulate implemetation of components, so that any change in component would not produce effects on others.
  • Use composition as much as possible, instead of inheritance, so that reduces the dependence among objects.

The following list describes the key concerns that you must consider when doing application architecture:

  • Authentication. Determine how to authenticate your users and pass authenticated identities across the layers.
  • Authorization. Ensure proper authorization with appropriate granularity within each layer, and across trust boundaries.
  • Caching. Identify what should be cached, and where to cache, to improve your application’s performance and responsiveness. Ensure that you consider Web farm and application farm issues when designing caching.
  • Communication. Choose appropriate protocols, reduce calls across the network, and protect sensitive data passing over the network.
  • Exception management. Catch exceptions at the boundaries. Do not reveal sensitive information to end users.
  • Instrumentation and logging. Instrument all of the critical events, and log sufficient details. Do not log sensitive information.

Architectural Style

March 11, 2009

Each architectural style defines a set of rules that specify the kinds of components you can use to assemble a system, the kinds of relationships used in their assembly, constraints on the way they are assembled, and assumptions about the meaning of how you put them together. Here are examples of architectural styles:

  • client/server
  • component-based
  • layered architecture
  • message-bus
  • Separated Presentation
  • 3-tier/N-tier
  • object oriented
  • service-oriented architecture (SOA)

Application Type

March 11, 2009

  • • Mobile applications designed for mobile devices.
  • Rich client applications designed to run primarily on a client PC.
  • Rich Internet applications designed to be deployed from the Internet, which support rich user interface (UI) and media scenarios.
  • Service applications designed to support communication between loosely coupled components.
  • Web applications designed to run primarily on the server in fully connected scenarios.
Follow

Get every new post delivered to your Inbox.