language-agnostic architecture platform-agnostic

language agnostic - ¿Qué significa "Core" en el contexto del diseño de la biblioteca?



language-agnostic architecture (7)

En mi opinión, CORE significa algo indispensable. Las funciones matemáticas y otras funciones con fines de utilidad no están en el núcleo. Son más bien "Utils".

El núcleo es esa parte que hace que todo lo demás exista, sin eso, los otros no tienen sentido. Otras cosas, que no están en el núcleo, pueden (no siempre es posible por diseño) eliminarse.

A menudo veo a otros desarrolladores nombrar bibliotecas con "CORE". ¿Qué significa en realidad?


Según las respuestas ya publicadas aquí, aparentemente no hay una forma "estándar" de definir "Núcleo" en lo que se refiere al desarrollo de bibliotecas.

Entonces no me preocuparía por ser "correcto". Use el término como mejor le parezca.


Veo el núcleo como el corazón abstracto de la aplicación. El núcleo generalmente implementa suficiente lógica para definir el comportamiento de toda la aplicación.

Entonces, en mi opinión, el acceso y la presentación de datos no deberían formar parte del núcleo. Esto permite que las aplicaciones web y de escritorio compartan el mismo módulo principal.

En su caso, habría contenido lógica comercial, manejo de errores y configuración en el módulo principal.

También creo que la razón principal para tener un módulo de núcleo grande es evitar el costo de tener que mantener una gran cantidad de módulos más pequeños.


Veo el núcleo como un requisito previo para cualquier otra biblioteca que pueda usar de ese proveedor. Entonces, aunque el vendedor puede ofrecer varios paquetes independientes, todos confían en el núcleo para hacer las cosas. De lo contrario, puede provocar una duplicación grave del código.


Yo uso esa convención y es básicamente una biblioteca de clase principal con clases de utilidad genéricas y código que realmente no tiene lugar en su propia biblioteca.

Por ejemplo, métodos de extensión para muchas clases, funciones matemáticas adicionales, etc. Cosas que no son lo suficientemente grandes como para justificar un proyecto completamente diferente para ellas.

Lo que otros no tengo idea sin embargo.


Le pedí a Bing que definiera "Núcleo". Una de las definiciones que se le ocurrió fue:

parte esencial: la parte central o más importante de algo

Entonces, básicamente, cuando alguien nombra el núcleo de una biblioteca, es la parte central y más importante de su aplicación y / o marco :-)


Esto probablemente será juzgado como una herejía, pero después de varios años de soluciones de estructuración con proyectos separados para acceso a datos, lógica de negocios, etc., estoy más que dispuesto a poner esas capas en un único proyecto llamado MyApp.Core para que una solución básica consistiría solo en el proyecto central y un proyecto de interfaz de usuario. Eso no quiere decir que nunca se necesitarían o agregarían otros proyectos (por ejemplo, MyApp.Tests), sino que la estructura básica se basaría en esos dos.

Editar: abreviado por sugerencia en los comentarios.