LightSwitch как источник данных
LightSwitch может использоваться не только для создания приложения, но и как промежуточный уровень для предоставления данных другим приложениям. Если публиковать данные приложения из LightSwitch на веб-сервере или в Microsoft Azure, эти данные предоставляются как служба Open Data Protocol (OData). OData предоставляет стандарт для взаимодействия со службами данных в Интернете. Во многих предприятиях сегодня используют OData для обмена данными между системами и партнерами, а также для доступа в хранилища данных. Поскольку OData является стандартным протоколом, другие клиентские приложения практически на любой платформе или устройстве могут получить доступ к данным, которые были созданы или предоставлены через LightSwitch.
Создание службы OData
Служба OData создается автоматически для каждого источника данных в приложении с отдельной конечной точкой для каждого источника данных. Эта возможность применяется не только к таблицам, которые были определены во встроенной базе данных, но и к любому присоединенному источнику данных, например к базе данных SQL Server, списку SharePoint или даже другой службе OData.
Вся бизнес-логика и пользовательские разрешения, определенные для сущностей, будут выполняться при обращении к конечной точке, независимо от того, какой клиент обращается к службе. Вместо создания бизнес-логики и определения пользовательских разрешений для каждого клиентского приложения можно использовать средний уровень LightSwitch как место для централизации кода.
Доступ к службам LightSwitch OData
При развертывании приложения LightSwitch в трехуровневой конфигурации (при размещении среднего уровня в службах IIS или в Microsoft Azure) предоставляются конечные точки службы. Имена служб соответствуют именам источников данных. Например, приложение в примере в Пошаговое руководство. Создание приложения Vision Clinic в LightSwitch предоставляет две конечные точки службы, поскольку в нем имеется два источника данных: встроенная база данных с именем ApplicationData и присоединенная база данных SQL с именем PrescriptionContoso. Если бы приложение было развернуто на веб-сайте www.contoso.com, то конечные точки службы имели бы адреса https://www.contoso.com/ApplicationData.svc и https://www.contoso.com/PrescriptionContoso.svc.
Внутри каждой службы можно переходить ко всем наборам сущностей, которые моделируются в конструкторе данных. OData определяет набор операций запроса, которые можно применять к данным с использованием соглашений URI. Службе можно направить запрос HTTP-GET, и она в ответ будет возвращать в ответ канал результатов. Например, по URI https://www.contoso.com/PrescriptionContoso.svc/Products можно опросить службу PrescriptionContoso клиники Vision Clinic, и она возвратит набор результатов, содержащий все записи из сущности Products.
Примечание
Чтобы просмотреть необработанные данные канала в Internet Explorer, необходимо отключить флажок Включить показ ленты чтения веб-канала.
В запросах OData учитывается регистр; если указать products вместо Products, запрос не возвратит никаких результатов. Кроме того, есть несколько способов уточнения запросов OData. Например, по запросу https://www.contoso.com/PrescriptionContoso.svc/Products(1) будет возвращен только продукт, имеющий ProductID, равный 1. Чтобы возвратить все продукты в категории Lens Care, можно использовать запрос https://www.contoso.com/PrescriptionContoso.svc/Products?Category='Lens Care’. При этом по-прежнему применяются все бизнес-правила или разрешения, указанные в LightSwitch. Поэтому пользователям, которым необходимо выполнить предыдущие запросы, необходимо разрешение на просмотр Products.
Аналогично, протокол OData задает стандартный способ навигации по связям с помощью свойств навигации. Например, запрос https://www.contoso.com/PrescriptionContoso/Products(1)/ProductRebates позволит найти скидки для продукта, который имеет ProductID равный 1 в связанной таблице ProductRebates. OData поддерживает множество других операций запроса, например OrderBy, Top, Skip и Sort.
Защита служб OData в LightSwitch
В большинстве случаев требуется отслеживать права доступа и обновления данных в службе OData. Можно контролировать доступ для приложений LightSwitch с помощью его параметров. В LightSwitch поддерживается три параметра аутентификации: None (Нет), Forms (Формы) и Windows.
Если выбрана аутентификация с помощью форм, то LightSwitch включает два режима аутентификации. Один режим — это пользовательский протокол, который используется диалоговым окном входа в систему. Для того чтобы передавать учетные данные и получать файлы cookie для аутентификации с помощью форм, в нем применяется пользовательский интерфейс API для веб-службы. Если в запросе данных отсутствует допустимый файл cookie для аутентификации с помощью форм, то LightSwitch в качестве отклика высылает вызов базовой аутентификации HTTP. Этот отклик позволяет клиентам, которые не были разработаны в LightSwitch, передать учетные данные по стандартному протоколу HTTP. Если выбрана аутентификация Windows, то LightSwitch требует от пользователя Windows, прошедшего аутентификацию, предоставить учетные данные. Для получения дополнительной информации см. Практическое руководство. Включение аутентификации в клиентском приложении Silverlight.
Какой бы механизм аутентификации вы ни использовали, имеет смысл использовать безопасность транспортного уровня по протоколу HTTPS, чтобы обезопасить учетные данные, токены и информацию. Если HTTPS не используется, то формы, основные учетные данные и токены аутентификации с помощью форм передаются в виде обычного текста. Аутентификация Windows более безопасна, но без HTTPS все данные, передаваемые между клиентом и сервером, по-прежнему будут обычным текстом. Чтобы избежать этого, в Мастере публикации в LightSwitch предусмотрен параметр HTTPS. При его использовании приложение требует наличия безопасного соединения. Если этот параметр включен, запросы перенаправляются с интерфейса HTTP на HTTPS, однако для этого потребуется получить сертификат HTTPS и настроить его на веб-сайте. Для получения дополнительной информации см. Вопросы безопасности LightSwitch.
В LightSwitch можно не только включать безопасность доступа к приложению, но и использовать безопасность на основе ролей, что позволит ограничивать доступ к отдельным сущностям. Например, просматривать сведения о заказах можно разрешить всем прошедшим аутентификацию пользователям, а сведения о зарплате — только заведующим. Для получения дополнительной информации см. Практическое руководство. Включение аутентификации в клиентском приложении Silverlight.
В LightSwitch нет механизма для прямого сокрытия или исключения наборов сущностей или свойств сущности из конечной точки OData. К какому бы объекту вы ни подключались на уровне данных, он будет видимым для конечной точки службы. Доступ к этим ресурсам можно контролировать с помощью встроенных методов управления доступом в коде службы данных. Для получения дополнительной информации см. Выполнения задач, связанных с данными, с помощью кода.
В следующем примере показан код, который не позволяет пользователю обновлять или удалять данные о сущности 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 можно использовать фильтрацию на уровне строк, которая реализуется с помощью метода EntitySet_Filter. С помощью этого метода можно возвратить меньший набор записей сущности. Следующий пример возвращает только те записи Customer, у которых значение TerritoryID равно 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;
}
Использование служб OData в LightSwitch
Любое приложение, которое поддерживает OData на любой платформе, может использовать каналы OData из LightSwitch. В разных приложениях могут использоваться разные методы подключения к каналу OData, но обычно достаточно указать конечную точку службы LightSwitch.
В документации по LightSwitch приводится ряд примеров приложений, использующих OData.
Дополнительные сведения об использовании OData из другого приложения LightSwitch см. в разделе Пошаговое руководство. Предоставление доступа к службе OData и ее использование в LightSwitch.
Дополнительные сведения об использовании OData из приложения Магазин Windows см. в разделе Пошаговое руководство. Использование данных LightSwitch в приложении для Магазина Windows.
Дополнительные сведения об использовании OData из Microsoft Excel см. в разделе Пошаговое руководство. Использование служб LightSwitch в Excel с использованием PowerPivot.
См. также
Задачи
Практическое руководство. Включение аутентификации в клиентском приложении Silverlight
Пошаговое руководство. Предоставление доступа к службе OData и ее использование в LightSwitch
Пошаговое руководство. Использование данных LightSwitch в приложении для Магазина Windows
Пошаговое руководство. Использование служб LightSwitch в Excel с использованием PowerPivot
Основные понятия
Предоставление доступа к данным приложения LightSwitch