다음을 통해 공유


데이터 소스로 사용되는 LightSwitch

LightSwitch를 사용하여 응용 프로그램을 만드는 것 외에 다른 응용 프로그램에 데이터를 제공하기 위해 중간 계층으로 사용할 수도 있습니다.LightSwitch의 응용 프로그램 데이터를 웹 서버 또는 Windows Azure에 게시할 때 해당 데이터는 OData(개방형 데이터 프로토콜) 서비스로 노출됩니다.OData는 웹을 통해 데이터 서비스와의 통신 표준을 제공합니다.오늘날 많은 엔터프라이즈가 데이터 저장소에 액세스를 제공하는 것 외에 시스템과 파트너 간에 데이터를 교환하는 데 OData를 사용합니다.OData는 표준 프로토콜이므로 거의 모든 플랫폼 또는 장치의 다른 클라이언트 응용 프로그램은 LightSwitch를 통해 만들거나 노출할 수 있는 데이터에 액세스할 수 있습니다.

OData 서비스 만들기

OData 서비스는 각 데이터 소스마다 별도의 끝점을 사용하여 응용 프로그램에 있는 각 데이터 소스에 대해 자동으로 만들어집니다.이 기능은 내장 데이터베이스를 정의하는 테이블 뿐만 아니라 SQL Server 데이터베이스, SharePoint 파일 또는 다른 OData 서비스 같은 첨부된 데이터 소스에도 적용됩니다.

LightSwitch가 여러 OData 끝점 노출

사용자 엔터티에 정의된 비즈니스 논리와 사용자 권한은 어떤 클라이언트가 서비스에 액세스하고 있는지 여부에 관계 없이 끝점을 액세스할 때 실행됩니다.각 클라이언트 응용 프로그램에 대한 비즈니스 논리를 작성하고 사용자 권한을 정의하는 대신 코드를 중앙 집중시킬 한 위치로 LightSwitch 중간 계층을 사용할 수 있습니다.

LightSwitch OData Services에 액세스

LightSwitch 응용 프로그램을 3계층 구성으로 배포하면(인터넷 정보 서비스 또는 Windows Azure에서 중간 계층 호스팅) 서비스 끝점이 노출됩니다.서비스의 이름은 데이터 소스 이름에 해당합니다.예를 들어, 연습: 비전 클리닉 응용 프로그램 만들기의 샘플 응용 프로그램에는 내장되어 있는 ApplicationData 데이터베이스와 연결된 PrescriptionContoso SQL 데이터베이스의 두 가지 데이터 소스가 있기 때문에 두 서비스 끝점을 노출합니다.응용 프로그램이 “www.contoso.com”이라는 웹 사이트에 배포된 경우 서비스 끝점은 https://www.contoso.com/ApplicationData.svchttps://www.contoso.com/PrescriptionContoso.svc가 됩니다.

각 서비스 내에서 데이터 디자이너에서 모델링되는 모든 엔터티 집합을 탐색할 수 있습니다.OData는 URI 규칙의 집합을 사용하여 데이터에서 수행할 수 있는 쿼리 작업 집합을 정의합니다.HTTP-GET 요청으로 서비스에 쿼리할 수 있으며 서비스는 응답을 통해 결과가 포함된 피드를 반환합니다.예를 들어, Vision Clinic’의 PrescriptionContoso 서비스를 URI https://www.contoso.com/PrescriptionContoso.svc/Products를 사용하여 쿼리하여 제품 엔터티의 모든 레코드를 포함하는 결과 집합을 반환할 수 있습니다.

[!참고]

Internet Explorer에서 원시 피드 데이터를 보려면 피드 읽기용 보기 사용 확인란을 사용하지 않도록 설정해야 합니다.

OData 쿼리는 대/소문자를 구분합니다. Products 대신 products를 지정하는 경우 쿼리는 결과를 반환하지 않습니다.여러 방법으로 OData 쿼리를 구체화할 수 있습니다.예를 들어, https://www.contoso.com/PrescriptionContoso.svc/Products(1) 쿼리를 사용하여 ProductID가 1인 제품만 반환합니다.렌즈 관리 범주에 있는 모든 제품을 반환하려면 https://www.contoso.com/PrescriptionContoso.svc/Products?Category='Lens Care’ 쿼리를 사용할 수 있습니다.LightSwitch에서 정의한 모든 비즈니스 규칙 또는 권한이 여전히 적용됩니다.따라서 이전 쿼리를 실행하려는 사용자는 제품을 볼 수 있는 권한이 필요합니다.

마찬가지로, OData 프로토콜에서는 탐색 속성을 통해 관계를 탐색하는 표준 방법을 정의합니다.예를 들어, https://www.contoso.com/PrescriptionContoso/Products(1)/ProductRebates 쿼리를 사용하여 관련 ProductRebates 테이블에서 ProductID가 1인 제품의 리베이트를 찾을 수 있습니다.OData는 OrderBy, Top, Skip 및 Sort 등 다른 많은 쿼리 작업을 지원합니다.자세한 내용은 OData: URI 규칙을 참조하십시오.

LightSwitch OData 서비스 보안

대부분의 경우 OData 서비스에서 데이터에 액세스하고 업데이트할 수 있는 사람을 제어할 수 있습니다.해당 설정을 사용하여 LightSwitch 응용 프로그램에 대한 액세스를 제어할 수 있습니다.LightSwitch는 세 가지 인증 설정(없음, 폼 및 Windows)을 지원합니다.

폼 인증을 선택하면 LightSwitch 인증의 두 가지 모드를 사용할 수 있습니다.한 가지 모드는 로그인 대화 상자가 사용하고 자격 증명을 전달하고 폼 인증 쿠키를 얻기 위해 웹 서비스에 대한 사용자 지정 API를 사용하는 사용자 지정 프로토콜입니다.데이터에 대한 요청에 유효한 폼 인증 쿠키가 없는 경우 LightSwitch는 HTTP Basic 과제로 응답합니다.이 응답으로 LightSwitch에서 개발되지 않은 클라이언트가 표준 HTTP 프로토콜을 통해 자격 증명을 전달하게 합니다.Windows 인증을 선택하면 LightSwitch에는 자격 증명을 제공하기 위해 인증된 Windows 사용자가 있어야 합니다.자세한 내용은 LightSwitch 인증 및 권한 부여을 참조하십시오.

사용하는 인증 메커니즘의 종류에 따라 HTTPS를 통해 보안 자격 증명, 토큰 및 데이터에 전송 수준 보안을 사용해야 합니다.HTTPS가 없다면 폼, 기본 자격 증명 및 폼 인증 토큰이 일반 텍스트로 전송됩니다.Windows 인증은 보다 안전하지만 HTTPS가 없다면 클라이언트와 서버 간에 전달되는 모든 데이터는 여전히 일반 텍스트가 됩니다.이를 완화하기 위해 LightSwitch에는 게시 마법사에 HTTPS 설정을 갖추어 응용 프로그램에서 보안 연결이 필요하도록 합니다.이 설정을 사용할 수 있게 되면 요청이 HTTP에서 HTTPS로 리디렉션되지만 여전히 웹 사이트에 HTTPS 인증서를 가져오고 구성해야 합니다.자세한 내용은 LightSwitch의 보안 고려 사항을 참조하십시오.

응용 프로그램에 대한 액세스 보안 외에 특정 엔터티에 대한 액세스를 제한하기 위해 LightSwitch에서 역할 기반 보안을 사용할 수도 있습니다.예를 들어, 모든 인증 사용자가 주문 데이터를 표시할 수 있지만 관리자자만 급여 데이터를 표시할 수 있습니다.자세한 내용은 LightSwitch 인증 및 권한 부여을 참조하십시오.

LightSwitch는 OData 끝점에서 엔터티 집합 또는 엔터티 속성을 숨기거나 제외하는 직접 메커니즘을 제공하지 않습니다.데이터 계층에 연결하는 모든 내용이 서비스 끝점에 표시됩니다.데이터 서비스 코드에서 기본 제공 액세스 컨트롤 메서드를 사용하여 이러한 리소스에 대한 액세스를 제어할 수 있습니다.자세한 내용은 코드를 사용하여 데이터 관련 작업 수행을 참조하십시오.

다음 예제는 사용자가 제품 엔터티에서 데이터를 업데이트하거나 삭제하는 것을 방지하는 코드를 보여줍니다.

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 메서드로 행 수준 필터링을 제공합니다.이 메서드를 사용하여 엔터티에서 더 작은 레코드 집합을 반환할 수 있습니다.다음 예제는 5에 대한 TerritoryID를 가지는 고객 레코드만 반환합니다.

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;
}

LightSwitch OData 서비스 사용

모든 플랫폼에서 OData를 지원하는 모든 응용 프로그램은 LightSwitch에서 OData 피드를 사용할 수 있습니다.OData 피드에 연결하는 메서드는 응용 프로그램마다 다르지만 일반적으로 LightSwitch 서비스 끝점만 제공합니다.

LightSwitch 문서는 Odata를 사용하는 응용 프로그램의 몇 가지 예제를 포함합니다.

참고 항목

작업

LightSwitch 인증 및 권한 부여

연습: LightSwitch에서 OData 서비스 노출 및 사용

연습: Windows 스토어 앱에서 LightSwitch 데이터 사용

연습: PowerPivot을 사용하여 Excel에서 LightSwitch 서비스 사용

개념

LightSwitch 응용 프로그램 데이터 노출

LightSwitch의 보안 고려 사항

코드를 사용하여 데이터 관련 작업 수행