2009-05-15 16 views

Respuesta

3

Estos pros y contras se basan en mi trabajo con la primavera. Puede ser ligeramente diferente para otros contenedores.

XML

pro

  • flexibles
  • más potente que las anotaciones en algunas áreas
  • modelado muy explícita de las dependencias de sus clases

con

  • detallados
  • dificultades con la refactorización
  • cambiar entre varios archivos

Anotaciones

pro

  • menos archivo de conmutación
  • configuración automática para el tendido eléctrico simples
  • menos detallado que el xml

con

  • más de despliegue de datos específicos en su código (por lo general puede anular este con configuraciones XML)
  • XML es almopst (?) Siempre se necesita, al menos, para establecer la configuración basada annonation
  • magia anotación puede dar lugar a confusión en la búsqueda de la clase que se utiliza como dependencia

Código

pro

  • puede tomar ventaja de las lenguas de tipo fuerte (por ejemplo, C#, Java)
  • Algunos de control (no se puede comprobar las dependencias de forma estática, aunque el tiempo de compilación)
  • puede tomar ventaja de DSL (por ejemplo Binsor, interfaces fluidas)
  • menos detallado de XML (por ejemplo, no lo hace siempre que tenga que especificar el conjunto de montaje nombre calificado (.net cuando se habla))

con

  • cableado a través de código puede dar lugar a complejos cableados
  • dependencias duras al contenedor IOC en la base de código

Estoy usando una combinación de XML + Annotation. Algunas cosas especialmente relacionadas con el acceso a la base de datos siempre se configuran a través de xml, mientras que cosas como los controladores o servicios se configuran principalmente a través de anotaciones en el código.

[EDIT: He prestado Mauschs OPI code]

+0

parece que te faltan registros de código y me faltan registros de anotaciones. –

0

Supongo que al "registrar dependencias en el código" quiere decir "usar nuevo".

'nuevo' es un marco de inyección de dependencia extraordinariamente potente. Le permite "inyectar" sus "dependencias" en el momento de la creación del objeto, es decir, sin parámetros olvidados u objetos a medio construir.

El otro beneficio potencial importante es que cuando se utiliza herramientas de refactorización (digamos en ReSharper o IntelliJ), las llamadas a nuevo cambio demasiado

contrario, puede utilizar un cierto absurdo XML y refactorizar con XSL.

pros
+0

sí - ¡lo que sea! amantes de la primavera. – time4tea

+0

Infórmese antes de responder. La mayoría de los contenedores ofrecen formas alternativas de configuración que no sean xml. Las API fluidas pueden devolverte parte de la comodidad de refactorización. Además, los contenedores son más que solo una conveniencia DI: http://ayende.com/Blog/archive/2007/10/20/Dependency-Injection-doesnt-cut-it-anymore.aspx –

+0

Me considero bastante bien informado sobre este tema en particular, ¡gracias por el consejo! Leí el artículo vinculado y aún no veo nada de interés en el 'marco'. Para ser honesto, todo en ese artículo me parece pobre. Sin embargo, cada uno para los suyos. Puedes llevar un caballo ... – time4tea

2

XML:

  • puede cambiar el cableado y los parámetros sin tener que recompilar. A veces esto es bueno tener al cambiar los entornos (por ejemplo, puede cambiar un remitente falso correo electrónico utilizado en dev al remitente de correo electrónico real en la producción)

pros Código:

  • pueden aprovechar lenguajes de tipo fuerte (por ejemplo, C#, Java)
  • Algunos de control (no se puede comprobar las dependencias de forma estática, sin embargo) tiempo de compilación
  • refactorable usando herramientas de refactorización regulares.
  • puede tomar ventaja de DSL (por ejemplo Binsor, interfaces fluidas)
  • menos detallado de XML (por ejemplo, no es necesario especificar siempre el nombre completo conjunto de montaje (cuando se habla .net))
1

estoy de acuerdo. He encontrado contenedores ioc que me dan muy poco, sin embargo, muy fácilmente pueden dificultar hacer algo. Puedo resolver la mayoría de los problemas que enfrento simplemente usando mi lenguaje de programación preferido, que siempre resultó ser más fácil de mantener y de navegar.

+0

¿realmente responde la pregunta? – hoaz

Cuestiones relacionadas