Condividi tramite


LightSwitch come origine dati

Oltre a usare LightSwitch per creare applicazioni, è possibile usarlo come livello intermedio per fornire dati alle altre applicazioni. Quando si pubblicano i dati dell'applicazione da LightSwitch a un server Web o Microsoft Azure, tali dati sono esposti come servizio di apertura del protocollo dati (OData). OData fornisce uno standard per la comunicazione con i servizi di dati sul web. Molte grandi imprese oggi usano OData per lo scambio di dati tra i sistemi e i partner, oltre a fornire accesso ai relativi archivi dati. Poiché OData è un protocollo standard, altre applicazioni client su quasi tutte le piattaforme o i dispositivi possono accedere ai dati creati o esposti tramite LightSwitch.

Creazione di servizi OData

Per ogni origine dati nell'applicazione viene automaticamente creato un servizio OData con un endpoint separato. Questa funzionalità si applica sia alle tabelle definite nel database intrinseco, ma anche a qualsiasi origine dati associata, ad esempio un database SQL Server, un elenco di SharePoint, o addirittura altro servizio di OData.

LightSwitch espone più endpoint OData

Qualsiasi logica di business e autorizzazioni utente definite per le entità verrà eseguita quando si accede all'endpoint, indipendentemente dal client che accede ai servizi. Anziché scrivere la logica di business e definire le autorizzazioni utente per ogni applicazione client, è possibile usare LightSwitch di livello intermedio come luogo in cui centralizzare il codice.

Accesso ai servizi LightSwitch OData

Quando si distribuisce un'applicazione LightSwitch con una configurazione a tre livelli (che ospita il livello intermedio in Internet Information Services o Azure), gli endpoint di servizi vengono esposti. I nomi dei servizi corrispondono ai nomi delle origini dati. Ad esempio, la stessa applicazione in Procedura dettagliata: creazione dell'applicazione di Vision Clinic in LightSwitch espone due endpoint di servizi, perché dispone di due origini dati: il database di ApplicationData, intrinseco, e il database SQL PrescriptionContoso, associato. Se l'applicazione è stata distribuita a un sito Web denominato "www.contoso.com", gli endpoint di servizi sono https://www.contoso.com/ApplicationData.svc e https://www.contoso.com/PrescriptionContoso.svc.

All'interno di ogni servizio, è possibile passare a tutti i set di entità che vengono modellati nella finestra di progettazione dei dati. OData definisce un set di operazioni di query che è possibile eseguire sui dati mediante un set di convenzioni URI. È possibile eseguire una query su un servizio con una richiesta di HTTP-GET e il servizio restituirà un feed con i risultati nella risposta. Ad esempio, è possibile eseguire una query sul servizio PrescriptionContoso di Vision Clinic con l'URI https://www.contoso.com/PrescriptionContoso.svc/Products per restituire un set di risultati che contiene tutti i record dall'entità Products.

Nota

Per visualizzare i dati feed da esaminare in Internet Explorer, è necessario disabilitare la casella di controllo Attiva visualizzazione di lettura feed.

Le query di OData rilevano la differenza tra maiuscole e minuscole: se si specifica products anziché Products, la query non restituisce alcun risultato. È possibile perfezionare ulteriormente le query di OData in diversi modi. Ad esempio, è possibile usare la query https://www.contoso.com/PrescriptionContoso.svc/Products(1) per restituire solo il prodotto che presenta un ProductID uguale a 1. Per restituire tutti i prodotti della categoria Lens Care, è possibile usare la query https://www.contoso.com/PrescriptionContoso.svc/Products?Category='Lens Care. Si applicano comunque tutte le regole business o autorizzazioni definite in LightSwitch. Di conseguenza, gli utenti che vogliono eseguire le query precedenti richiedono l'autorizzazione per visualizzare i prodotti.

Analogamente, il protocollo OData definisce una modalità standard per esplorare le relazioni tra le proprietà di navigazione. Ad esempio, è possibile usare la query https://www.contoso.com/PrescriptionContoso/Products(1)/ProductRebates per trovare gli sconti per un prodotto con ProductID uguale a 1 nella tabella correlata di ProductRebates. OData supporta molte altre operazioni di query come OrderBy, Top, Skip e Sort.

Protezione dei servizi LightSwitch OData

Nella maggior parte dei casi, sarà necessario controllare chi può accedere e aggiornare i dati del servizio di OData. È possibile controllare l'accesso a un'applicazione LightSwitch usando le relative impostazioni. LightSwitch supporta tre impostazioni di autenticazione: Nessuna, Form e Windows.

Se si sceglie l'autenticazione basata su form, LightSwitch consente due modalità di autenticazione. Una delle modalità è rappresentata da un protocollo personalizzato usato dalla finestra di dialogo di accesso, che usa anche un oggetto API personalizzato per un servizio Web per passare le credenziali e ottenere un cookie di autenticazione basata su form. Se una richiesta di dati non prevede un cookie valido di autenticazione basata su form, LightSwitch risponde con una richiesta di base HTTP. Questa risposte consente ai client che non sono stati sviluppati in LightSwitch di passare le credenziali tramite un protocollo HTTP standard. Se si sceglie l'autenticazione di Windows, LightSwitch richiede a un utente di Windows autenticato di fornire le credenziali. Per altre informazioni, vedere Procedura: abilitare l'autenticazione in un'app client Silverlight.

Qualsiasi meccanismo di autenticazione sia usato, considerare l'uso della sicurezza a livello di trasporto su HTTPS per proteggere credenziali, token e dati. Senza HTTPS, i form, le credenziali di base e i token di autenticazione basati sui form vengono sono trasportati come testo normale. L'autenticazione di Windows è più sicura ma, senza HTTPS, tutti i dati passati tra il client e il server saranno comunque di testo normale. Per ovviare a questo inconveniente, LightSwitch prevede un'impostazione HTTPS nella Pubblicazione guidata che comporta la richiesta di una connessione protetta da parte dell'applicazione. Con questa impostazione abilitata, le richieste verranno reindirizzate da HTTP a HTTPS, ma è comunque necessario ottenere e configurare un certificato di HTTPS sul proprio sito Web. Per altre informazioni, vedere Considerazioni sulla sicurezza per LightSwitch.

Oltre a proteggere l'accesso all'applicazione, è possibile usare la sicurezza basata sui ruoli in LightSwitch per limitare l'accesso alle entità specifiche. Ad esempio, è possibile consentire a tutti gli utenti autenticati di visualizzare l'ordine dei dati, ma solo i supervisori possono visualizzare i dati sugli stipendi. Per altre informazioni, vedere Procedura: abilitare l'autenticazione in un'app client Silverlight.

LightSwitch non fornisce un meccanismo diretto per nascondere o escludere i set di entità o le proprietà dell'entità dall'endpoint di OData. Qualsiasi elemento si connetta al livello dati sarà visibile nell'endpoint del servizio. È possibile controllare l'accesso a tali risorse usando i metodi incorporati di controllo di accesso nel codice di servizio dati. Per altre informazioni, vedere Esecuzione delle attività relative ai dati tramite codice.

Nell' esempio seguente viene illustrato il codice che impedisce a un utente di aggiornare o eliminare i dati in un'entità Products:

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 fornisce anche un filtro a livello di riga con il metodo EntitySet_Filter. Usando questo metodo, è possibile restituire un set di record limitato da un'entità. Nell'esempio seguente vengono restituiti solo i record cliente con TerritoryID uguale a 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;
}

Uso dei servizi LightSwitch OData

Qualsiasi applicazione che supporti OData su ogni piattaforma può usare i feed di OData da LightSwitch. I metodi per connettersi a un feed di OData variano in base all'applicazione, ma in genere viene fornito solo l'endpoint del servizio LightSwitch.

La documentazione di LightSwitch contiene molti esempi di applicazioni che usano OData.

Vedere anche

Attività

Procedura: abilitare l'autenticazione in un'app client Silverlight

Procedura dettagliata: esposizione e utilizzo di un servizio OData in LightSwitch

Procedura dettagliata: utilizzo dei dati LightSwitch in un'applicazione Windows Store

Procedura dettagliata: utilizzo dei servizi LightSwitch in Excel tramite PowerPivot

Concetti

Esposizione dei dati applicazione LightSwitch

Considerazioni sulla sicurezza per LightSwitch

Esecuzione delle attività relative ai dati tramite codice