Compartir a través de


Tutorial: Crear y obtener acceso a un servicio de datos de WCF en Visual Studio

En este tutorial se muestra cómo crear un sencillo Servicio de datos de WCF que se hospeda en una aplicación web de ASP.NET y al que se tiene acceso desde una aplicación de Windows Forms.

En este tutorial:

  • Creará una aplicación web para hospedar un Servicio de datos de WCF.

  • Creará un Entity Data Model que represente la tabla Customers de la base de datos Northwind.

  • Creará un control Servicio de datos de WCF.

  • Creará una aplicación cliente y agregará una referencia al Servicio de datos de WCF.

  • Habilitará el enlace de datos al servicio y generará la interfaz de usuario.

  • Opcionalmente agregará funciones de filtrado a la aplicación.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

Crear el servicio web

Para crear un Servicio de datos de WCF, agregará un proyecto web, creará un Entity Data Model y, a continuación, creará el servicio a partir del modelo.

En el primer paso, agregará un proyecto web para hospedar el servicio.

[!NOTA]

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Para crear el proyecto web

  1. En el menú Archivo de Visual Studio, haga clic en Nuevo proyecto.

  2. En el cuadro de diálogo nuevo proyecto, expanda Visual Basic o el nodo Visual c# y haga clic en Web, y seleccione Aplicación de formularios web forms de ASP.NET.

  3. En el campo Nombre, escriba NorthwindWeb y, a continuación, haga clic en Aceptar para crear el proyecto.

En este paso, creará un Entity Data Model que represente la tabla Customers de la base de datos Northwind.

Para crear el Entity Data Model

  1. En el menú Proyecto, haga clic en Agregar nuevo elemento.

  2. En el cuadro de diálogo agregar nuevo elemento, datos seleccione, y Entity Data Model de ADO.NET seleccione.

  3. En el campo Nombre, escriba NorthwindModel y haga clic en Agregar.

    Aparecerá el Asistente para Entity Data Model.

  4. En el Asistente para Entity Data Model, seleccione Generar desde la base de datos y, a continuación, haga clic en Siguiente.

  5. En la página Elegir la conexión de datos, siga uno de estos procedimientos:

    • Si existe alguna conexión de datos a la base de datos de ejemplo Northwind disponible en el cuadro de lista desplegable, haga clic en ella.

      O bien

    • Haga clic en Nueva conexión para configurar una nueva conexión de datos.Para obtener más información, vea How to: Create Connections to SQL Server Databases.

  6. Si la base de datos requiere una contraseña, seleccione la opción para incluir datos confidenciales y, a continuación, haga clic en Siguiente.

    [!NOTA]

    Si aparece un cuadro de diálogo, haga clic en para guardar el archivo en su proyecto.

  7. En la página Elija los objetos de base de datos, expanda el nodo Tablas active la casilla situada junto a la tabla Customers y, a continuación, haga clic en Finalizar.

    Se mostrará el diagrama del modelo de entidad y se agregará un archivo NorthwindModel.edmx al proyecto.

En este paso, creará y probará el servicio de datos.

Para crear el servicio de datos

  1. En el menú Proyecto, haga clic en Agregar nuevo elemento.

  2. En el cuadro de diálogo agregar nuevo elemento, Web seleccione y Servicio de datos de WCF seleccione.

  3. En el campo Nombre, escriba NorthwindCustomers y haga clic en Agregar.

    El archivo NorthwindCustomers.svc aparecerá en el Editor de código.

  4. En el Editor de código, busque el primer comentario TODO: y reemplace el código por el texto siguiente:

    Inherits DataService(Of northwindEntities)
    
    public class NorthwindCustomers : DataService<northwindEntities>
    

    [!NOTA]

    Es posible que deba cambiar "NORTHWIND" a "NORTHWND", en función de la versión que utilice de la base de datos Northwind.También puede utilizar IntelliSense para detectar el nombre correcto.

  5. Reemplace los comentarios del controlador de eventos InitializeService por el siguiente código:

    config.SetEntitySetAccessRule("*", EntitySetRights.All)
    
    config.SetEntitySetAccessRule("*", EntitySetRights.All);
    
  6. Presione Ctrl+F5 para ejecutar el servicio.Se abrirá una ventana del explorador y se mostrará el esquema XML del servicio.

  7. En la barra Dirección, escriba Customers al final de la dirección URL para NorthwindCustomers.svc y, a continuación, presione ENTRAR.

    Se mostrará una representación XML de los datos de la tabla Customers.

    [!NOTA]

    En algunos casos, Internet Explorer interpretará incorrectamente los datos como una fuente RSS.Debe asegurarse de que la opción para mostrar las fuentes RSS está deshabilitada.Para obtener más información, vea Solucionar problemas de referencias de servicio.

  8. Cierre la ventana del explorador.

En los siguientes pasos creará una aplicación cliente de Windows Forms para utilizar el servicio.

Crear la aplicación cliente.

Para crear la aplicación cliente, agregará un segundo proyecto, agregará una referencia del servicio al proyecto, configurará un origen de datos y creará una interfaz de usuario para mostrar los datos del servicio.

En el primer paso, agregará un proyecto de Windows Forms a la solución y lo establecerá como proyecto de inicio.

Para crear la aplicación cliente

  1. En el menú Archivo de Visual Studio, haga clic en Agregar y, a continuación, en Nuevo proyecto.

  2. En el cuadro de diálogo Nuevo proyecto, expanda el nodo Visual Basic o Visual C#, haga clic en Windows y, a continuación, seleccione Aplicación de Windows Forms.

  3. En el campo Nombre, escriba NorthwindClient y, a continuación, haga clic en Aceptar para abrir el proyecto.

  4. En el Explorador de soluciones, seleccione el proyecto NorthwindClient.

  5. En el menú Proyecto, haga clic en Establecer como proyecto de inicio.

En este paso, agregará una referencia de servicio al Servicio de datos de WCF en el proyecto web.

Para agregar una referencia de servicio

  1. En el menú Proyecto, haga clic en Agregar referencia de servicio.

  2. En el cuadro de diálogo Agregar referencia de servicio, haga clic en Detectar.

    En el campo Dirección aparecerá la dirección URL del servicio NorthwindCustomers.

  3. Haga clic en Aceptar para agregar la referencia de servicio.

En este paso, configurará un origen de datos para habilitar el enlace de datos al servicio.

Para habilitar el enlace de datos al servicio

  1. En el menú Datos, haga clic en Mostrar orígenes de datos.

  2. En la ventana Orígenes de datos, seleccione Agregar nuevo origen de datos.

  3. En la página Elija un tipo de origen de datos del Asistente para la configuración de orígenes de datos, haga clic en Objeto y, a continuación, haga clic en Siguiente.

  4. En la página Seleccione el objeto que desee enlazar a, expanda el nodo NorthwindClient y, a continuación, expanda el nodo NorthwindClient.ServiceReference1.

  5. Seleccione Customers y, a continuación, haga clic en Finalizar.

En este paso, creará la interfaz de usuario que mostrará los datos del servicio.

Para crear la interfaz de usuario

  1. Arrastre el nodo Customers desde la ventana Orígenes de datos hasta el formulario.

    Se agregarán al formulario un control DataGridView, un componente BindingSource y un componente BindingNavigator.

  2. Haga doble clic en el formulario para abrir el Editor de código y agregue el siguiente código al controlador de eventos Form1_Load.

           Dim proxy As New ServiceReference1.northwindModel.northwindEntities _
    (New Uri("https://localhost:53161/NorthwindCustomers.svc/"))
           Me.CustomersBindingSource.DataSource = proxy.Customers
    
               ServiceReference1.northwindModel.northwindEntities proxy = new
    ServiceReference1.northwindModel.northwindEntities(new
    Uri("https://localhost:53397/NorthwindCustomers.svc/"));
               this.customersBindingSource.DataSource = proxy.Customers;
    

    [!NOTA]

    Es posible que deba cambiar "NORTHWIND" a "NORTHWND", en función de la versión que utilice de la base de datos Northwind.También puede utilizar IntelliSense para detectar el nombre correcto.

  3. En el Explorador de soluciones, haga clic con el botón secundario en el archivo NorthwindCustomers.svc y, a continuación, haga clic en Ver en el explorador.Se abrirá Internet Explorer y se mostrará el esquema XML para el servicio.

  4. Copie la dirección URL de la barra de direcciones de Internet Explorer.

  5. En el código que agregó en el paso 2, seleccione https://localhost:14735/NorthwindCustomers.svc y reemplácelo por la dirección URL que acaba de copiar.

  6. Presione F5 para ejecutar la aplicación.Se mostrará la información del cliente.

Ahora dispone de una aplicación operativa que mostrará una lista de clientes del servicio NorthwindCustomers.Si desea exponer datos adicionales a través del servicio, puede modificar el Entity Data Model para incluir tablas adicionales de la base de datos Northwind.

En el siguiente paso opcional aprenderá cómo filtrar los datos que devuelve el servicio.

Agregar funciones de filtrado

En este paso, personalizará la aplicación para filtrar los datos en función de la ciudad del cliente.

Para agregar el filtrado por ciudad

  1. En el Explorador de soluciones, haga doble clic en Form1.vb o Form1.cs para mostrar el Diseñador de Windows Forms.

  2. Arrastre un control TextBox y un control Button desde el Cuadro de herramientas hasta el formulario.

  3. Haga doble clic en el control Button y agregue el siguiente código al controlador de eventos Button1_Click:

           Dim proxy As New ServiceReference1.northwindModel.northwindEntities _
    (New Uri("https://localhost:53161/NorthwindCustomers.svc"))
           Dim city As String = TextBox1.Text
    
           If city <> "" Then
               Me.CustomersBindingSource.DataSource = From c In _
            proxy.Customers Where c.City = city
           End If
    
            ServiceReference1.northwindModel.northwindEntities proxy = new
     ServiceReference1.northwindModel.northwindEntities(new
     Uri("https://localhost:53397/NorthwindCustomers.svc/"));
        string city = textBox1.Text;
    
    if (city != "")
    {
        this.customersBindingSource.DataSource = from c in
     proxy.Customers where c.City == city select c;   
    
  4. En el código anterior, reemplace https://localhost:14735/NorthwindCustomers.svc por la dirección URL del controlador de eventos Form1_Load.

  5. Presione F5 para ejecutar la aplicación.

  6. En el cuadro de texto, escriba London y, a continuación, haga clic en el botón.Solo se mostrarán los clientes de Londres.

Vea también

Tareas

Cómo: Agregar, actualizar o quitar una referencia de servicio de datos de WCF