Como crear un servicio web con MVC, WCF por medio de capas conectando con una BD. (Paso a Paso) “Primero resuelve el problema. Entonces, escribe el código.” — John Johnson Todo programa hace algo perfectamente bien, aunque no sea exactamente lo que nosotros queremos que haga. R.S. Pressmann Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Requisitos previos: Tener instalados SQL Server 2005 o 2008 SQLEXPRESS o MANAGEMENT (cualquiera) o ya sea MYSQL. ( para este caso vamos a utilizar SQL 2008). Visual Studio 2008 + Service Pack 1 Instalar MVC 2.0 Tener configurado en IIS 7 o superior Y por ultimo mucha paciencia jajaja Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Primero vamos a crear una BD (base de datos) en SQL SERVER 2008, en la cual vamos a utilizar para almacenar nuestra información (para este caso vamos a crearla a pie es decir manualmente). Elegir la ubicación en el cual la base de datos va a ser creada. Copiar la dirección exacta de la carpeta en la cual se va a guardar la BD, en este caso es en: C:\BD tutorial Creamos la BD con el nombre Tutorial y con las características que se pueden observar Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Una vez creada la BD ahora vamos a crear la tablas en la cual vamos a utilizar: Ahora damos clic derecho en databases y refrescar (en la barra izquierda del Object Explorer). Podemos ver la BD Tutorial y la tabla Cliente con los campos Id y Nombre Ahora vamos a crear un procedimiento almacenado llamado Insertar_Cliente, en la BD de Tutorial le damos clic derecho actualizar….. por este lado es todo en la BD ahora procederemos a crear la aplicación. Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © 1. Primero ejecutamos Visual Studio 2008 como administrador (clic derecho ejecutar como administrador), esto para tener todos los privilegios y no tener problemas en el futuro. Ahora vamos a File-> new -> Project Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Seguidamente vamos a seleccionar Asp.Net MVC 2 Web Aplicación (asegúrese de no crear un Asp.Net MVC 2 Empty Web Aplicación esto porque se crea un proyecto vacio.) y le ponemos un nombre en este caso Tutorial Seguidamente nos aparecerá una ventana preguntando si queremos crear un unit test Project para este caso seleccionamos no y aceptar Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Una vez creado podremos observar algo como esto: Ahora vamos a agregar los Class Library (.dll) con las cuales vamos a trabajar como capas, clic derecho en el solución explorer add->new proyect Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © ESTRUCTURAS DE LAS CAPAS. ES IMPORTANTE TENER CLARO ANTES DE INICIAR EL PROYECTO ¡! Por ejemplo el DS no ve la capa WCF solo a la capa BS que esta ve a la capa WCF… Aparecera una ventana y seleccionamos visual C# -> Windows ->Class Library y la guardamos con el nombre de Tutorial.Datos y OK Hacemos este proceso varias veces hasta agregar un Tutorial.DS y un Tutorial.BS (esas son las capas en la cual vamos a trabajar) Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © 2. Ahora vamos agregar la capa del WCF en este caso es Visual C#->WCF->WCF Service Library y lo guardamos con el nombre de WCF Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Después de creadas las capas en las cuales vamos a utilizar se verá algo como esto: Tenemos la capa Tutorial (la interfaz MVC) Las capas Tutorial.BS , Tutorial.Datos, Tutorial.DS y el WCF Ahora vamos a empezar a trabajar con la capa del Tutorial.Datos que es la cual vamos a crear los objetos que vamos a utilizar en este caso Cliente. Pero primero en Tutorial.Datos vamos a eliminar la class.cs, clic derecho->delete Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Después de eliminado ahora sobre Tutorial.Datos vamos agregar una nueva clase dando clic derecho sobre Tutorial.Datos->add->Class. Ahora seleccionamos Class y el nombre Cliente. Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Aquí definimos los atributos del objeto cliente que como vimos a la hora de crear la BD tiene como atributo ID y Nombre Using …. Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Copilamos…. Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Referencia al .datos al ds y agregar using Tutorial.Datos; Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Public interface Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © #region IAccesoDato Members public int Insertar_Cliente(Cliente cli) { int ff; SqlConnectionStringBuilder _connectionStringBuilder = new SqlConnectionStringBuilder(); _connectionStringBuilder.DataSource = @".\SQLEXPRESS"; _connectionStringBuilder.InitialCatalog = "Tutorial"; //NOMBRE DE LA BASE DE DATOS _connectionStringBuilder.IntegratedSecurity = true; using (SqlConnection _connection = new SqlConnection(_connectionStringBuilder.ConnectionString)) { _connection.Open(); SqlTransaction _transaction = _connection.BeginTransaction(); SqlCommand _command = new SqlCommand(); _command.Connection = _connection; _command.CommandType = CommandType.StoredProcedure; _command.CommandText = "Insertar_Cliente"; // Aqui va el nombre del procedimiento de almacenado Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © _command.Parameters.AddWithValue("@Id", cli.Id ); _command.Parameters.AddWithValue("@Nombre",cli.Nombre ); _command.Transaction = _transaction; try { _command.ExecuteNonQuery(); _transaction.Commit(); } catch (Exception ex) { _transaction.Rollback(); } return ff = 1; _connection.Close(); } } #endregion Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © using Tutorial.Datos; using Tutorial.DS; Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Ahora WCF Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © using Tutorial.BS; using Tutorial.Datos; Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Copiamos la dirección http://localhost/Tutorial/WCF1.Service1.svc Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Pegamos la dirección http://localhost/Tutorial/WCF1.Service1.svc y presionamos go ¡!! Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © using Tutorial.Datos; Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Ahora vamos a crear un articulo 1ero agregar la vista Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright © Como trabajan las capas!!! Creado por Jose Abraham Benavides Vargas Estudiante de Ing. En Sistemas de la Información UNA- SRCH Nicoya Copyright ©