No soy fanático de los procedimientos almacenados
Los procedimientos almacenados son MÁS mantenibles porque: * No tiene que volver a compilar su aplicación C # cada vez que quiera cambiar algo de SQL
Terminará recompilándolo de todos modos cuando los tipos de datos cambien, o desee devolver una columna adicional, o lo que sea. El número de veces que puede cambiar 'transparentemente' el SQL desde debajo de su aplicación es bastante pequeño en general
- Terminas reutilizando el código SQL.
Los lenguajes de programación, C # incluido, tienen esta increíble cosa, llamada función. ¡Significa que puede invocar el mismo bloque de código desde múltiples lugares! ¡Asombroso! Luego puede poner el código SQL reutilizable dentro de uno de estos, o si desea obtener tecnología realmente alta, puede usar una biblioteca que lo haga por usted. Creo que se llaman asignadores relacionales de objetos, y son bastante comunes en estos días.
¡La repetición de código es lo peor que puede hacer cuando intenta crear una aplicación que se pueda mantener!
De acuerdo, por eso los programas almacenados son algo malo. Es mucho más fácil refactorizar y descomponer (dividir en partes más pequeñas) el código en funciones que SQL en ... ¿bloques de SQL?
Tiene 4 servidores web y un montón de aplicaciones de Windows que usan el mismo código SQL. Ahora se dio cuenta de que hay un pequeño problema con el código SQl, así que prefiere ... cambiar el proceso en 1 lugar o insertar el código en todos los servidores web, reinstale todas las aplicaciones de escritorio (clickonce podría ayudar) en todos los cuadros de Windows
¿Por qué sus aplicaciones de Windows se conectan directamente a una base de datos central? Eso parece un enorme agujero de seguridad allí mismo, y un cuello de botella, ya que descarta el almacenamiento en caché del lado del servidor. ¿No deberían conectarse a través de un servicio web o similar a sus servidores web?
Entonces, ¿empuja 1 nuevo sproc o 4 nuevos servidores web?
En este caso, es más fácil empujar una nueva sproc, pero en mi experiencia, el 95% de los 'cambios empujados' afectan el código y no la base de datos. Si está enviando 20 cosas a los servidores web ese mes, y 1 a la base de datos, difícilmente perderá mucho si en cambio empuja 21 cosas a los servidores web y cero a la base de datos.
Código revisado más fácilmente.
¿Puedes explicar cómo? No entiendo esto. Particularmente, ya que los sprocs probablemente no están en el control de fuente y, por lo tanto, no se puede acceder a ellos a través de navegadores SCM basados en web, etc.
Más contras:
Los Storedprocs viven en la base de datos, que aparece en el mundo exterior como una caja negra. Cosas simples como querer ponerlos en control de la fuente se convierten en una pesadilla.
También está la cuestión del puro esfuerzo. Puede tener sentido dividir todo en un millón de niveles si está tratando de justificar a su CEO por qué solo les costó 7 millones de dólares construir algunos foros, pero de lo contrario, crear un procedimiento almacenado para cada pequeña cosa es simplemente un trabajo de burro adicional para nada beneficio.