2009-04-23 9 views
7

¿Cuál es su experiencia real con los bloques de aplicaciones de Microsoft y otras soluciones de Microsoft en lugar de escribir sus propias soluciones?¿Cuál es su experiencia con Microsoft Application Blocks

Empecé un nuevo proyecto y decidí probarlo. Usé el manejo de excepciones y los bloques de registro. El bloque de manejo de excepciones funciona bien para lo que necesitaba. El bloque de registro hizo el 95% de lo que necesitaba, el resto necesitaba ser personalizado. Me llevó un tiempo averiguar cómo personalizarlo y luego tuve algunos problemas de referencia de la versión. El registro es una tarea muy simple ya sea escribiendo en un archivo o base de datos (en este proyecto ambos). En retrospectiva, hubiera sido más rápido escribir el mío.

El proyecto también requiere la sincronización de datos con un PDA. Con un poco de investigación, parecía claro que la dirección que apuntaba Microsoft era Synchronization Services. Después de pasar alrededor de 3 días tratando de obtener todas las versiones correctas de las diferentes piezas de software, no pude conseguir que la muestra funcionara Windows Mobile Synchronization Error. Opté por usar la comunicación de escritorio de OpenNETCF para copiar archivos de/a la pda, usar la serialización de objetos binarios y escribir mi propio código de sincronización básico, lo que me llevó menos tiempo y lo hago exactamente como yo quiero (y no lo siento). bueno:))

Algunos aspectos positivos:

  • no tiene que reinventar la rueda
  • benefician de actualizaciones
  • beneficiarse de otras herramientas diseñadas para trabajar con ellos
  • incrementos gran base de usuarios comentarios, pruebas y robusto ness
  • bueno tener en su curriculum vitae
  • un nuevo desarrollador agrega al equipo puede estar familiarizado con ellos
  • proporcionar una gran cantidad de funcionalidad personalizable

negativos:

  • exceso diseñado, intenta ser una navaja suiza, brindando mucha más funcionalidad de la que nunca se necesita para una solución que crea complejidad.
  • aun así, nunca parecen cumplir con todos los requisitos del proyecto, la cola puede terminar moviendo al perro. Supongo que esto depende de la influencia que tengas sobre cómo funciona la aplicación.
  • necesita aprender a implementar correctamente el bloque de la aplicación (vale, así que esto solo debe hacerse la primera vez que se usan, así que no es gran cosa)
  • aumenta la dependencia de las diferentes versiones dll, un poco de esto va con que
  • grandes y engorrosos (no es un problema en estos días)
  • difíciles de personalizar, debido a su complejidad

Ésta ha sido mi experiencia de aprendizaje y me permitirá estar mejor equipados para tomar una decisión sobre si ir con la solución de Microsoft (u otra tercera parte tan lutions) versus escribir el mío.

¿Qué tal su experiencia?

Respuesta

6

Son over-engineered y fue mi mayor problema con él, al final me deshice de él y no lo uso más.

No son lo suficientemente útiles, requieren demasiada configuración, modificaciones en el sistema y siguen cambiando cosas en ellos. Para agregar simplemente una funcionalidad de registro, finaliza, como pasar 2 días para hacerlo bien.

Hay bibliotecas por ahí que funcionan en 10 minutos como era de esperar.

+1

Muy cierto señor, +1 –

1

No he usado realmente ninguno de los bloques de la aplicación en la práctica, pero he leído la documentación y he analizado muestras.En mi opinión, pueden ser un buen recurso cuando se tiene que hacer algo rápidamente, pero, de lo contrario, es una buena manera de echarse atrás en una esquina cuando Microsoft lanza una actualización que no necesariamente funciona de la manera que usted desea.

Siempre he considerado que es mejor escribir mi propio registro y las instalaciones de manejo de excepciones. De esa forma, decido qué se agrega y quita según las necesidades de mi aplicación. En cuanto a reinventar la rueda, eso no me molesta demasiado. Prefiero construir algo según mis especificaciones, en lugar de utilizar algo construido según las especificaciones de la comunidad de programación general que tengo que modificar.

2

No los he usado mucho, principalmente porque algo más poderoso me ha influido. Por ejemplo, cuando se trata de excepciones fui con CodePlex.Diagnostics, un buen paquete que registra cosas en el servidor SQL. Muy simple y útil para una aplicación web. Para el registro, uso log4net bajo el control de Log4PostSharp. Por supuesto, uso PostSharp en lugar de PIAB, aunque solo sea porque la precompilación es, por definición, más rápida que los proxies dinámicos.

Una cosa interesante es el bloque de aplicaciones de Unity: parece haber tomado en serio algunas de las lecciones aprendidas por otros marcos DI, y en realidad es bastante fácil de usar (por supuesto, también PostSharp4Unity).

1

Los bloques de acceso a datos y manejo de excepciones (solo 2 que he usado) son excelentes si no está buscando nada más allá de las funciones básicas. Seguro que hay otros marcos más potentes, pero con una configuración mínima y una curva de aprendizaje muy poco profunda, puedes poner en marcha estos 2 bloques en muy poco tiempo.

Y como usan el patrón de fábrica, son fácilmente extensibles si es necesario. Personalizamos el bloque de Gestión de excepciones para mostrar todos los tipos de datos de Active Directory junto con la excepción que se lanza. Ha reducido nuestro tiempo de soporte a un pedazo decente.

1

¿Tiene una aplicación única para mantener? Verifique si un AB (o cualquier otro componente disponible) puede ayudarlo, probarlo y usarlo si pasa la prueba, de lo contrario no.

¿Tiene un conjunto grande y creciente de aplicaciones para mantener? Luego, vas a construir el mismo tipo de código para tratar, p. registro, autenticación & autorización, comunicación remota y problemas recurrentes similares (exactamente lo que depende de su negocio y entorno de TI); rodar su propio código o componentes para abordar los problemas (y mantenerlo!); o usa algo de la estantería. Por lo general, uno de estos enfoques (si no siempre) tiende a funcionar mejor con una gran cantidad de aplicaciones y la rotación de tareas dentro de su empresa. Adivina cual! (En particular, nunca subestime el tiempo que lleva capacitar a un nuevo desarrollador/mantenedor para que sea productivo en una aplicación de más de 2 años sin similitudes o componentes compartidos con otras cosas en las que haya trabajado anteriormente)

Mi uso de bloques de aplicaciones de MS fue hace varios años.En ese momento, el bloque de manejo de excepciones y el bloque de acceso a la base de datos ayudaron bastante; el registro AB fue razonablemente bueno (aunque preferí log4net por su control de grano fino); y la mayoría de los actuales AB no estaban allí. Mi opinión es que AB deficiencias de direcciones en el marco actual. Si tienen éxito (y realmente abordan los puntos débiles existentes), debe considerar que es probable que se trasladen a versiones futuras del marco, o que el lenguaje y/o el marco se extenderán para abordar los puntos problemáticos directamente.

El código nunca es excesivo o insuficientemente diseñado por sí mismo, solo para un propósito particular. El gran desafío al evaluar los componentes listos para usar es descubrir cuál es realmente ese propósito, en oposición a los manifiestos que hablan sobre el mercado o sobre optimistas para salvar el mundo y el fregadero de la cocina. MS 'P&P group parece muy alejado de los equipos de desarrollo de productos, y occasionally address the wrong problems con información insuficiente sobre las versiones de productos recientes ...

0

No los he usado desde .NET 1.1/early .NET 2.0 y era muy limitado con el Bloques de aplicaciones para datos Para ser sincero, realmente no he considerado usar nada últimamente y debería mirar y ver lo que tienen actualmente.

En la práctica, para mí ha sido más fácil escribir mi propia solución. Por lo general, veo algunos casos bastante específicos y tuve que superar algunos obstáculos para que las cosas funcionen de la manera que yo quería. Entonces, nuevamente, estaba haciendo más cosas de ASP.NET (que parece que hay muchos problemas con el desarrollo web en general) y ahora soy principalmente aplicaciones de Windows, lo que parece un poco más directo.

Creo que realmente tiene que ser caso por caso. Si funciona para usted y satisface sus necesidades, use lo que está allí. No es necesario dedicar tiempo a la recreación de algo cuando existe una solución perfectamente viable. Además, no hay ninguna razón para que tenga que actualizar a menos que cambie las versiones de la estructura, etc., si lanzan una nueva versión de la DLL. En mi experiencia de todos modos.

1

Estamos usando Unity con cierto éxito. Me opongo a los contenedores DI en general, pero si tiene que usar uno, Unity funciona lo suficientemente bien.

Estoy menos convencido de la mayoría de los demás. La biblioteca de registro en particular me ha estado volviendo loco. Enorme y sobredimensionado, y aún así codificado para algunos escenarios específicos (y simplificados), que requieren que usted vuelva a implementar cantidades absurdas de código para extender realmente la biblioteca con alguna funcionalidad bastante obvia. Y la documentación es incompleta sobre cómo personalizarla y configurarla, más allá de lo básico absoluto.

No veo mucho beneficio en el bloque de acceso a datos tampoco.

En general, no soy un gran admirador.

0

Estamos utilizando bloques de registro, manejo de excepciones y validación.

Mi experiencia con el registro AB ha sido similar a la tuya: te lleva el 95% del camino hasta allí. El Customizing no es fácil y lleva a todo tipo de sobrecarga (actualización, prueba en territorio desconocido, ...). Sin embargo, en general, no creo que hubiese sido más rápido, especialmente porque las opciones de configuración son muy útiles (no tanto durante el desarrollo, pero cuando se implementa, realmente me gusta tener el editor y activar/desactivar filtros en tiempo de ejecución, etc.). Escribí un pequeño resumen, ya que encontré que ofrecía muchas más opciones de las que necesitábamos (por ejemplo, gravedad/prioridad por separado: ¿cuál es la diferencia otra vez ?, etc.).

Manejo de excepciones que usamos por un tiempo corto, pero lo tiró. En definitiva, pensamos que era demasiada configuración. La configuración en app.config tiene un problema importante: no es modular (es decir, no se puede fusionar fácilmente la configuración proveniente de diferentes fuentes).

Validación: no es un gran ventilador. Sin ninguna razón en particular, simplemente no era aplicable mucho.

Así que, al final, solo usamos realmente un Logging AB personalizado. Llamar su conclusión onw sobre la utilidad de todo esto es;)

Así que estaría de acuerdo en que el AB de realidad no son orientación - ofrecen una amplia gama de opciones y que necesita para tomar su propia decisión sobre la forma de usarlo

Hemos tenido una mala experiencia al utilizar CAB (Composite UI AB). Desafortunadamente, estamos demasiado lejos para cambiarlo ahora, pero si hiciera el mismo proyecto nuevamente, no usaría CAB en absoluto. Simplemente no parece hacer todo lo que necesitamos, por lo que es más en el camino que cualquier otra cosa, y ofusca mucho de lo que está pasando.

Cuestiones relacionadas