взаимодействие со слоем данных: через Веб-сервисы или с помощью
устаревшего приложения, использующего компоненты шлюза. В любом
случае взаимодействие будет ограничено операциями, определенными в
контракте Веб-сервиса или в интерфейсе, предоставляемом компонентами
шлюза.
2. Выберите необходимые типы сущностей. Компоненты доступа к данным работают
с сущностями. Сущности используются для размещения и управления данными,
используемыми приложением, и в них желательно включить весь необходимый
код валидации. Также важно правильно выбрать тип и формат данных бизнес-
сущностей, поскольку это определит выполнение требований по обеспечению
возможности взаимодействия и сериализации. Руководство по выбору типов
сущностей и типы, обычно используемые в бизнес-копмонентах и компонентах
данных, можно найти в главе 13, «Проектирование бизнес-сущностей». При выборе
формата данных обратите внимание на следующие аспекты:
◦ Если требуется поддерживать сценарии без постоянного подключения в
простых приложениях, выполняющих CRUD-операции, используйте объекты
DataSet или отдельные DataTable. Самым распространенным подходом
является применение ADO.NET. Это идеальный вариант при работе с
существующим приложением, в котором уже используются ADO.NET. При
проектировании нового приложения можно применять LINQ to Datasets для
заполнения DataSet с помощью запросов LINQ.
◦ Если к слою доступа к данным будут обращаться другие приложения или
требуется обеспечить возможность взаимодействия с другими системами
или платформами, используйте формат XML.
◦ Если большое значение имеет удобство и простота обслуживания
приложения, применяйте специальные бизнес-сущности. Для этого
придется писать дополнительный код для сопоставления сущностей с
операциями базы данных, но решения O/RM могут облегчить задачу
разработчика. Для обеспечения большей гибкости используйте ADO.NET
Entity Framework или другие O/RM-средства, такие как инструментарий с
открытым исходным кодом NHibernate.
◦ Реализуйте сущности, наследуя их от базового класса, который
обеспечивает основную функциональность и инкапсулирует выполнение
общих задач. Однако не перегружайте базовый класс ненужными
операциями, что может понизить связность сущностей, унаследованных от
этого базового класса, и негативно сказаться на удобстве обслуживания и
производительности.
◦ В проектируемых сущностях реализуйте взаимодействие с базой данных,
полагаясь на компоненты логики доступа к данным. Обеспечьте
централизованную реализацию всех политик доступа к данным и
соответствующей бизнес-логики. Например, если бизнес-сущности
выполняют прямой доступ к базам данных SQL Server, всем приложениям,