Если бы бизнес-приложение было расположено на подобном уровне, было бы это подходящим разделением труда:
Доступ к данным
Вызывает только хранимые процедуры, сопоставляет свойства DTO с хешем tablse, которые используются для заполнения коллекций параметров команды ADO.NET.
Только сборка применительно к SqlDataClient.
- Важная логика, связанная с тем, что означает пустой, пустой и пустой в коде сопоставления, но в остальном нет проверки или другой логики, специфичной для домена.
Так называемая бизнес-логика
разбивает несколько наборов результатов на отдельные таблицы данных, например
public void ReturnNthRecordSetFromStoredProcFoo ()
переходить к доступу к данным для наборов данных, например
public void ReturnDataSet (имя строки) {return (новый PersonController) .GetAnotherDataSet (имя);}
сопоставляет одну строку DataTable с одним DTO s
- Важная логика, касающаяся того, что означает пустой, пустой и пустой в коде сопоставления.
- Содержит объект транзакции, хотя он используется исключительно для обертывания вызовов отдельных хранимых процедур.
- Нет ссылки на SqlDataClient, поэтому он не может использовать SqlDataReaders для заполнения DTO.
- Нет ссылки на System.Web.UI
- Правила авторизации, но в остальном нет логики, зависящей от домена.
UI
- Двухсторонняя привязка данных DTO к формам ASP.NET.
- Проверка свойств элементов управления - как правило, нет проверки непосредственно на DTO.
- «Коллекции» управляются путем привязки DataSet к сеткам. Фактически, попытка сделать что-либо с коллекциями требует, чтобы пользовательский интерфейс перебирал DataRows в DataTables и знал, каковы соответствующие имена столбцов (которые обычно только отчасти похожи на DTO)
Итак, наконец, вопрос - с этим приложением должен ли уровень доступа к данным взять на себя обязанности так называемого бизнес-уровня? Разве это не уже два уровня (почти один! ) приложение кроме неудобства лишней сборки?
Дополнительная информация: Хорошо, я уже знаю, что сервер приложений будет одной машиной, возможно, навсегда, поскольку это интранет-приложение с небольшим количеством пользователей. Поэтому я знаю, что нельзя разрабатывать физически отдельные уровни приложений. Кроме того, он, вероятно, будет поддерживать только один пользовательский интерфейс и будет полностью исключен, если ему когда-либо понадобится поддерживать что-то отличное от ASP.NET - еще одна часто цитируемая причина для уровней / слоев.