Каковы некоторые хорошие примеры моделей домена качества с открытым исходным кодом c# [закрыто]

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

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

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

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

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

редактировать

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

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

12 ответов


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

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

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

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


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


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

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


хотя это не совсем то, что вы просили, Юваль Лоуи из iDesign закодировал некоторые замечательные образцы WCF это решение многих ситуаций, которые вы упомянули выше.

книга ".NET Domain-Driven Design with C#" Тима Маккарти (Wrox Press) также может представлять интерес.


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

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


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

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

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

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


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

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

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

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


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


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

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


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


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

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

http://nerddinner.codeplex.com/


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

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