Подход для n-уровневых CRUD-приложений в .NET - PullRequest
2 голосов
/ 26 августа 2009

Вот действительно очень простой вопрос.

Скажем, я хотел создать - сегодня - корпоративное CRUD-приложение в .NET с n-уровневой архитектурой. Какой подход к доступу к данным мне следует использовать? Я хочу совместимости, поэтому DataSets отсутствуют (и я полагаю, что это уже не 2003). Аналогичным образом, рекламируемый метод .NET RIA Services для предоставления своих функций через дополнительный сервис клиентам, не являющимся Silverlight, не выглядит очень убедительным для операций обновления. Я вроде смог собрать что-то вместе с Entity Framework, который не имеет nOB-уровня поддержки OOB и поэтому требовал много странных вещей типа отражения для имитации видимости оптимистичного параллелизма ( пример в MSDN Magazine не похоже на то, что он поддерживает оптимистичный параллелизм. CTP).

Итак, что на самом деле могут делать люди в своих проектах для корпоративной CRUD с оптимистичным параллелизмом с проверкой обновлений? DataSets? Сделай сам с DTO и Господь знает, сколько работы вовлечено? И как это работает со связанными данными? Скажем, у меня есть коллекция, привязанная к DataGrid, нужно ли мне слушать CollectionChanged на предмет изменений? Нужно ли мне хранить стеки изменений, чтобы я мог сравнивать PK, если есть отмена? Кажется кошмарным.

И, во-вторых, что, если проверка обновлений для оптимистичного параллелизма не была жестким требованием? Что тогда?

1 Ответ

3 голосов
/ 26 августа 2009

Прежде всего, если вы планируете в будущем перейти на VS2010 и .NET 4.0, я настоятельно рекомендую изучить EF v4.0. С момента выхода EF v1.0 он улучшился DRAMATICALLY, и, на мой взгляд, является сильным соперником против таких, как nHibernate и его друзья. EF является центральным игроком многих будущих инициатив Microsoft в области данных, поэтому его нельзя игнорировать так же легко, как раньше. Он или любая из высокоуровневых сред .NET 4.0, которые зависят от него, должны хорошо соответствовать вашим потребностям CRUD.

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

Все, что находится за пределами вашей небольшой компании с общим числом сотрудников 20-50, и я хотел бы изучить Domain Driven Design (DDD) и SOA. Если вам нужны такие вещи, как управление параллелизмом и тому подобное, принципы, которые управляют DDD, должны хорошо вам служить. SOA, как правило, полезен для очень больших проектов, где у вас есть много команд разработчиков, одновременно работающих над несколькими проектами, которые должны взаимодействовать друг с другом. Это может быть излишним для ваших нужд, но есть некоторые хорошие принципы, которые все еще могут помочь.

...