Pregunta

Estoy interesado en leer sobre las diversas formas en que otros desarrolladores y arquitectos tratan con la personalización de ciertas áreas de sus aplicaciones para ciertos sitios. Llamadas al procesamiento previo y posterior implementado por el cliente, eventos que hacen lo mismo, permitiendo que se anulen los métodos de lógica de negocios, utilizando estrategias con módulos conectables, procesos configurables de datos, p. motores de reglas, secuencias de comandos, etc.

La lista podría continuar, pero pregunto quién utilizó qué y cuáles son los pros y los contras de cada uno de estos enfoques, así como también qué otros enfoques hay.

Esto supone que no creamos una rama de código específica del cliente para acomodar estas personalizaciones.

¿Fue útil?

Solución

MS está trabajando en dos marcos diferentes para esto en .NET: el Marco de Extensibilidad Administrada y System.Addin.

Probablemente, la forma más común en que las aplicaciones exponen la extensibilidad es a través de Inyección de dependencia / Inversión de control mezclado con resolución de tipo de tiempo de ejecución. Eso significa que dejas que una entidad externa "inyecte" la implementación de una interfaz en tiempo de ejecución en lugar de vincularse a una implementación específica en tiempo de compilación. A su código no le importa si su IRepository está escrito por su empresa o por un tercero. Al codificar contra interfaces y usar marcos DI / IOC (este enlace proporciona una excelente visión general de los marcos .NET) permite que su aplicación sea fácilmente personalizable.

Otros consejos

Tendería a construir todo modular y luego agregar cosas al programa cuando el cliente las solicite. Puede combinar esto con la configuración de la aplicación que el cliente puede controlar, permitiéndole agregar y quitar módulos por su cuenta. En ese caso, todo lo que estaría haciendo es establecer una configuración predeterminada.

Una forma sería incrustar un lenguaje de secuencias de comandos (python y javascript parecen ser populares) y exponer partes importantes de la API a través de la extensión de secuencias de comandos. Es posible que también le resulte más fácil implementar partes de su aplicación en el lenguaje de secuencias de comandos.

Para los productos con los que trabajo, las personalizaciones creadas por el grupo Servicios para un cliente determinado o, a veces, por los propios clientes, se comparten con el resto del equipo (por las cosas que hemos hecho) y, a menudo, se obtienen `` productizado '' en versiones posteriores.

Admitimos una [casi] API de acceso completo que se puede usar para hacer [casi] cualquier cosa que las GUI puedan hacer, pero de manera automatizada.

Alentamos a los clientes a escribir scripts personalizados y luego compartirlos con nosotros. El crecimiento de los usos disponibles de un producto a través de extensiones, ya sea que sean compatibles oficialmente o sigan siendo herramientas de la comunidad, ayuda a generar buena voluntad entre su base de clientes.

Para las personalizaciones que creamos, el trabajo inicial, mientras se factura a un cliente específico, se puede implementar rápidamente en otro lugar, permitiendo a los usuarios actuales y futuros una mayor flexibilidad al usar el producto.

Descubrí que crear su aplicación como una biblioteca de módulos accesibles desde un buen lenguaje de scripts incorporado ( Lua fue creado exactamente para esto!) le brinda toneladas de flexibilidad, no solo para los usuarios; pero para ti también.

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