Tengo algunas preguntas generales sobre el diseño del marco.Algunas preguntas sobre la estructuración de espacios de nombres de diseño impulsado por dominio
Estoy creando una API para una aplicación de iPhone en C# .NET (framework 3.5), & SQL 2008 (usando LINQ). He seguido el patrón-Driven Design-dominio (en un libro) y tener la siguiente estructura de carpetas:
Core
- DataAccess
--Impl
-Domain
-Impl
Core es mi base de la biblioteca API - mis DLL. DataAccess contiene las interfaces de acceso a datos DataAccess.Impl contiene los repositorios (LINQ a la base de datos) El dominio contiene la mayoría de mis tipos de datos y propiedades. Impl contiene mis servicios (es decir AccountService.cs, EmailService.cs)
Ahora, como un ejercicio, he añadido un servicio de Windows a este proyecto y estoy intentando llamar a la funcionalidad de los archivos DLL en este servicio. MI PREGUNTA ES, ¿qué capa debo exponer a otras aplicaciones y qué debe permanecer oculto?
- ¿Las clases de servicio de la carpeta Impl deben ser lo que los programadores ven?
- O los repositorios de DataAccess.Impl?
- O, ¿debería simplemente exponerlo todo para que lo vean los programadores? Como parece ahora, esto parece un poco confuso.
cuando empecé a leer sobre DDD estaba asumiendo que los repositorios serían oculta y se accede por las clases de servicio, pero estoy encontrando necesito llamar funcionalidad tanto en mi cliente. ¿He diseñado esto mal?
Mi otra pregunta tiene que ver con el nombre del espacio de nombres. Cuando el servicio de Windows llamadas funcionalidad de mi biblioteca central, tengo que hacer mi incluye como tal:
using Company.Product.ProductCore.Core.DataAccess.Impl
using Company.Product.ProductCore.Core.Domain
using Company.Product.ProductCore.Core.Impl
Esto parece prolijo. En cuanto a las DLL de Microsoft, parecen mantener una convención de dos niveles: (System.Linq, System.Text, etc.). Tener Company.Product.ProductCore.Core.Impl parece desordenado y realmente no le dice al programador qué hace este espacio de nombres (pero es lo que sugería el ejemplo que leí). ¿Hay una mejor práctica aquí?
Sus sugerencias (y cualquier ejemplo) son muy apreciadas.
Gracias.
¿Alguien quiere tomar una puñalada de esto? ¿Hay algo que pueda hacer para mejorar/aclarar mi pregunta? Gracias. –
Supongo que se trata de un servidor .NET al que la aplicación iPhone accederá a través de Internet (¿o sí?). ¿Están "los otros desarrolladores" trabajando en la aplicación de iPhone o en este .NET back-end? – Marijn
¿O es algún tipo de aplicación [monotouch] (http://monotouch.net/) ejecutándose en el iPhone? – Marijn