LightSwitch como origen de datos

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Además de usar LightSwitch para crear aplicaciones, también puede utilizarse como nivel intermedio para proporcionar datos a otras aplicaciones. Al publicar datos de aplicación de LightSwitch en un servidor web o en Microsoft Azure, esos datos se exponen como servicio Open Data Protocol (OData). OData proporciona un estándar para la comunicación con servicios de datos a través de Internet. Muchas empresas usan hoy en día OData para intercambiar datos entre sistemas y socios, así como para proporcionar acceso a sus almacenes de datos. Dado que OData es un protocolo estándar, otras aplicaciones cliente de casi cualquier plataforma o dispositivo pueden tener acceso a los datos que se crean o exponen a través de LightSwitch.

Se crea un servicio OData automáticamente para cada origen de datos de la aplicación, con un extremo independiente para cada origen. Esta capacidad se aplica no solo a las tablas definidas en la base de datos intrínseca, sino también a cualquier origen de datos asociado, como una base de datos de SQL Server, una lista de SharePoint o incluso cualquier otro servicio OData.

LightSwitch expone varios extremos OData

La lógica de negocios y los permisos de usuario que haya definido para las entidades se ejecutarán al obtenerse acceso al extremo, independientemente de qué cliente tenga acceso a los servicios. En lugar de escribir lógica de negocios y definir permisos de usuario para cada aplicación cliente, puede utilizarse el nivel intermedio de LightSwitch como lugar donde centralizar el código.

Al implementar una aplicación de LightSwitch en una configuración de tres niveles (que hospeda el nivel intermedio en Internet Information Services o Azure), se exponen los extremos del servicio. Los nombres de los servicios corresponden a los nombres de los orígenes de datos. Por ejemplo, la aplicación de ejemplo de Tutorial: Crear la aplicación Vision Clinic expone dos extremos de servicio porque tiene dos orígenes de datos: la base de datos de ApplicationData (intrínseca) y la base de datos SQL PrescriptionContoso (asociada). Si la aplicación se implementa en un sitio web denominado “www.contoso.com”, los extremos del servicio serían http://www.contoso.com/ApplicationData.svc y http://www.contoso.com/PrescriptionContoso.svc.

Dentro de cada servicio, puede desplazarse a todos los conjuntos de entidades que se modelan en el diseñador de datos. OData define un conjunto de operaciones de consulta que pueden realizarse en los datos usando un conjunto de convenciones URI. Puede consultar un servicio con una solicitud HTTP-GET y el servicio devolverá una fuente con los resultados en la respuesta. Por ejemplo, se puede consultar el servicio PrescriptionContoso de Vision Clinic con el URI http://www.contoso.com/PrescriptionContoso.svc/Productos para devolver un conjunto de resultados que contenga todos los registros de la entidad Productos.

System_CAPS_ICON_note.jpg Nota

Para ver los datos sin formato de la fuente en Internet Explorer, debe deshabilitar la casilla Activar la vista de lectura de fuentes.

Las consultas OData distinguen entre mayúsculas y minúsculas; si especifica productos en lugar de Productos, la consulta no devolverá ningún resultado. Las consultas OData se pueden delimitar aún más de diversas formas. Por ejemplo, puede usar la consulta http://www.contoso.com/PrescriptionContoso.svc/Productos(1) para devolver solamente el producto con un ProductID de 1. Para devolver todos los productos de la categoría Cuidado de lentes, se puede usar la consulta http://www.contoso.com/PrescriptionContoso.svc/Productos?Categoría='Cuidado de lentes'. Todos los permisos o reglas de negocios que se hayan definido en LightSwitch siguen estando en vigor. Por tanto, los usuarios que deseen ejecutar las consultas anteriores necesitan permiso para ver Productos.

De igual forma, el protocolo OData define una manera estándar de navegar por las relaciones mediante las propiedades de navegación. Por ejemplo, se puede usar la consulta http://www.contoso.com/PrescriptionContoso/Productos(1)/DescuentosDeProducto a fin de buscar los descuentos de un producto cuyo ProductID es 1 en la tabla relacionada de DescuentosDeProducto. OData admite muchas otras operaciones de consulta, como OrderBy, Top, Skip y Sort.

En la mayoría de los casos, resulta conveniente controlar quién puede tener acceso a los datos y actualizarlos en el servicio OData. Para controlar el acceso a una aplicación de LightSwitch, use su configuración. LightSwitch admite tres valores de autenticación: Ninguno, Formularios y Windows.

Si se elige la autenticación Formularios, LightSwitch habilita dos modos de autenticación. Uno de los modos es un protocolo personalizado que se usa en el cuadro de diálogo Inicio de sesión y que emplea una API personalizada para pasar credenciales en un servicio Web y obtener una cookie de autenticación de formularios. Si una solicitud de datos no incluye una cookie válida de autenticación de formularios, LightSwitch responde con un desafío de autenticación HTTP Basic. Esta respuesta permite a los clientes no desarrollados en LightSwitch pasar credenciales a través de un protocolo HTTP estándar. Si elige la autenticación de Windows, LightSwitch requiere que un usuario de Windows autenticado proporcione credenciales. Para obtener más información, vea Cómo: Habilitar la autenticación en una aplicación de cliente de Silverlight.

Independientemente del mecanismo de autenticación que emplee, debe considerar el uso de seguridad de nivel de transporte a través de HTTPS para proteger las credenciales, los tokens y los datos. Sin HTTPS, los formularios, las credenciales básicas y los tokens de autenticación de formularios se transportan como texto sin formato. La autenticación de Windows es más segura pero, sin HTTPS, los datos que se pasan entre el cliente y el servidor siguen siendo texto sin formato. Para mitigar este problema, LightSwitch incluye un valor de HTTPS en el Asistente para publicación que hace que la aplicación requiera una conexión segura. Con este valor habilitado, las solicitudes se redireccionarán de HTTP a HTTPS, pero primero hay que obtener y configurar un certificado HTTPS en el sitio web. Para obtener más información, vea Consideraciones de seguridad para LightSwitch.

Además de proteger el acceso a la aplicación, también se puede usar la seguridad basada en roles en LightSwitch y restringir así el acceso a entidades concretas. Por ejemplo, puede permitirse a todos los usuarios autenticados mostrar datos sobre pedidos, pero que solo los supervisores puedan mostrar datos de las nóminas. Para obtener más información, vea Cómo: Habilitar la autenticación en una aplicación de cliente de Silverlight.

LightSwitch no proporciona un mecanismo directo para ocultar o excluir conjuntos de entidades o propiedades de entidad en el extremo OData. Todo lo que se conecte a la capa de datos estará visible en el extremo del servicio. El acceso a estos recursos se puede controlar mediante los métodos de control de acceso integrados del código para el servicio de datos. Para obtener más información, vea Realizar tareas relacionadas con datos usando código.

En el ejemplo siguiente se muestra código que impide que un usuario actualice o elimine datos en una entidad Productos:

namespace LightSwitchApplication  
{  
   public partial class PrescriptionContosoService  
   {  
      partial void Product_CanUpdate(ref bool result)  
      {  
         result = false;  
      }  
      partial void Product_CanDelete(ref bool result)  
      {  
         result = false;  
      }  
      partial void Product_CanInsert(ref bool result)  
      {  
         result = false;  
      }  
   }  
}  

LightSwitch también proporciona filtrado en el nivel de fila con el método EntitySet_Filter. Con este método, se puede devolver un conjunto menor de registros de una entidad. En el ejemplo siguiente se devuelven solo los registros de cliente con un TerritoryID de 5:

private void Customers_Filter(ref Expression<Func<Customer, bool>> filter)  
{  
filter = e => e.TerritoryId == 5;  
}  
  

Cualquier aplicación que admita OData en cualquier plataforma puede usar las fuentes OData de LightSwitch. Los métodos para conectarse a una fuente de OData varían según la aplicación, pero normalmente solo se proporciona el extremo del servicio de LightSwitch.

La documentación de LightSwitch contiene varios ejemplos de aplicaciones que usan OData.

Exponer datos de aplicación de LightSwitch
Cómo: Habilitar la autenticación en una aplicación de cliente de Silverlight
Consideraciones de seguridad para LightSwitch
Realizar tareas relacionadas con datos usando código
Tutorial: Exponer y consumir un servicio OData en LightSwitch
Tutorial: Uso de datos de LightSwitch en una aplicación de la Tienda Windows
Tutorial: Consumir servicios de LightSwitch en Excel usando PowerPivot

Mostrar: