Обычно, архитектура бизнес-приложения состоит из следующих слоев (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 - уровень логики для приложения
Здесь обычно располагаются методы общие для приложения (аутентификация, авторизация и т.п.). Подробнее об этом уровне я напишу в другой статье.
Исправления, дополнения и замечания приветствуются!