Подтвердить что ты не робот

Каковы хорошие примеры с открытым исходным кодом С# для качественных моделей домена

Я довольно молодой разработчик и все еще на этапе эмуляции моей карьеры. Я много читал о некоторых темах, таких как concurrency, и используя единицу работы, чтобы ваш бизнес-уровень контролировал транзакции с сохранением. Я даже реализовал какой-то болезненный, но функциональный код, который реализует эти темы. Но на самом деле я никогда не видел реального примера действительно элегантной реализации. У меня не так много хороших моделей TDD, ориентированных на образец, и поэтому я вынужден смотреть на внешний мир для руководства.

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

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

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

Спасибо за ваше время.

Изменить

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

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

4b9b3361

Ответ 1

Мне понравилась архитектура oxite cms http://www.codeplex.com/oxite. Я многому научился из этого проекта. Я использую nhibernate для доступа к данным вместо linq2sql, и он работает хорошо для меня. Конечно, это не масштабный проект, но его идеальное начало. CSLA не следует парадигме DDD.

Вышеупомянутая книга ".NET Domain-Driven Design with С#" Тима МакКарти (Wrox Press) "действительно хорошая".

Лучшая книга для понимания DDD - это Проект, управляемый доменами: борьба с сложностью в сердце программного обеспечения Эрика Эванса. Эта книга является "библией" хорошего дизайна DDD.

Кроме того, многие ресурсы можно найти на http://dddcommunity.org/. Там вы можете найти больше видео и статей от экспертов DDD, включая Eric Evans, и есть образец приложения хорошего дизайна DDD, но, к сожалению, его в java: (

Ответ 2

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

Ответ 3

Посмотрите на книгу Мартина Фаулера "Анализ шаблонов". Это старая книга, поэтому диаграммы классов не UML, а нечто древнее (к счастью, передняя и задняя обложка содержит описание символов диаграмм).

И у него нет кода на С#. На самом деле у него вообще нет кода, потому что это не книга о коде, а книга о моделях доменов. Но у него есть доменные модели, чтобы умереть!

Ответ 4

Хотя это не совсем то, что вы просили, Juval Lowy из iDesign закодировал несколько замечательных WCF Samples, которые занимаются многими ситуациями, которые вы упоминание выше.

Также может быть интересна книга ".NET Domain-Driven Design with С#" Тима МакКарти (Wrox Press).

Ответ 5

Я бы посмотрел CSLA и его пример приложения ProjectTracker. Здесь на работе я сделал несколько проектов с использованием CSLA, и это действительно помогает вашим BOs быть намного более мощными и полезными.

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

Ответ 6

Роб Коннери (из журнала MVC Storefront и Weke Road) http://blog.wekeroad.com/ в последнее время попадает в DDD. Приложение MVC Storefront может быть изменено, чтобы отразить его знания, или, как я полагаю. Несмотря на это, у него есть хороший материал по этой теме.

На веб-сайте http://www.domaindrivendesign.org есть пример приложения С#.

Одна вещь о DDD; он имеет тенденцию быть тесно связанным (в положительном смысле) с bsuiness, для которого он написан. В результате лучшие примеры, вероятно, связаны с IP и вряд ли будут доступны как ОС.

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

Ответ 7

Хотел бы я сказать вам, что у меня была отличная рекомендация, так как мне хотелось бы, чтобы этот вопрос ответил на основе консенсуса по домашнему выбору. Но поскольку наблюдаемые наблюдатели,

... лучшие примеры, вероятно, связаны с IP и вряд ли будут доступны как ОС.

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

Это коп-аут (я тоже не выполнял работу), но если этот вопрос не сможет сделать правильный выбор, и вы хотите продолжить его, я бы рекомендовал начать с некоторых более зрелых инструментов, которые многие из нас уже используют: NUnit, DotNetNuke, ScrewTurnWiki, NAnt, и т.д. У них есть несколько отличительных преимуществ, не в последнюю очередь из-за того, что их модели домена уже (относительно) доступны для вас.

Ответ 8

Недавно я познакомился с учебным пособием по созданию приложения Forum с MVC, nHibernate, AutoMapper, и я нашел исходный код действительно хорошим письменным и структурированным, с хорошими примерами использования NH/FluentNH в веб-приложениях, модели домена и репозиториях/службах: http://mattias-jakobsson.net/Item/45/Building%20a%20forum%20application,%20Part%209

Ответ 9

Рассматривали ли вы reviwing Замок проекта?

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

Ответ 10

Я бы посмотрел dofactory сайт GoF. У них есть куча примеров, которые вы можете приобрести за довольно небольшую цену, в том числе:
  * MVC - веб-приложение ASP.NET
  * MVP - Приложение Windows Forms
  * MVVM - приложение WPF
Он также включает две очень хорошие книги: "Шаблоны проектирования предприятия" и "Основные шаблоны дизайна"

Ответ 11

В настоящее время я работаю над проектом, используя StuctureMap, Fluent NHibernate, Asp.net MVC, AutoMapper, Castle и xVal. Я получаю помощь от примеров проектов Nerd Dinner и Code Camp Server. Пожалуйста, дайте мне знать, если у вас есть вопросы по любой из этих фреймворков.

http://code.google.com/p/codecampserver/

http://nerddinner.codeplex.com/

Ответ 12

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

Я опубликовал подробные видео о сохранении объектов в своем блоге в http://thomasjaeger.wordpress.com, где я вхожу в причины того, почему и как централизованной доменной модели в решении.