Pregunta

Tenemos algunos proyectos que implican la creación de una aplicación que se compone quizás de un 50% de funcionalidad personalizada, pero luego incorpora, por ejemplo, una wiki, un foro y otros componentes que son "ruedas" que ya han sido inventadas y que no conocemos. deseo reescribir desde cero.

Estas aplicaciones de terceros suelen tener sus propias bases de datos, temas y sistemas de autenticación.En mi experiencia, hacer que cosas funcionen como un inicio de sesión único, o un tema común, o etiquetar/buscar entre entidades en múltiples subaplicaciones son problemas bastante desafiantes.¿Cuáles son algunas de las mejores prácticas para este tipo de proyecto de integración?

Nuestro enfoque, hasta ahora, ha sido intentar seleccionar los componentes con cuidado, eligiendo aquellos que tengan una API claramente definida, preferiblemente a través de HTTP (como REST o SOAP), aunque eso no siempre es posible (no hemos encontrado una API decente). foro que funciona de esa manera).¿Hay sugerencias que la gente pueda dar a cualquiera que intente hacer esto, como sospecho que muchos de nosotros lo hacemos cada vez con más frecuencia en estos días?

¿Fue útil?

Solución

Asegúrese de que la interfaz entre su aplicación y la aplicación o biblioteca de terceros sea tal que pueda reemplazarla fácilmente con otra cosa por si acaso.En algunos casos, el software de terceros puede ser simplemente una implementación de una API estándar (Java hace esto mucho con JDBC, JMS, JNDI,...).En otros casos, esto significa empaquetar la biblioteca de terceros en alguna API que se le ocurra.

Por supuesto, hay ocasiones en las que se debe tirar esa idea por la ventana y tener las cosas estrechamente integradas con el software de terceros.Sólo asegúrese de que REALMENTE desea vincular su aplicación a ese tercero.Una vez que recorre este camino, es REALMENTE difícil volver atrás y cambiar de opinión.

Otros consejos

Si opta por bibliotecas de código abierto, elija aquellas con una buena licencia.Descubrí por las malas (al intentar fabricar una aplicación OEM) que muchas empresas evitan licencias como LGPL.No entraré en detalles sobre por qué, pero prefieren licencias estilo Apache, BSD o MIT.

Elija herramientas que hayan existido por un tiempo.Echa un vistazo a la comunidad y asegúrate de que esté activa.Vea lo que otras personas están usando y utilice esas herramientas.

Elija tecnologías que funcionen bien juntas.He creado una aplicación que utiliza ORM y servicios web.Spring Framework + Apache CXF + JPA para ORM crearon una buena pila de tecnología.Todas las herramientas que uso se unen fácilmente en Spring, lo que facilita su uso conjunto.Lo último que querrías hacer es elegir herramientas para las que tengas que escribir un montón de código solo para usarlas juntas.

Elija tecnologías que se basen en estándares.De esa manera, si la biblioteca o herramienta deja de funcionar, podrá cambiar fácilmente a otra que utilice el mismo estándar.

Donald Knuth dijo que incluso mejor que el código reutilizable es código modificable, por lo que si no hay API, debe buscar una aplicación de código abierto que esté bien escrita y, por lo tanto, sea posible personalizarla.

En cuanto a las bases de datos, los sistemas de inicio de sesión y otras partes de programación (no veo cómo, por ejemplo,la temática podría beneficiarse), también puede intentar, dependiendo de las circunstancias, envolver el material para que el módulo crea que está solo, pero en realidad habla con su código.

Mi enfoque ha sido utilizar código de terceros para algunas funciones principales.Por ejemplo, uso Subsonic para el acceso a mis datos, componentes Devexpress para la interfaz de usuario y Peter Blum Data Entry Suite para la entrada y validación de datos.Subsonic es de código abierto, los controles de Devexpress Peter Blum tienen el código fuente disponible por una tarifa adicional.Sería imposible para mí obtener la funcionalidad de estos controles si intentara escribirlos yo mismo.

Este enfoque me permite centrarme en la funcionalidad personalizada de mi aplicación sin tener que preocuparme por cómo accederé a la base de datos o cómo hago una lista de árbol editable que se vea bonita.Claro que no tengo un foro completamente configurado y funcional, pero sé que usaré una base de datos SQL para mi aplicación y no tendré que intentar conseguir que diferentes componentes de almacenamiento de datos funcionen juntos.No tengo una wiki, pero sé cómo usar los componentes de la interfaz de usuario de Devexpress y formatear y validar la entrada de datos es muy sencillo con los controles de Peter Blum.En otras palabras, aprenda herramientas (y, por supuesto, elíjalas con cuidado) que acelerarán el desarrollo de todos sus proyectos y luego podrá concentrarse en partes de su aplicación que deben personalizarse.

No me preocupa demasiado si es de código abierto o no, siempre que el código fuente esté disponible.Si es de código abierto, hago una donación al proyecto.Si es un componente comercial pagaré un precio justo.En cualquier caso, las herramientas ayudan a que la programación sea divertida y los resultados tienen integridad de datos y una apariencia excelente.Si desarrollo un wiki o un foro, sé que puedo lograr que funcionen juntos sin problemas.Finalmente, todas las herramientas que he mencionado existen desde hace mucho tiempo y están escritas por desarrolladores destacados con gran reputación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top