티스토리 뷰

UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

앞에서 .NET Managed Client Object Model에 대한 내용을 알아보았습니다. 이번 블로그에서는Client Object Model(개체 모델) Silverlight을 이용해서 액세스해보도록 하겠습니다.

 

SharePoint 2010에서 Media 웹 파트, Silverlight 웹 파트가 기본적으로 제공이 되고 있어 웹 파트를 만들지 않아도 되고 그냥 콘텐트를 생성하면 됩니다.

Client OM을 액세스하기 전에 Silverlight 지원되는 내용을 먼저 알아보겠습니다.

 

1. 사이트 작업의 기타 옵션을 클릭해서 여러 목록이나 라이브러리를 생성할 수 있습니다. 클릭했을 때의 화면이 Silverlight 콘텐트입니다.


2. Silverlight 미디어 웹 파트를 제공해주고 있습니다. 또한 이미지 라이브러리에 동영상을 업로드해서 바로 재생하기가 가능합니다.


3. Silverlight 웹 파트를 제공하고 있습니다.


그 외 지원되는 내용도 있지만 생략하고 바로 Silverlight을 통해 Client OM을 액세스해보도록 하겠습니다.

본격적으로 Silverlight Client Object Model을 살펴보도록 하겠습니다.

Visual Studio 2010에서 Silverlight 응용 프로그램을 생성합니다.

프로젝트이름은 SilverlightClientOMDemo으로 지정했습니다. Silverlight 응용 프로그램의 디자인은 아래와 같이 TextBox 컨트롤 2개와 Button 컨트롤 1개로 구성되어 있습니다.


Client OM을 액세스하기 위해 아래 어셈블리를 참조 추가합니다.

Microsoft.SharePoint.Client.Silverlight.dll

Microsoft.SharePoint.Client.Silverlight.Runtime.dll

 

아래 경로에 어셈블리들이 위치해 있습니다.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin

 

Using 구문에 다음과 같은 코드를 입력합니다.

using Microsoft.SharePoint.Client;

 

 

생성자 위에 비동기적으로 UI 스레드를 처리하기 위해 아래 코드를 추가합니다. Dispatcher BeginInvoke 에서 사용되어야 합니다.

private delegate void UpdateUIMethod();

 

 

Client OM Button Click 이벤트에서 아래와 같은 코드를 작성합니다.

ClientContext context = new ClientContext("http://sp.webtime.co.kr");

Web site = context.Web;


List list = context.Web.Lists.GetByTitle("HJ");


ListItem listitem = list.AddItem(new ListItemCreationInformation());

listitem["Title"] = this.txtTitle.Text;

listitem["Body"] = this.txtBody.Text; ;

listitem.Update();      


context.ExecuteQueryAsync(Succeeded, Failed);

 

맨 마지막 라인을 제외하면 .NET Managed Client Object Model가 동일합니다.

Succeeded, Failed 에 대한 메서드는 아래와 같이 정의합니다.

private void Succeeded(object sender, ClientRequestSucceededEventArgs e)

        {

            UpdateUIMethod updateUI = DisplayInfo;

            this.Dispatcher.BeginInvoke(updateUI);

        }


private
void DisplayInfo()

        {

            this.lblInfo.Text = "Success ";

        }


private
void Failed(object sender, ClientRequestFailedEventArgs e)

        {

            MessageBox.Show("Create Fail");

        }

 

Silverlight 응용 프로그램을 빌드하여 이상이 없으면 xap 파일을 SharePoint 2010 사이트의 문서 라이브러리로 업로드합니다. 14 폴더의 ClientBin 폴더에 배포할 수도 있습니다.

업로드하고 나서 xap 파일을 오른쪽 클릭하여 바로 가기를 복사합니다.


HJ
공지사항을 클릭하여 페이지 편집으로 Silverlight 웹 파트를 추가합니다.


Silverlight 웹 파트 대화 상자에서 이전에 복사했던 바로 가기를 붙여넣기 합니다.


페이지 편집을 중지하고 TextBox 에 값을 입력하고 버튼을 클릭합니다.


공지사항 내용 보기를 통해서도 확인이 가능합니다.


Silverlight Client Object Model을 액세스 해보았습니다. 비동기적으로 호출하는 것(ExecuteQueryAsync)만 유념하면 .NET Managed Client Object Model과 거의 동일합니다.

다음 블로그에서는 Silverlight Client Object Model의 다른 예(LoadQuery)를 알아보도록 하겠습니다.

댓글