클레임, Azure 및 SharePoint 통합 도구 키트 4부
클레임, Azure 및 SharePoint 통합 도구 키트 4부
이 게시물은 CASI(클레임, Azure 및 SharePoint 통합) 키트에 대한 내용을 다루는 총 5부의 시리즈 중 4부입니다. 1부에서는 전체 프레임워크와 솔루션에 대해 간략히 살펴보고 시리즈에서 다룰 내용에 대해 설명했습니다. 2부에서는 WCF 응용 프로그램을 만들고 이러한 응용 프로그램에서 클레임을 인식하도록 설정한 다음 이를 Windows Azure로 옮기기 위한 지침을 다뤘습니다. 3부에서는 새로운 사용자 지정 컨트롤을 _layouts 디렉터리의 페이지에 추가하여 SharePoint 사이트를 Azure 데이터와 연동하는 데 사용할 기본 클래스를 차례로 소개했습니다. 이 게시물에서는 이 프레임워크에 포함할 웹 파트에 대해 다루겠습니다. 이 글은 특히 3부에서 여러분이 작성하여 레이아웃 페이지에 추가한 사용자 지정 컨트롤을 사용하기 위한 것입니다.
웹 파트 사용
웹 파트를 사용하기 전에 다음 두 가지를 이행한 것으로 가정합니다. 먼저, Windows Azure에서 WCF 서비스를 호스팅하고 사용 중입니다. 그리고 이 시리즈의 3부에서 설명한 대로 사용자 지정 컨트롤을 만들어 레이아웃 페이지에 추가했습니다. 추가로 SharePoint 팜에 있는 각 서버의 GAC에 CASI 키트 기본 클래스 어셈블리와 사용자 지정 컨트롤 어셈블리를 모두 배포한 것으로 간주하겠습니다. 또한 사용자 지정 컨트롤을 호스팅하는 사용자 지정 aspx 페이지가 팜에 있는 모든 웹 프런트 엔드 서버의 레이아웃 디렉터리에 배포되어 있다고 가정하겠습니다. 웹 파트 사용 방법을 설명하기 위해 제가 3부 게시물에 업로드하여 첨부한 AzureWcfPage 예제 프로젝트를 사용하겠습니다. 그럼 지금부터 SharePoint 사이트에서 Azure의 데이터를 렌더링하기 위해 이 두 가지를 결합하는 방법을 살펴보겠습니다.
참고: 필수적인 사항은 아니지만 일반적으로 호출되는 WCF 메서드가 HTML을 반환하면 추가적인 처리 과정 없이 바로 페이지에 표시될 수 있기 때문에 웹 파트 사용이 훨씬 편리해집니다.
첫 번째 단계는 AzureRender.wsp 솔루션을 팜에 배포하는 것입니다. wsp는 본 게시물에 첨부된 zip 파일에 포함되어 있습니다. 여기에는 Azure DataView WebPart 및 jQuery 1.4.2를 레이아웃 디렉터리에 배포하는 기능이 들어 있습니다. 솔루션이 배포되고 사이트 모음을 위한 기능이 활성화되면 웹 파트를 페이지에 추가할 수 있습니다. 여기까지 수행한 것으로도 Azure 데이터를 렌더링할 준비가 거의 끝났지만 속성을 하나 이상 설정해야 합니다. 그러면 웹 파트에 사용되는 이러한 속성에 대해 알아보겠습니다.
웹 파트 속성
모든 웹 파트 속성은 연결 속성 섹션에 있습니다. 최소한 Data Page 속성을 여러분이 만들어 배포한 레이아웃 페이지로 설정해야 합니다. 예를 들면 /_layouts/AzureData.aspx와 같습니다. 사용자 지정 컨트롤의 서버 태그에 최소한 WcfUrl 및 MethodName 속성이 정의되어 있다면 이것으로 할 일은 다한 것입니다. 그 외 다른 작업을 하지 않으면 웹 파트가 페이지를 호출하고 페이지에 구성된 WCF 끝점 및 메서드를 사용하고 메서드가 반환한 모든 데이터를 사용하여(메서드는 HTML 형식으로 데이터를 반환함) 웹 파트에서 렌더링합니다. 하지만 유연성을 최대한 발휘하기 위해 다른 웹 파트 속성을 사용하는 경우가 대부분일 것이므로 각 속성을 하나씩 살펴보기로 합니다.
· Method Name(메서드 이름)* – 호출할 WCF 응용 프로그램의 메서드 이름입니다. 사용자 지정 Javascript 함수로 레이아웃 페이지를 호출해야 할 경우 이 속성의 쿼리 문자열 매개 변수는 “methodname”이 됩니다.
· Parameter List(매개 변수 목록)* – WCF 메서드의 매개 변수를 세미콜론으로 구분한 목록입니다. 이 시리즈 2부 및 3부에서 언급한 대로 기본 데이터 형식(string, int, bool, long 및 datetime)만 지원합니다. 더 복잡한 데이터 형식을 원하면 먼저 문자열(string)로 직렬화를 해제한 다음 메서드를 호출하고 WCF 끝점에서 복잡한 형식으로 다시 직렬화합니다. 사용자 지정 Javascript 함수로 레이아웃 페이지를 호출해야 할 경우 이 속성의 쿼리 문자열 매개 변수는 “methodparams”가 됩니다.
· Success Callback Address(성공 콜백 주소) – 레이아웃 페이지의 jQuery 요청을 완료한 후 콜백되는 Javascript 함수입니다. 기본 설정에 따라 이 속성은 웹 파트와 함께 제공되는 Javascript 함수를 사용합니다. 사용자 지정 함수를 사용할 경우 함수 시그니처는 function yourFunctionName(resultData, resultCode, queryObject)과 같습니다. 자세한 내용은 https://api.jquery.com/jQuery.ajax/(영문일 수 있음)에서 jQuery AJAX 문서를 참조하십시오.
· Error Callback Address(오류 콜백 주소) – 레이아웃 페이지의 jQuery 요청에 오류가 발생한 경우 콜백되는 Javascript 함수입니다. 기본 설정에 따라 이 속성은 웹 파트와 함께 제공되는 Javascript 함수를 사용합니다. 사용자 지정 함수를 사용할 경우 함수 시그니처는 function yourFunctionName(XMLHttpRequest, textStatus, errorThrown)과 같습니다. 자세한 내용은 https://api.jquery.com/jQuery.ajax/(영문일 수 있음)에서 jQuery AJAX 문서를 참조하십시오.
· Standard Error Message(표준 오류 메시지) – 웹 파트의 서버측 처리 도중 오류가 발생할 경우 웹 파트에 표시되는 메시지입니다. 즉, 데이터를 Azure에서 실제로 가져오고 있는 경우의 시나리오는 포함하지 않습니다.
· Access Denied Message(액세스 거부 메시지)* – 특정 메서드에 대한 사용자의 액세스가 거부되는 경우 표시해야 하는 액세스 거부 오류 메시지입니다. 예를 들어 시리즈 2부에서 설명한 대로 여기서는 사용자의 토큰을 WCF 호출에 전달하기 때문에 “이 사용자는 Sales Managers 그룹에 속해 있어야 합니다” 같은 PrincipalPermission 요구를 메서드에 추가할 수 있습니다. 사용자가 PrincipalPermission 요구를 충족하지 못하면 WCF 호출이 실패하고 액세스 거부 오류가 발생합니다. 이 경우 웹 파트는 내용에 관계없이 액세스 거부 메시지를 표시합니다. HTML 태그를 사용하여 글꼴을 굵게 또는 빨간색으로 설정하는 등의 작업을 수행하기 위해 이 메시지에 다양한 서식을 사용할 수 있습니다(즉, <font color='red'>액세스 권한이 없습니다. 관리자에게 문의하십시오.</font>). 사용자 지정 Javascript 함수로 레이아웃 페이지를 호출해야 할 경우 이 속성의 쿼리 문자열 매개 변수는 “accessdenied”가 됩니다.
· Timeout Message(시간 초과 메시지)* – WCF 메서드 호출을 실행하는 도중 시간 제한 오류가 발생할 때 표시되는 메시지입니다. 이 속성에서도 글꼴을 굵게 또는 빨간색으로 설정하는 등의 다양한 서식을 지원합니다. 사용자 지정 Javascript 함수로 레이아웃 페이지를 호출해야 할 경우 이 속성의 쿼리 문자열 매개 변수는 “timeout”이 됩니다.
· Show Refresh Link(새로 고침 링크 표시) – Azure 데이터 결과 위에 새로 고침 아이콘을 만들려면 이 확인란을 선택합니다. 이 아이콘을 클릭하면 WCF 메서드가 다시 실행되어 최신 데이터를 가져옵니다.
· Refresh Style(새로 고침 스타일) – 새로 고침 링크를 표시할 때 사용하는 IMG 태그의 기본 Style 특성에 다른 스타일 특성을 추가할 수 있습니다. 예를 들어 이 속성으로 “float:right;”를 추가하면 새로 고침 이미지가 오른쪽으로 정렬됩니다.
· Cache Results(캐시 결과) – jQuery 라이브러리가 쿼리 결과를 캐시하도록 하려면 이 확인란을 선택합니다. 즉, 페이지가 로드될 때마다 캐시된 버전의 쿼리 결과를 사용합니다. 이렇게 되면 Azure에 대한 왕복 횟수가 줄어 최종 사용자에 대한 성능이 향상됩니다. 가져올 데이터가 자주 변경되지 않는 경우 결과를 캐시하는 것이 좋습니다.
· Decode Results(결과 디코딩)* – WCF 응용 프로그램에서 HtmlEncode 처리된 결과를 반환하는 경우에 대비하여 이 확인란을 선택합니다. 이 속성을 true로 설정하면 결과에 HtmlDecoding이 적용됩니다. 대부분의 경우 이는 필요하지 않습니다. 사용자 지정 Javascript 함수로 레이아웃 페이지를 호출해야 할 경우 이 속성의 쿼리 문자열 매개 변수는 “encode”가 됩니다.
* – 사용자 지정 컨트롤의 AllowQueryStringOverride 속성을 false로 설정하면 이들 속성은 무시됩니다.
일반적인 사용 사례
WCF 메서드에서 HTML을 반환한다고 가정하면 대부분의 경우 페이지에 웹 파트를 추가하고 속성 두세 개를 설정할 것입니다. 대개 Data Page, Method Name 및 Parameter List를 설정할 가능성이 높습니다.
Azure에서 반환되는 데이터를 보다 고급스럽게 표시 또는 처리해야 하는 경우에는 사용자 지정 Javascript 함수를 사용해야 합니다. 이 경우 페이지에 Javascript를 추가하고 Success Callback Address 속성을 Javascript 함수의 이름으로 설정해야 합니다. add(추가), update(업데이트), delete(삭제) 등과 같이 WCF 응용 프로그램에 대한 추가 포스트백이 필요한 경우 사용자 지정 Javascript 함수에 이를 추가하고 적절한 Method Name 및 Parameter List 값을 사용하여 사용자 지정 레이아웃 페이지를 호출해야 합니다. 사용할 쿼리 문자열 변수 이름은 위에서 다루었습니다. jQuery에 ajax 메서드를 호출하여 레이아웃 페이지를 호출할 경우 웹 파트에서 사용하는 것과 비슷한 접근 방식을 사용할 수 있어야 합니다. 웹 파트에서 사용하는 호출 규칙은 아래 스크립트 함수를 기반으로 합니다. WCF 메서드에서 반환한 것이 아닌 페이지 결과를 모두 걸러내려면 dataFilter 속성을 계속 사용해야 합니다.
$.ajax({
type: "GET",
url: "/_layouts/SomePage.aspx",
dataType: "text",
data: "methodname=GetCustomerByEmail&methodparams=steve@contoso.local",
dataFilter: AZUREWCF_azureFilterResults,
success: yourSuccessCallback,
error: yourErrorCallback
});
직접 해보기
이제 전체 솔루션을 직접 사용하기 위한 준비를 마쳤습니다. 본 게시물에는 웹 파트용 솔루션이 들어 있는 zip 파일이 첨부되어 있습니다. 시리즈의 다음 게시물이자 마지막 게시물에서는 2부에서 개발한 사용자 지정 컨트롤을 사용하여 Azure에서 데이터를 가져와 이를 다른 컨트롤과 함께 ASP.NET 캐시에서 사용하는 방법과 이를 SharePoint 작업(여기서는 사용자 지정 SharePoint 타이머 작업)에서 사용하는 방법까지 다루겠습니다.
이 문서는 번역된 블로그 게시물입니다. 원본 문서는 The Claims, Azure and SharePoint Integration Toolkit Part 4를 참조하십시오.