miércoles, 7 de agosto de 2013

Servicio SOAP – Hibernate – WCF



El presente post es sobre las actualizaciones a al Servicio de ClientesService. Se describe paso a paso la secuencia de como llegar a ejecutar un proyecto en SOAP con Hibernate y WCF.

Servicio SOAP – Hibernate – WCF

1Creamos un Proyecto WCF dándole un nombre de Proyecto en este caso SOAPVeterinaria-Ponemos la ruta donde se guardará nuestro proyecto y también damos un nombre a la Solución que puede contener este y otros proyectos.



Base de Datos BD_Veterinaria - Tabla Cliente

 


2.      Es recomendable cambiar el nombre a la clase que por defecto viene con el nombre de IService1, en este caso lo renombramos por “IClientesService”, de igual manera con el archivo *.svc que lo renombraremos por “ClientesService”. De esta manera podemos localizarlos más rápidamente. Un tip es localizarnos en el nombre del archivo para cambiarlo de nombre apretando las teclas Ctrl R + Ctrl R.




3.      Previamente a este paso agregamos 2 carpetas (Dominio y Persistencia)

La Capa de Dominio: Esta capa debe estar presente dentro del sistema que se desee desarrollar. En ella está contenido nuestro modelo conceptual, mejor conocido como modelo de dominio. Este modelo consiste en todas aquellas entidades (facturas, productos, órdenes de compra, etc.) y actores (clientes, bancos, empleados, etc.) que componen y/o interactúan en los procesos del negocio, y son creadas a raíz de la abstracción de sus atributos significativos para el sistema.  

  • En esta carpeta agregamos una clase Clientes con lo siguiente y un archivo XML Clientes.hbm.xml

La Capa de Persistencia: En esta capa se da el almacenamiento de información en un medio no volátil (bases de datos, archivos de texto plano, etc). Los elementos de esta capa típicamente funcionan como objetos de acceso a datos o DAOs (Data Access Objects), proveyendo métodos para leer y almacenar los datos de los objetos de negocio. Es por esto que la existencia de esta capa típicamente está condicionada a la existencia de la capa de dominio. Si no hay un modelo de dominio presente, no hay razón para hacerlo persistente.

  • En esta carpeta agregamos las clases ConexiónUtil, BaseDAO, ClienteDAO y NHibernateHelper.



  • Agregamos las Librerias Iesi.Collection.dll y NHibernate.dll a nuestro Solución y las agregamos en la carpeta References (Click Derecho/Agregar Referencia/Examinar y ubicamos los archivos) 





4. En el clase Cliente de la Capa Dominio codeamos lo siguiente:



 5. En el archivo XML Clientes.hbm.xml de la Capa Dominio codeamos lo siguiente: 



  •  Recordar este paso que es ir a la propiedad Acción de Compilacion del archivo xml, poner Recurso Incrustdo.




6. En el archivo IClientesService codeamos lo siguiente: 


 8. En la clase ConexionUtil de la capa de Persistencia codeamos lo siguiente:



9. En la clase HBibernateHelper(crea la SessionFactory y utiliza HttpContext para mantener una
session) de la capa Persistencia codeamos lo siguiente:




10. El la clase BaseDAO de la capa de Persistencia codeamos lo siguiente



 

  11.  El la clase ClienteDAO de la capa de Persistencia codeamos lo siguiente



12.  En el archivo Clientes.svc codificar lo siguiente.:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SOAPServices.Persistencia;
using SOAPServices.Dominio;

namespace SOAPServices
{
    public class Clientes : IClientes
    {
        private ClienteDAO clienteDAO = null;
        private ClienteDAO ClienteDAO
        {
            get
            {
                if (clienteDAO == null)
                    clienteDAO = new ClienteDAO();
                return clienteDAO;
            }
        }

    public Cliente CrearCliente(string ClienteNombre, string ClienteApellidos, string NumDocumento)
    {
            Cliente v = new Cliente()
            {
                txtClienteNombre = ClienteNombre,
                txtClienteApellido = ClienteApellidos,
                NumDocumento  = NumDocumento
            };
            try
            {
                List<Cliente> a = ListarCliente();
                foreach (Cliente i in a)
                {
                    if (i.NumDocumento == NumDocumento)
                        throw new FaultException("Cliente Ya existe, por favor ingresar nuevamente.");
                }
            }

            catch (FaultException ex)
            {
                throw ex;
            }
            return ClienteDAO.Crear(v);

        }

   public Cliente ObtenerCliente(int codigo)
        {
            return ClienteDAO.Obtener(codigo);
        }

   public Cliente ModificarCliente(int Codigo, string ClienteNombre, string ClienteApellidos, string NumDocumento)
        {
            Cliente v = new Cliente()
            {
                idCliente = Codigo,
                txtClienteNombre = ClienteNombre,
                txtClienteApellido = ClienteApellidos,
                NumDocumento = NumDocumento
            };
            return ClienteDAO.Modificar(v);
        }

   public void EliminarCliente(int codigo)
        {
            Cliente v = ClienteDAO.Obtener(codigo);
            ClienteDAO.Eliminar(v);
        }

   public List<Cliente> ListarCliente()
        {
            return ClienteDAO.ListarTodos().ToList();
        }
    }
}
 
13. Hacer click derecho en el archivo Clientes.svc (Click derecho, ver en el explorador y copiar la dirección que muestre en pantalla.


14. Abrirmos el  El el archivo WcfTestClient para verificar nuestro código realizado. Este archivo se encuentra en la carpeta \Common7\IDE\ donde hayamos instalado Visual Studio. Agregamos un nuevo servicio que es el que copiamos anteriormente

Nota: WCF: es un marco de trabajo para la creación de aplicaciones orientadas a servicios. Con WCF, es posible enviar datos como mensajes asincrónicos de un extremo de servicio a otro.







15. En este paso podemos visualizar los métodos Crear, Obtener,Modificar, Eliminar y Listar. Solo escogemos cualquiera y damos click en el botón Invoke. En este ejemplo se muetra el método Listar, que es justamente esa labor la que realiza, el listar todos los clientes de nuestra base de datos de la tabla Cliente.











No hay comentarios:

Publicar un comentario