Обычно, архитектура бизнес-приложения состоит из следующих слоев (tiers или уровней, layers):

1) Business objects (бизнес-объекты)

Они могут называться по-разному, джависты бы их назвали value objects, а другие бы сказали domain model. Вообще говоря, это какой-то набор взаимосвязанных классов (обычно на уровне parent\childs collection), каждый из которых состоит из свойств (set'теров и get'теров). По сути, это базовые объекты, которые будут использоваться в нашем приложении.

Например, это может быть класс UserInfo со свойствами LastName, FirstName, Age, UserId, Password и т.п.

Иногда, если в DAO (см. ниже) используется ORM-система типа NHibernate, к бизнес-объектам прилагаются еще файлики с описанием какое свойство бизнес-объекта какому полю в базе данных соответствует. Здесь, кстати (немного оффтопика), есть очень полезная утилита в Wilson OR Mapper - не сам маппер, а утилита к нему прилагающаяся, которая строит код для классов и XML-файлы.

2) DAO (DAL) - Уровень доступа к данным, Data Access Layer

Уровень данных может быть организован абсолютно по-разному.

Возможен вариант использования ORM (object relation mapping) систем типа NHibernate, который заметно облегчит написание кода для CQRUD (Creare, Query, Retrieve, Update, Delete) операций. ORM систем много, возможно в дальнейшем напишу какие-либо интересные их особенности.

Для упрощения доступа к базе данных можно использовать Microsoft Data Access Application Block. По сути, это набор классов-оберток для стандартных классов и их методов из .net framework, облегчающий написание кода для соединения с БД, построения запросов и получения данных. Код получается более легким и компактным.

В DAL обычно используются паттерны Factory (чтобы разделить логику доступа к различным базам данным в различные классы), а также Strategy (чтобы разделить логику для разных бизнес-объектов, например - восстановление бизнес-объекта из DataSet).

3) Services layer - уровень сервисов

Обычно состоит из 2-х частей - это Business Services и Application Services

a) Business servicess - уровни бизнес-логики

Оборачивает запросы к DAL, может использоваться как для обработки ошибок (выдавать удобоваримое Exception), так и подключать транзакции для нескольких запросов к DAL - например, при обновлении данных. К этому уровню обращается UI (user interface)

b) Application Service - уровень логики для приложения

Здесь обычно располагаются методы общие для приложения (аутентификация, авторизация и т.п.). Подробнее об этом уровне я напишу в другой статье.

Исправления, дополнения и замечания приветствуются!