c# - sistema - modelo de dominio online
Cuáles son algunos buenos ejemplos de código abierto c#de modelos de dominio de calidad (12)
Soy un desarrollador bastante joven, y todavía estoy en la fase de emulación de mi carrera. He leído mucho sobre algunos temas como la simultaneidad y el uso de la unidad de trabajo para permitir que la capa empresarial controle las transacciones de persistencia. Incluso he implementado un código doloroso pero funcional que implementa estos temas. Pero realmente nunca he visto un ejemplo del mundo real de una implementación realmente elegante. No tengo muchos buenos TDD, modelos de roles centrados en mi alrededor, por lo que me veo obligado a mirar el mundo exterior en busca de orientación.
Por lo tanto, estoy buscando algunos ejemplos estelares de modelos de dominio de aplicaciones empresariales de código abierto. Preferiblemente escrito en c #, pero otros idiomas estarían bien, siempre y cuando sean buenos ejemplos de soluciones de modelos de dominio limpios y elegantes.
Algunas de las cosas que realmente me gustaría ver son soluciones elegantes para concurrencia, reglas comerciales y validación de objetos, transacciones / unidades de trabajo y mecanismos de registro semi transparentes. También tengo curiosidad por ver cuáles son algunas de las mejores prácticas del mundo real para el manejo de excepciones en el código del modelo de dominio.
Sé que podría comenzar a incursionar en proyectos de código abierto al azar y tratar de descifrar lo bueno de lo malo, pero esperaba que la comunidad de expertos de aquí tuviera algunas buenas ideas de proyectos a los que prestar atención para transmitir el esfuerzo.
Gracias por tu tiempo.
Editar
No estoy realmente interesado en marcos que faciliten el diseño y la construcción. Mi opción de marco, o si usar un marco es una consideración necesaria, pero está completamente separado de mi pregunta aquí. A menos que esos marcos sean en sí mismos de código abierto, y muy buenos ejemplos para explorar.
Lo que estoy buscando es un proyecto que "hizo las cosas bien", resolviendo un problema del mundo real con un código que es flexible y fácil de mantener, para que pueda ver con mis propios ojos y entender un ejemplo de cómo se debe hacer. ese no es un ejemplo trivial de 50 líneas tutoriales.
¿Has considerado revirar el Proyecto del Castillo ?
From the Castle Project "Castle es un proyecto de código abierto para .NET que aspira a simplificar el desarrollo de aplicaciones empresariales y web. Ofreciendo un conjunto de herramientas (trabajando juntas o de forma independiente) e integración con otros proyectos de código abierto, Castle te ayuda a obtener más hecho con menos código y en menos tiempo ".
Actualmente estoy trabajando en un proyecto que usa StuctureMap , StuctureMap NHibernate , Asp.net MVC , AutoMapper , Castle y frameworks xVal . He estado recibiendo ayuda de los proyectos de ejemplo Nerd Dinner y Code Camp Server. Por favor, avíseme si tiene preguntas sobre cualquiera de estos marcos.
Desearía poder decirte que tuve una gran recomendación, ya que me encantaría que esta pregunta se responda con una elección casera consensuada. Pero como objektivs observados ,
... los mejores ejemplos probablemente estén relacionados con IP y es poco probable que estén disponibles como SO.
Sin embargo, hay un dominio para el que tenemos abundante código de código abierto: herramientas de desarrollo de software.
Esto es una salida de emergencia (no he hecho el trabajo preliminar tampoco), pero si esta pregunta no produce una elección sólida y quieres seguir con esto, recomendaría comenzar con algunas de las herramientas más maduras que muchos de nosotros Ya uso: NUnit , DotNetNuke , ScrewTurnWiki , NAnt , etc. Tienen varias ventajas distintas, una de las cuales es que sus modelos de dominio ya serán (relativamente) accesibles para usted.
Eche un vistazo a mi solución completa de Visual Studio en GitHub que puede utilizar como un comienzo de salto porque incluye una arquitectura muy simple pero en capas.
Publiqué videos detallados sobre la persistencia de objetos en mi blog en http://thomasjaeger.wordpress.com, donde abordo las razones del por qué y cómo de un modelo de dominio centralizado en la solución.
Eche un vistazo al libro de Martin Fowler, Analysis Patterns. Es un libro viejo, por lo que los diagramas de clase no son UML sino algo antiguo (afortunadamente, la portada y la portada posterior contienen una descripción de los símbolos de los diagramas).
Y no tiene código C #. De hecho, no tiene ningún código porque no es un libro sobre código, sino un libro sobre modelos de dominio. ¡Pero tiene modelos de dominio para morirse!
Me gustó mucho la arquitectura de oxite cms en http://www.codeplex.com/oxite . Aprendí mucho de ese proyecto. Uso nhibernate para acceso a datos en lugar de linq2sql y funciona bien para mí. Por supuesto, no es un proyecto a gran escala, pero es un comienzo perfecto. CSLA no sigue el paradigma DDD.
El libro anterior ".NET Domain-Driven Design with C #" de Tim McCarthy (Wrox Press) "es realmente bueno.
El mejor libro para entender DDD es el Diseño Dirigido por Dominio: Abordando la Complejidad en el Corazón del Software de Eric Evans. Este libro es la "biblia" del buen diseño DDD.
Más allá de eso, se pueden encontrar muchos recursos en http://dddcommunity.org/ . Allí puedes encontrar más videos y artículos de expertos de DDD, incluido Eric Evans, y hay una aplicación de muestra de buen diseño de DDD, pero desafortunadamente está en java :(
Podrías echar un vistazo a nopCommerce usé para probarlo, funciona muy bien y tiene una buena implementación de DDD y BO, bastante genérico y rápido, el patrón de instalación es también un clásico, así que si apuntas a una aplicación web, puedes ver esto también .
Recientemente me encontré con un tutorial sobre la creación de aplicaciones Forum con MVC, nHibernate, AutoMapper, y encuentro que el código fuente está realmente bien escrito y estructurado, con buenos ejemplos sobre el uso de NH / FluentNH en aplicaciones web, modelos de dominio y repositorios / servicios: http://mattias-jakobsson.net/Item/45/Building%20a%20forum%20application,%20Part%209
Rob Connery (del blog de MVC Storefront y Weke Road) http://blog.wekeroad.com/ ha entrado en DDD recientemente. La aplicación MVC Storefront se puede modificar para reflejar sus aprendizajes, o eso creo. De todos modos, tiene un buen material sobre este tema.
El sitio web http://www.domaindrivendesign.org tiene una aplicación de muestra C #.
Una cosa sobre DDD; tiende a estar estrechamente acoplado (en el sentido positivo) con la comodidad para la que está escrito. Como resultado, los mejores ejemplos probablemente estén vinculados en IP y es poco probable que estén disponibles como SO.
El tipo de diseño que suelo ver suele ser el modelo de dominio anémico.
Si bien no es exactamente lo que usted solicitó, Juval Lowy de iDesign ha codificado algunas maravillosas muestras de WCF que abordan muchas de las situaciones que menciona arriba.
El libro ".NET Domain-Driven Design with C #" de Tim McCarthy (Wrox Press) también podría ser de su interés.
dofactory un vistazo al sitio de dofactory GoF. Tienen un montón de ejemplos que puedes comprar por un precio bastante pequeño, que incluyen:
* MVC - Aplicación web ASP.NET
* MVP - Aplicación de formularios de Windows
* MVVM - Aplicación de WPF
También incluye dos libros muy buenos: "Patrones de diseño de empresa" y "Patrones de diseño de Head First"
CSLA un vistazo a CSLA y su aplicación de muestra, ProjectTracker. Aquí en el trabajo, he hecho algunos proyectos usando CSLA y realmente ayuda a que tus BO sean mucho más poderosos y útiles.
Si bien ProjectTracker no es un modelo de dominio del mundo real, cubre muchas de las situaciones que necesitaría un modelo de dominio real. Por lo tanto, si nos fijamos en las características que ofrecen las capas de BO que utilizan CSLA, sabrá cómo se verán los buenos modelos de dominio.