none
Sp - Reglas de Negocios RRS feed

  • Pregunta

  • Amigos

     

    Tengo el siguiente problema y no se cual es la mejor solucion y me gustaria que si tienen experiencia en el tema me den su opinion.

     

    La idea de una empresa es migrar su sistema a .Net ok?. El sistema actual cuenta aproximadamente con el 80% de programacion del lado del servidor, es decir.......se invoca constantemente a SP para realizar casi todas las tareas. La interfaz son formularios windows con minima programacion, solamente se valida el ingreso de los datos para luego llamar a los SP.

    Obviamente el sistema no es flexible ni mucho menos.

     

    Como se podrian pensar esos SP en forma de objetos en .net?. La reingenieria que se haria apuntaria a 3 capas.

    Como se puede o opinan que seria la mejor manera de realizar dicha migracion?.

    Les cuento que se lo implemento de esa forma (casi todo con sp) porque las maquinas de los clientes eran pobres de recursos en su epoca, entonces le mandaban toda la carga al server.

     

    Por donde se empieza en una situacion asi a pensar en objetos para la arquitectura de 3 capas?.

     

    Gracias

     

     

    lunes, 7 de mayo de 2007 7:42

Todas las respuestas

  • Hola   _El_Hindu:

     

    Para nada tienes que deshacer esos SP, perfectamente puedes montar una arquitectura en 3 capas y las tareas de base de datos como SELECT, UPDATE, DELETE e INSERT montarlas en esos SP y eso desacoplará aun mas tu aplicación que tener las sentencias sql directamente en tu código fuente, puesto que si modificas el código de un SP que no afecte a tu lógica de negocio no tendrás que recompilar tu aplicación, y en los objetos de negocio puedes llamar a su respectivo SP para recuperar datos, o salvar su estado en DB. espero que  me captes la idea.

     

    Sobre donde empezar con arquitectura en 3 capas para aplicaciones Windows no te puedo ayudar mucho puesto que mi trabajo se basa todo en desarrollos Web y SAP.

     

    Salu2

     

    Colabora con el foro: Si la respuesta te es de utilidad marca la pregunta como respondida.

    Luis Ruiz Pavón

    MCP

    Blog: http://geeks.ms/blogs/lruiz

    lunes, 7 de mayo de 2007 7:51
  • Por favor Hindu, abre un sólo hilo para una sola pregunta.

     

    Ahora que todavía estás a tiempo elimina el mensaje:

     http://forums.microsoft.com/MSDN-ES/ShowPost.aspx?PostID=1565961&SiteID=11

     

    Gracias de antemano!

     

    PD: Me alegra volverte a ver Luis, todavía no te había leido desde tu viaje. Saludos!!!

    lunes, 7 de mayo de 2007 7:56
  • Gracias Toni Wink

     

    Pues la verdad es que hoy es el primer día que escribo, he estado un poco pocho Wink

     

    Salu2

     

    Colabora con el foro: Si la respuesta te es de utilidad marca la pregunta como respondida.

    Luis Ruiz Pavón

    MCP

    Blog: http://geeks.ms/blogs/lruiz

    lunes, 7 de mayo de 2007 7:57
  • Esos excesos!!!!
    lunes, 7 de mayo de 2007 7:59
  •  

    Hola chicos...

     

    Hacia mucho que no coincidiamos todos en un hilo jejejeje

     

    Yo a parte de lo ya dicho... pues me gustaria aportar mi granito de arena poniendo el articulo sobre arquitectura de la web que escribi hace ya un tiempo:

     

    http://www.moreplus.es/index.aspx?accion=articulo&id=31

     

    A lo mejor le puede sevir para darle alguna idea.

     

    Un saludo compañeros.

    lunes, 7 de mayo de 2007 8:05
  • A ver...........

     

    Entiendo tu punto y me parece mas que razonable pero te cuento esto: la aplicacion a la que hago mencion funciona para sql server, oracle e informix, se vendio a 3 empresas diferentes, entonces ante cualquier cambio de requerimientos hay que cambiar todos los sp en sus tres versiones, entiendase.......para sql server....oracle e informix. Entonces mi duda apunta ahi, porque con la capa de acceso a datos haria independiente el acceso a cualquier motor, pero no asi en las llamadas a los sp, porque si o si los tendria que crear en sus tres versiones. Lo que yo pensaba era tener una sola aplicacion (no se como armarla) para que mas alla de cualquier motor solo deba cambiar las cosas una sola vez y funcione.

     

    Se entiende la idea???????

     

    Actualmente ante cualquier cambio, tres personas diferentes reflejan esos cambios en los motores correspondientes, justamente no se quiere mas eso.

     

    Como armaria mi capa de acceso a datos????????.......si actualmente tengo el mismo sistema pero x 3, es decir uno escrito para informix, oracle y sql server ( los sp)........no se me ocurre como, porque la sintaxis en los 3 motores cambia.

     

    Otra cosa, como explicarian ud la capa de........negocios, es decir mucha gente la nombra pero no se exactamente que seria o porque se llama asi............capa de negocios, entiendo la de acceso a datos y la de presentacion, pero jamas entendi que va en la de negocios.......ni mucho menos porque se llama asi.

     

    Se entiendo mejor el problema ahora?..........ademas..........hablamos de........casi 450 sp, y se podran imaginar que si llegado el caso una empresa tiene por ejemplo.........otro motor que no sea esos 3 ..........hay que reescribir todaaaaaaa la aplicacion nuevamente.

     

    La verdad no veo una solucion o si llegado el caso que ganaria migrando a .net si me dicen que no cambie los sp...

    lunes, 7 de mayo de 2007 8:52
  •  

    Hola...

     

    Puedes crear tu capa de acceso a datos usando ODBC que es compatible con todas las bases de datos.

     

    De tal forma que luego solo tendrias que cambiar la cadena de conexion en el webconfig para acceder a una base o a otra.

     

    Y cambar tus SP respentando siempre los nombres obviamente.

     

    ....

     

    Explicacion sencilla del modelo tres capas:

     

    El aceso a datos solo tiene la menera en la que te conectas a la base de datos, los metodos de consulta y actualizacion de base de datos..

     

    En la capa de negocio tienes las funciones y argoritmos con los que tratas los datos para dejarlos tal y como los necesitas para presentarlos en tu aplicacion o insertarlos en tu base de datos. (y tal vez si usas objetos de negocio... para rellenarlos con los datos y jugar con ellos)

     

    Y la capa de presentacion solo tiene el codigo necesario para que esos datos ya tratados que te ha proporcionado la capa de negocio, se muestren al usuario... o que le permita mediante un interfaz bonito enviar datos a la capa de negocio para que esta los trate para poder insertarlos en BD.

     

    Espero que te sirva compañero.

     

    Un saludo.

    lunes, 7 de mayo de 2007 9:20
  • Bien, vayamos por partes:

     

    Para un volumen tan grande de sp's, y con tres versiones, una para cada tipo de servidor, puedes planterarte el uso de generadores de código, que automaticen todo este proceso. Yo al menos lo hago así.

     

    http://www.codesmithtools.com/

     

    En cuanto a la capa de negocios, se llama así, porque es la que incluye toda la lógica del negocio. Todos los procesos deben implementarse fuera de las capas de usuario y de datos, dejándo en la interfaz tan sólo las validaciones de datos sencillas, programando todos los procesos en la capa de lógica. Para entender las mejores prácticas en esta materia (es un tema muy extenso) te recomendaría el siguiente libro:

     

    Expert VB and C# 2005 Business Objects books (http://www.lhotka.net/)

     

    Venga, un saludo!

    lunes, 7 de mayo de 2007 9:29
  • Si necesitas abstraer el sistema gestor de base de datos, te recomiendo que utilices las Factories de Enterprise Library. Por ejemplo yo tengo una aplicación en 2 clientes diferentes, una sobre SQL y otra sobre Oracle y funcionan bien.

     

    Salu2

     

    Colabora con el foro: Si la respuesta te es de utilidad marca la pregunta como respondida.

    Luis Ruiz Pavón

    MCP

    Blog: http://geeks.ms/blogs/lruiz

    lunes, 7 de mayo de 2007 10:16
  • Hola que tal, leyendo un poco este tema veo que se puede hacer que funcione la capa de negocio indistintamente de la base de datos  (oracle, sqlserver, etc) trabajando con .net.

    El problema que tengo yo es similar solo que desde oracle, es decir la aplicacion esta echa en oracle y trabaja directamente a la base pero queremos crear la capa de negocio para trabajar indistintamente de oracle, ya que se va a implementar un programa adicional en .NET.

    La capa de negocio recibira los parametros necesarios tanto del uno como del otro para interpretarlos y actualizar la base lo cual no es muy complicado. ahora el inconveniente es de la capa de negocio hacia la base ya que se quiere hacer un standar q funcione indistintamente de la base de datos sin tener q hacer un SP para cada una.

    Existe alguna manera para poder tener esto.??

    Gracias de antemano.

    Saludos
    Cococho
    viernes, 18 de mayo de 2007 15:32