Является ли моделирование модели базы данных хорошим подходом для проектирования сложных и крупных корпоративных приложений? - PullRequest
4 голосов
/ 29 декабря 2010

Мы работаем над причудливым большим сервис-ориентированным многослойным приложением, которое должно быть разработано с нуля. Теперь нам нужно начать программирование и попытаться собрать первые кубики.

Вопрос в том, с чего начать? Некоторые предлагают начать с разработки постоянных моделей данных, которые обеспечат более четкое представление. Это хороший подход?

Редактировать для Suirtimed

Здесь не так много гибкой культуры. Это проект в стиле SOA с использованием WCF, SQL Server, Entity Framework (с использованием генератора POCO для доменных объектов), ASP MVC и Workflow Foundation. Мы команда, состоящая из 4 разработчиков; достаточно квалифицированные (но не эксперты).

Ответы [ 4 ]

6 голосов
/ 29 декабря 2010

Общий общий подход, которому я всегда стараюсь следовать, - это начать с разработки моделей предметной области. Это ваш «вездесущий язык», который будет определять бизнес-объекты и концепции, содержать бизнес-логику (позже, когда она у вас есть) и, как правило, будет общим языком, используемым в различных частях системы.

Идея состоит в том, что это должно быть понято (или, по крайней мере, понятно) всеми участниками. Например, некоторый менеджер в каком-то другом отделе не обязательно поймет реляционные базы данных или что-то еще о сохранении данных своего отдела в нем. Но он понимает бизнес-процесс своего отдела. Их родной язык, их концепции, их взаимодействия и т. Д. Вездесущий язык - это общий язык, который разделяют группы.

Во время этого процесса вы должны держать свои зависимости перед собой. Самым большим из них обычно является постоянство данных. Существует своего рода золотая мечта, чтобы доменные модели были невежественными или невежественными в целом, а для разделения интересов это хорошая вещь. Однако истинное невежество зависимостей может загнать вас в угол. Вы можете столкнуться с некоторыми серьезными проблемами производительности или архитектурными проблемами, которые впоследствии потребуют значительных изменений в дизайне.

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

По сути, спроектируйте модель предметной области, прежде чем разрабатывать базу данных. Но не забывайте о базе данных во время этого процесса.

2 голосов
/ 29 декабря 2010

Поскольку база данных будет ключевым элементом, объединяющим корпоративное приложение, да, будет хорошей идеей начать с нее сначала или, по крайней мере, сделать это одновременно с проектами приложения.Не полагайтесь на приложение о том, как база данных должна быть структурирована.Вы должны проектировать целостность данных, производительность и безопасность, а не ориентацию на объекты!Начните с проектирования базы данных, по крайней мере, в 3-й нормальной форме.

Проектирование модели данных имеет решающее значение для производительности и целостности данных.И это более сложная вещь, чтобы изменить дизайн позже.Кроме того, для продукта Enterprise вам потребуются некоторые вещи, которые есть только в базе данных, такие как аудит записей, который должен разрабатываться с самого начала.Вероятно, вы захотите узнать, кто внес изменения в записи, что это было за изменение и из какого приложения оно появилось.Это очень поможет откатить неверные изменения данных и определить, какое приложение вызвало проблему, вызвавшую неверные изменения.

1 голос
/ 29 декабря 2010

Обычно мы начинаем с некоторых вариантов использования, чтобы инициализировать некоторые из используемых объектов для хранения данных. После этого мы пытаемся выполнить некоторое моделирование базы данных и особенно ищем отношения между сущностями.

Если базовая модель БД существует, мы разработаем прототип и постараемся включить в прототип как можно больше вариантов использования.

1 голос
/ 29 декабря 2010

Если вы разрабатываете полностью с нуля, тогда да, у вас есть преимущество в определении того, как будут выглядеть ваши данные.

Все, что я могу сказать, исходя из моего опыта, полезно получить как можно больше заранее разработанной структуры данных / бизнес-логики.

Чем глубже вы погружаетесь в свое приложение, тем сложнее будет перенастроить все, если данные должны измениться - и данные изменятся независимо от того, сколько вы готовите, вам просто нужно минимизировать эти изменения заранее. *

Лично я бы сказал, да, получить как можно больше информации о дизайне данных. Вы не можете поставить телегу перед лошадью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...