2009-08-25 11 views
2

Вот действительно действительно супер-основной вопрос.Подход для приложений CRUD n-уровня в .NET.

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

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

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

+0

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

ответ

3

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

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

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

+0

Спасибо большое. Это большое и сложное приложение, которое будет масштабироваться как минимум для сотен пользователей. Позвольте мне быть ясным - когда я говорю n-ярус CRUD, я имею в виду, включая SOA здесь. Мой вопрос действительно касается отслеживания изменений. Поэтому я хочу, чтобы мои службы WCF отображали операции, которые имеют либо простую, либо сложную семантику, для моего клиента. Как я вижу это, у меня есть два варианта: интероперабельные, специфичные для платформы DTO или некоторые .NET-технологии (например, EF), которые могут иметь или не иметь отслеживания изменений, встроенные для обновлений. Кажется, второе решение может быть * много * нет работа. Мысли? – dks1983

+1

Entity Framework v4.0 имеет полное решение отслеживания изменений многоуровневого уровня. Фактически они разработали открытую спецификацию для передачи информации отслеживания изменений по всему проводу, поэтому, если вы используете не-NET-клиенты, они все равно будут совместимы. Кроме того, они предоставили полную поддержку отслеживания отслеживания изменений, если это необходимо. Как я уже упоминал ранее, EF v4.0 (а не v1.0) является серьезным соперником для короны ORM. Если отслеживание изменений является вашей главной задачей, вы должны действительно проверить EF: http://blogs.msdn.com/efdesign/ – jrista

+0

Также зайдите в блог ADO.NET для получения дополнительной информации: http://blogs.msdn.com/ adonet/ – jrista