Compartilhar via


LightSwitch como uma fonte de dados

Além de usar o LightSwitch para criar aplicativos, você também pode usá-lo como a camada intermediária para fornecer dados a outros aplicativos. Ao publicar dados do aplicativo no LightSwitch em um servidor Web ou no Microsoft Azure, esses dados são expostos como um serviço Open Data Protocol (OData). O OData fornece um padrão para comunicação com os serviços de dados pela Web. Muitas empresas usam OData atualmente para trocar dados entre sistemas e parceiros, além de dar acesso aos seus repositórios de dados. Como o OData é um protocolo padrão, outros aplicativos cliente em praticamente toda plataforma ou dispositivo podem acessar os dados que você cria ou expõe por meio do LightSwitch.

Criando serviços OData

Um serviço OData é criado automaticamente para toda fonte de dados no seu aplicativo, com um ponto de extremidade separado para cada fonte de dados. Esse recurso se aplica não somente às tabelas que você define no banco de dados intrínseco, mas também a qualquer fonte de dados anexada, como um banco de dados do SQL Server, uma lista do SharePoint ou até mesmo outro serviço OData.

O LightSwitch expõe vários pontos de extremidade OData

Qualquer lógica de negócio e permissões de usuário que você tiver definido para as suas entidades serão executadas quando o ponto de extremidade for acessado, não importando qual cliente está acessando os serviços. Em vez de gravar uma lógica de negócio e definir permissões de usuário para cada aplicativo cliente, você pode usar a camada intermediária do LightSwitch como um local para centralizar o seu código.

Acessando serviços OData do LightSwitch

Ao implantar um aplicativo do LightSwitch em uma configuração de três camadas (hospedando a camada intermediária nos Serviços de Informações da Internet ou no Azure), os pontos de extremidade do serviço são expostos. Os nomes dos serviços correspondem aos nomes das fontes de dados. Por exemplo, o aplicativo de exemplo no Instruções passo a passo: criando o aplicativo Clínica de Visão no LightSwitch expõe dois pontos de extremidade de serviço porque possui duas fontes de dados: o banco de dados ApplicationData, que é intrínseco, e o banco de dados SQL PrescriptionContoso, que é anexado. Se o aplicativo fosse implementado em um site chamado “www.contoso.com”, os pontos de extremidade de serviço seriam https://www.contoso.com/ApplicationData.svc e https://www.contoso.com/PrescriptionContoso.svc.

Em cada serviço, você pode navegar para todos os conjuntos de entidades modelados no designer de dados. OData define um conjunto de operações de consulta que você pode executar nos dados usando um conjunto de convenções URI. Você pode consultar um serviço com uma solicitação HTTP-GET, e o serviço irá retornar um feed com os resultados na resposta. Por exemplo, você pode consultar o serviço PrescriptionContoso de Vision Clinic com o URI https://www.contoso.com/PrescriptionContoso.svc/Products para retornar um conjunto de resultados contendo todos os registros da entidade Produtos.

Dica

Para exibir os dados brutos de feed no Internet Explorer, você deve desabilitar a caixa de seleção Ativar o modo de exibição de leitura de feed.

Consultas OData diferenciam maiúsculas de minúsculas; se você especificar produtos em vez de Produtos, a consulta não retornará resultados. Você pode refinar mais as consultas OData de várias maneiras. Por exemplo, você pode usar a consulta https://www.contoso.com/PrescriptionContoso.svc/Products(1) para retornar somente o produto que tem um ProductID de 1. Para retornar todos os produtos na categoria Lens Care, você pode usar a consulta https://www.contoso.com/PrescriptionContoso.svc/Products?Category='Lens Care’. Todas as permissões ou regras de negócio que você definiu no LightSwitch ainda se aplicam. Portanto, usuários que queiram executar as consultas anteriores precisam de permissão para exibir Produtos.

Da mesma forma, o protocolo OData define uma maneira padrão de navegar em relações através por meio de propriedades de navegação. Por exemplo, você pode usar a consulta https://www.contoso.com/PrescriptionContoso/Products(1)/ProductRebates para encontrar descontos para um produto que tenha um ProductID 1 na tabela ProductRebates relacionada. OData dá suporte a muitas outras operações de consulta como OrderBy, Top, Skip e Sort.

Protegendo serviços OData do LightSwitch

Na maioria dos casos, você desejará controlar quem pode acessar e atualizar os dados no seu serviço OData. Você pode controlar o acesso a um aplicativo LightSwitch usando suas configurações. LightSwitch dá suporte a três configurações de autenticação: Nenhuma, Formulários e Windows.

Se você escolher a autenticação de Formulários, o LightSwitch habilitará dois modos de autenticação. Um dos modos é um protocolo personalizado que a caixa de diálogo Logon usa e que utiliza uma API personalizada para um serviço da Web passar credenciais e obter um cookie de autenticação de formulários. Se uma solicitação de dados não tiver um cookie válido de autenticação de formulários, LightSwitch responderá com um desafio HTTP básico. Essa resposta permite que clientes que não tenham sido desenvolvidos no LightSwitch passem credenciais para um protocolo HTTP padrão. Se você escolher a autenticação do Windows, LightSwitch exigirá um usuário do Windows autenticado para fornecer credenciais. Para obter mais informações, consulte Como habilitar a autenticação em um aplicativo cliente do Silverlight.

Qualquer que seja o mecanismo de autenticação que use, você deve considerar usar segurança em nível de transporte em HTTPS para proteger credenciais, tokens e dados. Sem HTTPS, formulários, credenciais básicas e tokens de autenticação de formulários são transportados como texto sem formatação. A autenticação do Windows é mais segura, mas, sem HTTPS, todos os dados que são passados entre cliente e servidor continuarão sendo texto sem formatação. Para minimizar isso, o LightSwitch tem uma configuração HTTPS no Assistente de Publicação que faz com que o aplicativo exija uma conexão segura. Com essa configuração habilitada, as solicitações HTTP serão redirecionadas de HTTPS para HTTPS, mas ainda assim você deve obter e configurar um certificado HTTPS no seu site. Para obter mais informações, consulte Considerações sobre segurança de LightSwitch.

Além de proteger o acesso ao aplicativo, você também pode usar a segurança baseada em funções no LightSwitch para restringir o acesso a entidades específicas. Por exemplo, você pode permitir que todos os usuários autenticados exibam dados do pedido, mas somente os supervisores podem exibir dados da folha de pagamento. Para obter mais informações, consulte Como habilitar a autenticação em um aplicativo cliente do Silverlight.

LightSwitch não fornece um mecanismo direto para ocultar ou excluir conjuntos de entidades ou propriedades de entidade do ponto de extremidade OData. O que quer que você conecte à camada de dados estará visível no ponto de extremidade do seu serviço. Você pode controlar o acesso a esses recursos usando os métodos internos do controle de acesso no seu código do serviço de dados. Para obter mais informações, consulte Executando tarefas relacionadas a dados usando código.

O exemplo a seguir mostra um código que impede que um usuário atualize ou exclua dados em uma entidade Produtos:

Namespace LightSwitchApplication
   Public Class PrescriptionContosoService
      Private Sub Product_CanUpdate(ByRef result As Boolean)
         result = False
      End Sub
      Private Sub Product_CanDelete(ByRef result As Boolean)
         result = False
      End Sub
      Private Sub Product_CanInsert(ByRef result As Boolean)
         result = False
      End Sub
   End Class
End Namespace
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 também fornece filtragem em nível de linha com o método EntitySet_Filter. Usando esse método, você pode retornar um conjunto menor de registros de uma entidade. O exemplo a seguir retorna apenas os registros Clientes que tenham um TerritoryID de 5:

Private Sub Customers_Filter(ByRef filter As Expression(Of Func(Of Customer, Boolean)))
    filter = Function(e) e.TerritoryId = 5
End Sub
private void Customers_Filter(ref Expression<Func<Customer, bool>> filter)
{
filter = e => e.TerritoryId == 5;
}

Consumindo serviços OData do LightSwitch

Qualquer aplicativo que dê suporte a OData em qualquer plataforma pode consumir feeds de OData do LightSwitch. Os métodos para se conectar a um feed OData variam de aplicativo para aplicativo, mas você normalmente fornece apenas o ponto de extremidade do serviço LightSwitch.

A documentação do LightSwitch contém vários exemplos de aplicativos que consomem OData.

Consulte também

Tarefas

Como habilitar a autenticação em um aplicativo cliente do Silverlight

Instruções passo a passo: expondo e consumindo um serviço OData em LightSwitch

Explicação passo a passo: Como usar dados do LightSwitch em um aplicativo da Windows Store

Instruções passo a passo: consumindo serviços LightSwitch no Excel usando PowerPivot

Conceitos

Expondo dados de aplicativo LightSwitch

Considerações sobre segurança de LightSwitch

Executando tarefas relacionadas a dados usando código