Estoy trabajando en una aplicación Silverlight. Lo he dividido en varios ensamblajes:
- Dominio
- Repositorios (todo con persistencia en la base de datos de Sterling)
- UI
- ...
Así es como lo aprendí, pero me preguntaba. Si sabe que las DLL no se van a reutilizar, ¿es necesario dividirlas? ¿O podría poner todo en un ensamblaje y usar carpetas y espacios de nombres para mantenerlo ordenado?
También he visto proyectos que tienen demasiados ensamblajes. En lugar de usar espacios de nombres donde hubiera sido apropiado.
Entonces: ¿cuándo creas un nuevo ensamblaje para una nueva pieza de código? ¿Algún buen recurso sobre este tema? ¿Y divide el código técnicamente (dominio, datos, interfaz de usuario, etc.) y / o funcionalmente (es decir, administración del paciente, médico del paciente, logística del hospital, ... probablemente solo para aplicaciones más grandes de nivel empresarial)?
A
,B
,C
,D
,E
,F
,G
,H
,I
,J
,K
. Dondequiera que se hace referencia de montajeA
, también se debe hacer referencia a sus ensamblados dependientes:B
,C
,D
. Pero el montajeC
depende de:E
,F
,G
,H
por lo que vamos a necesitar los mismos. Entonces, cada vez que necesite alguna funciónA
, debe extraer 7 ensamblajes adicionales para que funcione; asegurándose de obtener las versiones correctas de cada ensamblaje. Bienvenido a la nueva DLL Hell.Un ensamblado es la unidad de implementación para una aplicación .NET; por lo tanto, debe considerar hacer coincidir el corte de sus ensamblajes con su arquitectura de implementación.
Los ensamblados también son útiles cuando necesita un control de versión separado en algún código. Por ejemplo, cuando tiene interfaces comunes que se beneficiarían del control de versiones independiente, debe separar ese código en un ensamblado.
Recuerde que los espacios de nombres pueden abarcar conjuntos. En muchos casos, es suficiente separar el comportamiento usando espacios de nombres. Mire el .NET
mscorlib.dll
que en un solo ensamblado contiene código que cubre una amplia gama de comportamientos separados solo por un espacio de nombres.Si desea alguna autoridad sobre este tema, no busque más allá de:
Pautas de diseño del marco: convenciones, modismos y patrones para bibliotecas .NET reutilizables (2ª edición) por Krzysztof Cwalina y Brad Abrams.
fuente