2010-01-15 7 views
5

Estoy trabajando en un proyecto de biblioteca .NET, que contiene un conjunto de interfaces que pueden ser consumidas por un servicio, que también estoy creando. Los usuarios del servicio proporcionarán implementaciones de las interfaces de la biblioteca, que luego se inyectarán en la aplicación de servicio.Cuándo incluir/copiar código de terceros, en lugar de referencia/vincularlo?

Mi biblioteca se basa en una biblioteca de terceros, que por supuesto necesitaré hacer referencia. Una de las interfaces en mi biblioteca utiliza tipos de terceros en sus firmas de métodos. Esto significa que los implementadores de esta interfaz particular también necesitarán hacer referencia a la biblioteca de terceros. Mi preocupación es que esto agrega fricción, lo que distrae al usuario de hacer el trabajo que realmente debe hacer, implementar esa interfaz.

Una solución a este problema sería incluyen los archivos de origen de la biblioteca de terceros de construcción, en lugar de que hacen referencia a ella como un conjunto separado. Soy consciente de que esto podría hacer que sea un poco más difícil para mí integrar las actualizaciones del código de terceros en el futuro, pero aparte de eso, ¿hay alguna razón por la que no deba considerar esta opción? ¿Cuándo incluye código de terceros en lugar de referenciarlo?

Notas: La biblioteca de terceros en cuestión es bastante pequeña (menos de 10 clases, total 1500 SLOC), y está disponible bajo la licencia de código abierto como mi proyecto (Apache License 2.0).

Respuesta

4

Sería muy reacio a incluir el código fuente en su propio proyecto. Sí, su usuario necesita agregar otra referencia ... pero eso significa que ellos saben de dónde viene. Tal vez querrán usarlo en otro lugar; tal vez incluso usarán otro proyecto con la misma biblioteca de terceros. No quiere terminar con múltiples copias del mismo tipo.

Además, mantenerlo como una biblioteca separada facilitará la actualización a medida que cambie la biblioteca de terceros.

Hay algunos proyectos que explícitamente le dan una versión de "archivo de origen único" de la biblioteca para facilitar la inserción dentro de un proyecto. (linqbridge, por ejemplo). Eso cambia las cosas un poco; en ese punto, creo que es más razonable incluirlo si así lo desea. Pero para proyectos "normales" solo agregaría la referencia.

0

En su caso, definitivamente agregaría la referencia, no la fuente.

No veo el beneficio al agregar la fuente. Como dices correctamente, será más difícil integrar actualizaciones. Además, para una actualización, usted necesita para reconstruir.

Mi recomendación: agregue la referencia y simplemente agregue un comentario en la definición de la interfaz, dónde obtener la biblioteca y por qué la está usando.

Cuestiones relacionadas