Exportar (0) Imprimir
Expandir todo

Tutorial: Crear una aplicación distribuida

Visual Studio 2005

En este tutorial se creará una aplicación distribuida multinivel para intranet. La aplicación constará de tres niveles lógicos: datos, objeto comercial e interfaz de usuario. El nivel datos es una base de datos en SQL Server. El nivel de objeto comercial controlará el acceso a los datos y su distribución entre los clientes. El nivel de interfaz de usuario constará de una aplicación basada en Web y una aplicación para Windows tradicional.

La aplicación que va a generar es una aplicación de datos sencilla con búsqueda y edición. Generará un cliente de Windows para mostrar la tabla Customers (Clientes) de la base de datos de ejemplo de SQL Server Northwind. Creará un servicio Web XML para recuperar datos que contienen información sobre clientes de la base de datos. A continuación, generará una aplicación para Windows que comunicará con este servicio Web XML para recuperar un conjunto de datos que contiene información del autor.

Creará un servicio Web XML y las aplicaciones cliente en el mismo servidor, aunque la base de datos puede residir en otro servidor. El servidor de aplicaciones y el servidor de bases de datos deben residir en la misma intranet. Esta organización de proyectos permite utilizar la autenticación de Windows para obtener acceso a la base de datos y probar la aplicación. Al mismo tiempo, esta organización también permite quitar muchos detalles de acceso a recursos de forma que se pueda ver la interacción del servicio Web XML y las aplicaciones cliente. Es posible que esta organización no sea exactamente igual que la arquitectura que desea crear para sus aplicaciones.

Para poder completar este tutorial, necesitará:

  • Acceso a un servidor con la base de datos de ejemplo Northwind de SQL Server, configurada para la autenticación de Windows integrada. La base de datos Northwind es una de las bases de datos de ejemplo que se puede instalar con SQL Server.

  • Conocimientos básicos sobre cómo controlar datos en Visual Studio .NET. Para obtener más información, vea Información general acerca de ADO.NET.

Un posible escenario para desarrollar una aplicación distribuida es crear un nivel cada vez; por ejemplo, se empieza con el nivel de datos, después se pasa al objeto comercial de nivel medio y, por último, se crea la interfaz de usuario. Para este tutorial, los datos ya se han generado y están disponibles en la base de datos Northwind de SQL Server. Por lo tanto, el tutorial comienza con la creación del objeto comercial —el servicio Web XML— y, a continuación, se generan las dos interfaces de usuario —una página de formularios Web Forms y un formulario Windows Forms. El proceso de este tutorial es el siguiente:

  1. Crear el objeto comercial de nivel medio

    1. Crear un proyecto Servicio Web ASP.NET

    2. Crear y configurar una conexión de base de datos y un esquema de conjunto de datos

    3. Exponer el conjunto de datos desde el objeto comercial

  2. Crear la interfaz de usuario

    1. Crear una interfaz de usuario de Windows

  3. Implementar la solución o agregar más características

Crear el objeto comercial de nivel medio

El objeto comercial que se crea se ejecutará en un servidor Web para suministrar el rendimiento y la escalabilidad necesarios para una aplicación distribuida. Además, se implementará el objeto comercial como un servicio Web XML para que así los clientes puedan utilizar protocolos estándar de Internet para comunicarse con el objeto comercial desde cualquier plataforma. Para obtener información detallada, vea Programar el Web con servicios Web XML.

En este tutorial, el componente de servicio Web XML guarda la conexión de datos y la definición de conjunto de datos. A continuación, los métodos del servicio Web XML se agregarán para exponer el conjunto de datos, lo que permite a otras aplicaciones ver y modificar el conjunto de datos.

El servicio Web XML mostrará dos métodos. El primero, GetCustomers, devolverá un conjunto de datos desde la base de datos. El segundo, UpdateCustomers, actualizará la base de datos con cambios procedentes del usuario.

Para crear un proyecto Servicio Web ASP.NET

  1. En el menú Archivo, elija Nuevo y, a continuación, Sitio Web para mostrar el cuadro de diálogo Nuevo sitio Web.

  2. En el panel Plantillas instaladas de Visual Studio, seleccione Servicio Web ASP.NET.

  3. En el cuadro Ubicación, escriba el nombre del servidor Web (en el equipo de desarrollo) con el nombre del proyecto,http://ServerName/CustomersWebService y, después, haga clic en Aceptar.

    NoteSugerencia

    Como el servidor Web está en su equipo, puede utilizar el nombre de servidor LOCALHOST.

  4. El proyecto CustomersWebService se agrega a la solución. Tenga en cuenta que el servicio Web se inicializa en el lenguaje predeterminado que ha elegido para Visual Studio.

  5. En el Explorador de soluciones, haga doble clic en Service.asmx para seleccionarlo.

  6. En la ventana Propiedades, establezca la propiedad Nombre de archivo de Servicio en CustomersService.

    En este componente se creará una conexión para guardar datos y obtener una instancia de los datos mediante un conjunto de datos.

Crear y configurar una conexión de base de datos y un esquema de conjunto de datos

Agregará un conjunto de datos a la aplicación y, a continuación, usará el Asistente para la configuración de TableAdapter para generar un objeto TableAdapter con tipo específico de la tabla Customers (Clientes) de la base de datos.

Para crear una conexión de base de datos y un adaptador de datos

  1. En el menú Sitio Web, elija Agregar nuevo elemento. Se abrirá el cuadro de diálogo Agregar nuevo elemento.

  2. Seleccione Conjunto de datos y haga clic en Agregar

    El conjunto de datos se agrega al proyecto y se inicia el Asistente para la configuración de TableAdapter.

  3. En el Asistente para la configuración de TableAdapter, haga clic en Nueva conexión para crear la conexión.

    El cuadro de diálogo Agregar conexión se abre y se selecciona Microsoft SQL Server como el tipo de base de datos.

  4. En el cuadro de diálogo Agregar conexión, escriba el nombre del servidor de SQL Server donde está instalada la base de datos Northwind. Si posee SQL Server en el equipo local, escriba (local).

  5. Seleccione Utilizar autenticación de Windows para obtener la información de inicio de sesión.

    NoteNota

    Si no tiene configurada la seguridad integrada en su sistema, póngase en contacto con su administrador de red.

  6. Seleccione la base de datos Northwind en la lista.

  7. Haga clic en Probar conexión para validar la información proporcionada y después haga clic en Aceptar para establecer la conexión.

    Se crea una nueva conexión a bases de datos y se agrega al cuadro desplegable del Asistente para la configuración de TableAdapter.

    NoteNota

    Si la conexión a la base de datos da error, consulte con su administrador de base de datos.

  8. Asegúrese de que la base de datos esté seleccionada en el cuadro desplegable y haga clic en Siguiente.

  9. Haga clic de nuevo en Siguiente para guardar la cadena de conexión en el archivo de configuración.

  10. En el panel Elija un tipo de comando, asegúrese de que se esté seleccionado Usar instrucciones SQL y haga clic en Siguiente.

  11. En el panel Escriba una instrucción SQL, escriba SELECT * FROM Customers y haga clic en Siguiente.

  12. En el panel Elija los métodos que se van a generar haga clic en Finalizar.

    Ha creado una conexión a la base de datos, un conjunto de datos con tipo y ha generado el adaptador de la tabla que interactúa con la base de datos.

  13. En el menú Archivo, elija Guardar todo.

Es necesario configurar los valores de seguridad del proyecto para trabajar con seguridad integrada. Para ello se desactiva el acceso anónimo y se activa la suplantación.

Para configurar la autenticación de Windows integrada para el proyecto, es necesario cambiar los archivos del proyecto y configurar el proyecto utilizando la herramienta Servicios de Internet Information Server.

Para configurar la autenticación de Windows integrada

  1. Inicie la herramienta Servicios de Internet Information Server. Se puede ejecutar desde Herramientas administrativas en el Panel de control. (Para obtener más información acerca de cómo iniciar esta herramienta, consulte la documentación de ayuda de Windows.)

  2. Expanda el nodo del servidor.

  3. Expanda el nodo Sitio Web predeterminado.

  4. Haga clic con el botón secundario del mouse (ratón) en el nodo CustomersWebService y elija Propiedades en el menú contextual.

  5. Haga clic en la ficha Seguridad de directorios.

  6. Haga clic en el botón Editar en la sección Acceso anónimo y control de autenticación.

  7. Desactive la casilla de verificación Acceso anónimo.

  8. Active la casilla de verificación Autenticación de Windows integrada. Acaba de configurar el directorio del servicio Web XML.

  9. Al volver al proyecto en Visual Studio, haga doble clic en el archivo Web.config en el Explorador de soluciones.

  10. Agregue la siguiente etiqueta en la línea después de la etiqueta <system.web> para configurar la seguridad integrada del servicio Web XML.

    <identity impersonate="true"/>
    

Exponer el objeto customersDataTable desde el objeto comercial

El siguiente paso en este tutorial es exponer el objeto de conjunto de datos recientemente creado desde el objeto comercial. Esto pondrá a disposición el uso del conjunto de datos en aplicaciones para Windows o aplicaciones Web.

Agregar métodos al servicio Web XML

  1. En el menú Generar, elija Generar solución para generar la solución.

  2. En el Explorador de soluciones, haga doble clic en Service.vb para abrir el editor de código.

  3. Agregue una línea al cuerpo de la clase para crear una nueva instancia del adaptador de la tabla, como se muestra a continuación:

    Dim myAdapter As New DataSetTableAdapters.CustomersTableAdapter
    

    DataSetTableAdapters.CustomersTableAdapter myAdapter = new 
        DataSetTableAdapters.CustomersTableAdapter();
    
  4. Agregue un método denominado GetCustomers para entregar una tabla de datos al cliente.

    Este método, que se muestra a continuación, devuelve una tabla de datos que contiene los datos del cliente.

    <WebMethod()> Public Function GetCustomers() As _
        DataSet.CustomersDataTable
        Return myAdapter.GetData
    End Function 
    

    [WebMethod]
    public DataSet.CustomersDataTable GetCustomers() 
    {
        Return myAdapter.GetData();
    }
    
  5. Agregue un método denominado UpdateCustomers para propagar los cambios del cliente a la base de datos.

    Este método, que se muestra a continuación, tiene un parámetro DataSet.CustomersDataTable que contiene los datos cambiados y actualiza la base de datos mediante el método CustomersTableAdapter.Update. El método Update acepta los cambios en el conjunto de datos. Se devuelve el conjunto de datos al cliente. El cliente utilizará entonces este conjunto de datos devueltos para actualizar su propia instancia de la tabla de datos Customers (Clientes). Para obtener información acerca del método Update y la aceptación de cambios en un conjunto de datos, vea Introducción a los adaptadores de datos.

    <WebMethod> Public Sub UpdateCustomers(ByVal CustomerChanges _
    As DataSet.CustomersDataTable)
        myAdapter.Update(CustomerChanges)
    End Sub
    

    [WebMethod]
    public void UpdateCustomers(DataSet.CustomersDataTable customerChanges)
    {
       myAdapter.Update(customerChanges);
    }
    
    
    NoteNota

    En una aplicación de producción, se agregaría comprobación de errores y control de excepciones a estos métodos.

  6. En el menú Archivo, elija Guardar todo.

  7. En el menú Generar, elija Generar solución.

En las secciones anteriores, se ha creado un objeto comercial de nivel medio que contiene un conjunto de datos enlazado a la base de datos de SQL Server. Se agregó código al servicio Web XML de nivel medio CustomersWebService para obtener datos desde un origen de datos y actualizar éste con los cambios. El cliente tiene acceso a estas funciones a través de los métodos del servicio Web XML GetCustomers y UpdateCustomers.

Crear la interfaz de usuario

Después de crear un objeto comercial de nivel medio para el acceso a datos y exponerlo como un servicio Web XML, el siguiente paso es la creación de las interfaces de cliente. Existen dos escenarios en este tutorial: un formulario tradicional Windows Forms y una página de formularios Web Forms. Ambos se crearán en este ejemplo como proyectos independientes en la misma solución. No es necesario que cree ambas interfaces.

Interfaz de usuario de Windows

Una interfaz de Windows utiliza la capacidad del equipo cliente para administrar parte del procesamiento de la aplicación. Normalmente, una interfaz de Windows proporciona una mayor funcionalidad y una experiencia más rica para el usuario que una interfaz basada en Web. Existe menos carga en el servidor que con una interfaz de usuario Web, ya que el servidor no tiene que realizar toda la lógica de la aplicación. De forma adicional, una interfaz de Windows puede beneficiarse de los recursos disponibles a través del sistema operativo, lo que incluye llamadas al sistema de archivos y al Registro.

La aplicación para Windows consta de un formulario Windows Forms que contendrá una referencia Web a CustomersWebService. Los datos en la base de datos se mostrarán en un control DataGridView cuando se haga clic en un botón Load en el formulario. Este comportamiento de carga se implementa al llamar al método GetCustomers del Servicio Web XML. El control DataGridView permite la edición directa, con cambios en los datos que pasan de forma directa al conjunto de datos subyacente. El formulario tendrá también un botón Save. El código de este botón llamará al método UpdateAuthors del servicio Web XML para guardar los cambios en la base de datos.

Para crear la aplicación para Windows

  1. En el menú Archivo, seleccione Agregar y luego haga clic en Nuevo proyecto para abrir el cuadro de diálogo Agregar nuevo proyecto.

  2. Seleccione Aplicación para Windows en el panel Plantillas instaladas de Visual Studio.

  3. Denomine el proyecto CustomersWinClient y seleccione una ubicación para el proyecto; a continuación, haga clic en Aceptar.

    Se agregará el proyecto CustomersWinClient a la solución. Form1 se agrega de forma automática al proyecto y aparece en el Diseñador de Windows Forms.

  4. Agregue una referencia Web al proyecto Servicio Web ASP.NET que creó anteriormente:

    1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto CustomersWinClient y después haga clic en Agregar referencia Web en el menú contextual.

    2. Haga clic en Servicios Web de esta solución y, a continuación, en CustomersService.

    3. Haga clic en Agregar referencia.

      Ahora puede crear una instancia del conjunto de datos DataSet en la aplicación.

Para agregar controles al formulario

  1. Arrastre un control DataGridView de la ficha Datos del Cuadro de herramientas hasta el formulario.

  2. Arrastre un control Button desde la ficha Controles comunes del Cuadro de herramientas hasta el formulario. Establezca la propiedad Name del botón en LoadData y su propiedad Text en Load.

  3. Arrastre otro control Button desde la ficha Controles comunes del Cuadro de herramientas hasta el formulario. Establezca la propiedad Name del botón en SaveData y su propiedad Text en Save.

  4. Haga doble clic en el formulario para abrir el Editor de código.

  5. Bajo la declaración de clase, cree una instancia de localhost.DataSet como se muestra a continuación:

    Dim CustomerData As New localhost.DataSet.CustomersDataTable
    

    localhost.DataSet.CustomersDataTable CustomerData = new
        localhost.DataSet.CustomersDataTable();
    

Para agregar código para los botones LoadData y SaveData

  1. En el menú Ver, haga clic en Diseñador. Haga doble clic en el botón LoadData para crear un controlador de eventos vacío para el evento Click. Los métodos del servicio Web XML se invocan por primera vez al crear una instancia de la clase del servicio y después llamando a los métodos del servicio. En este caso, se llama al método GetCustomers . El conjunto de datos devuelto se combina con el conjunto de datos CustomerData . La propiedad Credentials del servicio Web XML se utiliza para pasar la identidad al servicio Web XML, que a su vez la pasa al servidor de la base de datos. Agregue al método el código que se muestra a continuación.

    NoteNota

    Si el servicio Web XML no se ejecuta en el equipo local, necesitará reemplazar localhost en el ejemplo de código con el nombre del servidor que ejecuta el servicio Web XML.

    Private Sub LoadData_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles LoadData.Click
        Dim ws As New localhost.Service()
        ws.Credentials = System.Net.CredentialCache.DefaultCredentials
        CustomerData.Merge(ws.GetCustomers)
        DataGridView1.DataSource = CustomerData
    End Sub
    
    

    private void LoadData_Click(object sender, System.EventArgs e)
    {
        localhost.Service ws = 
            new localhost.Service();
        ws.Credentials = System.Net.CredentialCache.DefaultCredentials;
        CustomerData.Merge(ws.GetCustomers());
        DataGridView1.DataSource = CustomerData;
    }
    
    
  2. En el menú Ver, haga clic en Diseñador. Haga doble clic en el botón SaveData para crear un controlador de eventos vacío para el evento Click.

    NoteNota

    En una aplicación de producción, habría que considerar cuestiones de concurrencia de datos en este paso. Para obtener más información, vea Introducción a la concurrencia de datos en ADO.NET.

    Agregue el código siguiente a los métodos:

    Private Sub SaveData_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles SaveData.Click
        If CustomerData.HasChanges Then
           Dim ws As New localhost.Service()
           ws.Credentials = System.Net.CredentialCache.DefaultCredentials
           ws.UpdateCustomers(CustomerData)
        End If
    End Sub
    
    

    private void SaveData_Click(object sender, System.EventArgs e)
    {
        if (CustomerData.HasChanges())
        {
            localhost.Service ws = 
                new localhost.CustomersService();
            ws.Credentials = 
                System.Net.CredentialCache.DefaultCredentials;
            ws.UpdateCustomers(CustomerData);
        }
    }
    
    
    

Para ejecutar la aplicación

  1. En el menú Archivo, elija Guardar todo.

  2. Seleccione CustomersWinClient en el Explorador de soluciones, haga clic con el botón secundario del mouse y después elija Establecer como proyecto de inicio.

  3. Presione CTRL+F5 para ejecutar la aplicación.

    Se muestra una ventana que contiene un control DataGridView vacío.

  4. Haga clic en Load para rellenar la tabla, realice algunos cambios y después haga clic en Save para guardar los cambios realizados.

En la sección anterior, se agregó un proyecto de formularios Windows Forms a su solución para actuar como una interfaz de Windows. Se conectaron los formularios Windows Forms al servicio Web XML que se creó en la primera sección y se utilizaron los controles DataGridView y Button para crear la interfaz de usuario para cargar y actualizar los datos.

En esta fase, puede implementar la aplicación o, si lo prefiere, agregar funcionalidad adicional al programa. A continuación, se proporcionan algunas sugerencias.

  • Implementar la solución

    Puede implementar la aplicación Web en un servidor o crear un proyecto de instalación para la aplicación para Windows. Para obtener información sobre cómo implementar la aplicación para Windows, vea Tutorial: Implementar una aplicación basada en Windows.

  • Admitir el acceso a sitios Web de Internet

    En este tutorial se trata la autenticación para aplicaciones de intranet. Es posible que otros usuarios tengan acceso a la aplicación a través de Internet, por tanto, puede necesitar una solución de autenticación diferente. Para obtener más información, vea Utilizar la autenticación de IIS con la suplantación de ASP.NET. También puede investigar la creación una interfaz Web para la aplicación en combinación con protocolos de acceso Web.

  • Considerar la seguridad

    En este tutorial se utiliza la autenticación de Windows integrada para controlar el acceso a la base de datos. La seguridad de bases de datos es sólo una de las cuestiones importantes en la seguridad de las aplicaciones Web. Para ver una explicación de la seguridad de las aplicaciones Web, vea Procedimientos de seguridad básicos para aplicaciones Web (Visual Studio).

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft