¿Debo preferir comprar un marco comercial o crear mi propia versión de la misma funcionalidad? (Classic "Crear vs comprar") -- # camp Relacionados El problema

Should I prefer purchasing a commercial framework or creating my own version of the same functionality? (classic “Create vs Buy”)


3
vote

problema

Español

Tengo vistas mixtas sobre las bibliotecas de clase comercial. ¿Estoy mejor en una biblioteca de clase comercial o a partir de cero? Si comprar una biblioteca es el camino a seguir, ¿cuál para un desarrollador C #?

Original en ingles

I have mixed views about commercial class libraries. Am I better off using a commercial class library or starting from scratch? If buying a library is the way forward which one for a C# developer?

  
 
 

Lista de respuestas

8
 
vote

Ponga un valor en su tiempo, digamos $ 30 por hora. Estime cuánto tiempo le llevaría escribir la biblioteca, luego agregar dos veces para la depuración y las pruebas. Resta el tiempo que lo llevará a aprender a usar la biblioteca comercial con la documentación dada. Multiplica por tu tarifa por hora. Comparar.

Escritura Una biblioteca puede ser divertida y gratificante, pero el síndrome de "no inventado aquí" evita que muchas compañías creen algo útil, ya que están atrapados reinventando la rueda por un costo adicional. Asegúrese de que sea extensible (si no obtiene acceso a la fuente) y tiene lo que necesita. Comprarlo.

Como un proyecto personal, es probable que valga la pena escribirlo desde cero al menos una vez para ver lo que puede aprender, pero en la empresa Dime, debe ser productivo y eficiente.

o escríbalo desde cero y suelte la fuente abierta;)

 

Put a value on your time, say $30 an hour. Estimate how long it would take you to write the library, then add two times that for debugging and testing. Subtract the time it's going to take you to learn how to use the commercial library with the given documentation. Multiply by your hourly rate. Compare.

Writing a library can be fun and rewarding, but "not invented here" syndrome keeps a lot of companies from creating anything useful, as they're stuck reinventing the wheel for additional cost. Make sure it is extensible (if you don't get access to the source) and has what you need. Buy it.

As a personal project, it's probably worth writing it from scratch at least once to see what you can learn, but on company dime you need to be productive and efficient.

Or write it from scratch and release it open source ;)

 
 
6
 
vote

Realmente creo que te estás perdiendo la estrategia más importante:

  • Utilice la fuente abierta y contribuya de nuevo a la comunidad.

He visto a muchas integraciones de software comercial, generalmente debido a las demandas de la vida real que no se cumplen con el producto comercial, muchos de los cuales no descubres hasta que está profundamente comprometido (oh, por lo que querías buscar ¿No tiene un límite superior de 1000 respuestas? No, no podemos hacerlo ...)

Si estas cosas te suceden con la fuente abierta, al menos siempre tiene la opción de bifurcación.

 

I really think you are missing out the most important strategy:

  • Use open source and contribute changes back to the community.

I have seen lots of commercial software integrations go bad, usually because of real-life demands that are not met by the commercial product, many of which you do not discover until you are deeply committed (oh, so you wanted search to NOT have an upper limit of 1000 responses? No, we can't do that...)

If these things happen to you with open source, you at least always have the option of forking.

 
 
 
 
2
 
vote

Siempre use una biblioteca de buena calidad siempre que sea posible, pero solo si puede tener el código fuente. La experiencia me dice que no use nada de lo que no pueda tener la fuente.

Además, dependiendo de lo que sea la biblioteca, a veces es sensible tener una capa encima de ella para reducir las dependencias, lo que hace que cualquier reemplazo futuro de una biblioteca sea más fácil.

 

Always use a good quality library wherever possible - but only if you can have the source code. Experience tells me to not use anything that I can't have the source for.

Also - depending on what the library is, it is sometimes sensible to have a layer on top of it so you reduce dependencies, thus making any future replacement of a library easier.

 
 
0
 
vote

Eso depende de tus metas. Si desea experimentar y aprender sobre una determinada función de marco, tiene sentido intentar implementarlo.

Sin embargo, si está tratando de ganar dinero (o fama o lo que sea) en su software, debe preguntarse cómo pasar mejor el tiempo. ¿Cuánto valor agrega a la aplicación implementando otra lista vinculada? Probablemente no sea mucho, así que use las buenas implementaciones disponibles. Por otro lado, puede agregar valor a su aplicación implementando un control gráfico muy específico (aunque hay mucho en el mercado). Así que míralo desde un retorno del punto de vista de inversión.

 

That depends on your goals. If you want to experiment and learn about a certain framework feature it makes sense to try to implement it.

However, if you're trying to make money (or fame or whatever) on your software, you should ask yourself how to best spend your time. How much value do you add to the application by implementing yet another Linked List? Probably not a lot, so use whatever good implementations available. On the other hand, you could add value to your application by implementing a very specific graph control (although there are plenty on the market). So look at it from a return on investment point of view.

 
 

Relacionados problema

141  Llenando un conjunto de datos o un DataTable desde un conjunto de resultados de consulta LINQ  ( Filling a dataset or a datatable from a linq query result set ) 
¿Cómo expone una consulta LINQ como un servicio web de ASMX? Por lo general, desde el nivel de negocios, puedo devolver un double20 998877766220 998877766...

80  ¿Cómo imprimo un documento HTML de un servicio web?  ( How do i print an html document from a web service ) 
Quiero imprimir HTML desde un servicio web C #. El control del navegador web está exagerado, y no funciona bien en un entorno de servicio, ni funciona bien en...

1955  ¿Cómo calculo la edad de alguien en función de un cumpleaños tipo DateTime?  ( How do i calculate someones age based on a datetime type birthday ) 
Dado un Form5 que representa el cumpleaños de una persona, ¿cómo calculo su edad en años? ...

107  ¿Cómo obtengo una lista distinta y ordenada de nombres de un DataQ usando LINQ?  ( How do i get a distinct ordered list of names from a datatable using linq ) 
Tengo un DataTable con una columna Name . Quiero generar una colección de los nombres únicos ordenados alfabéticamente. La siguiente consulta ignora la clá...

65  Decodificación T-SQL FUNCIONES EN C # / VB.NET  ( Decoding t sql cast in c vb net ) 
Recientemente, nuestro sitio ha sido desalentado con el resurgimiento de la asprox botnet inyección de SQL Ataque. Sin entrar en detalles, el ataque inten...

55  Comprimiendo / descomprimiendo carpetas y archivos  ( Compressing decompressing folders files ) 
¿Alguien sabe de una buena manera de comprimir o descomprimir archivos y carpetas en C # rápidamente? Manejo de grandes archivos podría ser necesario. ...

105  Temporizador confiable en una aplicación de consola  ( Reliable timer in a console application ) 
Soy consciente de que en .NET Hay tres tipos de temporizador (consulte Comparando las clases de temporizador en la biblioteca de clase de Framework ). H...

1563  Calcular el tiempo relativo en C #  ( Calculate relative time in c sharp ) 
Dado un valor específico double16 , ¿cómo mostrar el tiempo relativo, como: hace 2 horas hace 3 días hace un mes ...

65  Punto flotante Número de análisis: ¿Hay un algoritmo de captura?  ( Floating point number parsing is there a catch all algorithm ) 
Una de las partes divertidas de la programación multicultural son los formatos de números. Los estadounidenses usan 10,000.50 los alemanes usan 10.000,50...

701  Cómo convertir decimal a doblarse en C #  ( How to convert decimal to double in c sharp ) 
Quiero usar un Track-Bar para cambiar una opacidad double1 . Este es mi código: decimal trans = trackBar1.Value / 5000; this.Opacity = trans; Cuan...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos