블로그 이미지
정홍주
Azure에 대한 내용뿐만 아니라 새로운 트렌드로 빅데이터, BI, SharePoint, 앱 등의 내용을 다룹니다.

calendar

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Notice

'Client OM'에 해당되는 글 3

  1. 2011.01.23 REST -.NET
  2. 2011.01.23 Client Object Model - .NET
  3. 2011.01.23 SharePoint 2010 데이터 기술
2011.01.23 22:16 SharePoint/SharePoint 2010

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

Client Side OM에서 Client OM은 이전내용에서 다루었으며 이번 블로깅은 SharePoint 2010에서 REST API 에 대한 내용을 다루어 보겠습니다

 

SharePoint 2010에서는 Representational State Transfer (REST)를 통한 데이터 작업이 가능합니다.

SharePoint 목록 데이터, 문서 라이브러리의 Excel 문서의 차트, 표 등의 데이터를 손쉽게 액세스 할 수 있습니다.

액세스 하는 방법은 ListData.svc 를 통해서 진행하게 됩니다. 응용 프로그램에서 서비스 참조 추가 등을 통해 처리되게 됩니다.

 

아래 그림은 ListData.svc 를 액세스한 결과입니다.

http:/SiteCollectionName/_vti_bin/ListData.svc

 


해당 리스트만 보기 위해서는 마지막에 리스트의 이름을 입력합니다.

_vti_bin/ListData.svc/
공지사항

 


REST
를 액세스 하는 구문은 아래와 같으며 다양하게 액세스 할 수 있습니다.

/_vti_bin/ListData.svc/{Entity}[({identifier})]/[{Property}]

) 공지사항 #3의 제목

/_vit_bin/ListData.svc/공지사항(9)/제목

* 인터넷 옵션의 피드 보기 사용을 해제해야 결과를 볼 수있습니다.

 
목록과 항목을 액세스 하는 경우는 아래 구문의 예를 통해서 가능합니다. 



정렬 등 옵션에 대한 내용은 아래 표를 참고하십시오. 

 

REST의 일반적인 내용은 살펴보았습니다. REST를 이용해서 Client Side에서 여러 응용 프로그램을 통해(.NET, Silverlight, Javascript) 액세스 가능합니다. 여기서는 .NET 응용 프로그램에서 액세스 해보도록 하겠습니다.

.NET Windows 응용 프로그램을 생성하고 서비스 참조 추가에 REST URL을 입력하고 프록시 클래스를 생성합니다. 프록시에 대한 클래스 뷰는 아래와 같습니다.

 

사이트의 제목이 “Home” 이므로 HomeDataContext 클래스가 생성되며 한글 사이트라 공지사항Item” 이라는 클래스와 클래스의 한글 속성 들을 확인할 수 있습니다.

이제는 프록시 클래스를 통해 DataGrid에 공지사항 목록을 바인딩해보도록 하겠습니다.

아래와 같은 소스를 작성합니다.


WCF 와 달리 HomeDataContext의 클래스는 Uri 를 지정해주어야 합니다.

Where OrderBy 는 생략했습니다. 실행한 결과는 아래와 같습니다.

 

위에서 살펴본 것처럼 REST –ListDataSvc 를 통해 Client Side에서 손쉽게 SharePoint 2010 SharePoint 데이터를 액세스할 수 있습니다.

 

목록을 읽기만 하는 것이 아니고 항목을 추가하거나 수정, 삭제할 수 있습니다.

아래 구문으로 공지사항에 항목을 추가해보도록 하겠습니다.

아래 그림을 통해 먼저 공지사항Item 클래스의 다이어그램을 확인해봅니다. (한글 속성.., ㅠㅠ)

 

아래 코드를 통해 공지사항Item의 인스턴스를 생성해서 DataContext SaveChanges 메서드를 호출
하면 됩니다.


본문에는 아래와 같이 이미지가 보이게 HTML 코드를 입력했습니다. 아래에서 추가된 결과를 확인 가능합니다.

 

이상으로 SharePoint 2010에서 REST의 소개와 .NET 응용 프로그램에서 REST 를 사용하는 방법을 알아보았습니다.

 


신고

'SharePoint > SharePoint 2010' 카테고리의 다른 글

REST - jQuery  (0) 2011.01.23
REST – Silverlight  (0) 2011.01.23
REST -.NET  (0) 2011.01.23
Client Object Model – 정리  (0) 2011.01.23
Client Object Model - Javascript(2)  (0) 2011.01.23
Client Object Model - Javascript(1)  (0) 2011.01.23
posted by 정홍주
2011.01.23 22:11 SharePoint/SharePoint 2010
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

이전 블로그에서 설명한 SharePoint 2010 데이터 기술 중에서 Client OM(개체 모델)에 대한 내용을 알아보도록 하겠습니다.

SharePoint 2010 데이터 기술에 대한 내용은 아래 주소를 참고하시기 바랍니다.

http://www.vsts2010.net/224

 

SharePoint 2010 박스 위가 아닌 원격에 떨어져 있을 경우 SharePoint 개체를 액세스하려면 웹 서비스를 통해 힘들게 해야 하지만 SharePoint 2010에서는 아주 손쉽게 접근할 수 있도록 Client OM을 제공해주고 있습니다. 생성할 수 있는 유형은 .NET, Silverlight, Javascript 를 통해 접근할 수 있습니다.

 

아래 표를 보시면 클래스와 메서드 등의 경우 서버 개체 모델과 거의 유사하게 구성되어 있습니다.

Server
(Microsoft
.SharePoint)

.NET Managed
(Microsoft.SharePoint
.Client)

Silverlight
(Microsoft.SharePoint
.Client.Silverlight)

JavaScript
(SP.js)

SPContext

ClientContext

ClientContext

ClientContext

SPSite

Site

Site

Site

SPWeb

Web

Web

Web

SPList

List

List

List

SPListItem

ListItem

ListItem

ListItem

SPField

Field

Field

Field

 

표에서 보듯이 SP 라는 글자가 없어지고 거의 동일하게 작업이 가능합니다. 하지만 일부는 변경되어 있습니다. 웹 서비스를 통해 CAML을 처리하지 않아도 API를 통해 정말 편하게 접근이 가능합니다.

 

먼저 .NET Client OM을 알아보도록 하겠습니다. 그리고 다음 블로그에서 Silverlight, Javascript를 알아보도록 하겠습니다.

 

Visual Studio 2010을 통해 WPF 응용 프로그램을 생성합니다. 이름은 WpfClientOMDemo라고 하겠습니다.

Button 컨트롤을 디자인 영역으로 드래그하고 Click 이벤트를 생성합니다.

.NET Managed Client OM을 이용하기 위해서는 아래 어셈블리를 참조해야 합니다.

Microsoft.SharePoint.Client.dll

Microsoft.SharePoint.Client.Runtime.dll

 

경로는 아래와 같습니다.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI

코드보기로 이동하여 소스 코드에 아래 using 구문을 추가합니다.

using Microsoft.SharePoint.Client;

using SP=Microsoft.SharePoint.Client;

 

InitializeComponent() 아래 부분에 다음과 같은 코드를 입력하고 프로젝트 속성에서

.NET Framework 4.0 Client Profile .NET Framework 4.0으로 변경하고 실행해봅니다.

x86은 그대로 두고 진행하면 됩니다.

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

Web site = context.Web;


context.Load(site);

context.ExecuteQuery();

site.Title = site.Title + " Client OM";

site.Update();

context.ExecuteQuery();


위 코드는 SP 라는 이름이 붙어있다면 서버 개체 모델과 동일하다는 것을 알 수 있습니다.

 

결과는 아래처럼 “Home Client OM”으로 변경되어 있습니다.


디자인 보기로 이동하여 ListBox 컨트롤을 드래그합니다.

코드 보기에서 위에서 작성한 코드는 주석처리하고 아래와 같은 코드를 입력합니다.

아래 코드는 목록들의 이름을 리스트박스에 추가해서 나타내는 내용입니다.

 

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

Web site = context.Web;


ListCollection
lists = site.Lists;

IEnumerable<Microsoft.SharePoint.Client.List> listcollection =

context.LoadQuery(lists.Include(l => l.Title, l => l.Id));

context.ExecuteQuery();


listbox1.ItemsSource = listcollection;

listbox1.DisplayMemberPath = "Title";

 

 

결과는 다음과 같습니다.



작성한 코드는 주석처리하고 아래와 같은 코드를 입력합니다.

아래 코드는 사이트에 HJ 라는 공지사항을 생성하고 빠른 실행에 표시해주는 코드입니다. 이런 내용을 서버 개체 모델로 하는 것이 아니라 클라이언트 개체 모델로 해주고 있습니다.

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

Web site = context.Web;


ListCreationInformation listCI = new ListCreationInformation();

listCI.Title = "HJ";

listCI.TemplateType = (int)SP.ListTemplateType.Announcements;

listCI.QuickLaunchOption = SP.QuickLaunchOptions.On;


SP.List li = site.Lists.Add(listCI);

site.Update();

 



위에서 생성한 HJ라는 공지사항에 항목을 입력해보겠습니다. 작성된 코드를 주석처리하고

HJ를 찾아서 ListItem을 생성하는 코드를 아래와 같이 작성합니다. ListItemCreationInformation 이라는 클래스를 이용합니다.

 

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

Web site = context.Web;


SP.List li = site.Lists.GetByTitle("HJ");

            ListItemCreationInformation listitemCI = new ListItemCreationInformation();

SP.ListItem item = li.AddItem(listitemCI);


item["Title"] = "hongju";

item["Body"] = "Consulting Services";

item.Update();

context.ExecuteQuery();

 

HJ 라는 공지 사항에 항목이 하나 추가되어 있는 것을 아래 그림과 같이 확인이 가능합니다.




위에서 Client Object Model에 대한 개요와 .NET Managed Client Object Model에 대한 내용을 알아보았습니다. 서버 개체 모델은 서버 박스 위에서 실행되는 웹 파트나 유틸리티를 통해 처리되지만 원격의 클라이언트에서 실행되도록 하려면 SharePoint 2010에서는 Client OM을 사용할 수 있습니다. 다음 블로그에서 Silverlight Client Object Model 을 알아보도록 하겠습니다.



 


신고
posted by 정홍주
2011.01.23 22:04 SharePoint/SharePoint 2010
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

이전 버전에서는 SharePoint 관련 개체와 데이터를 액세스하는 것은 서버 측면에서는 SharePoint Server Object Model CAML 을 사용하고 원격 클라이언트에서는 SharePoint Web Service를 이용했습니다. SharePoint Web Service CAML 의 사용이 쉽지 않았고 개발하기가 불편했습니다.

 

SharePoint 2010에서는 아래 그림처럼 클라이언트 측면에서 Client Object Model 을 제공하고 있으며 REST 기반의 액세스가 가능합니다. 서버 측면에서는 CAML 대신 LINQ를 사용할 수 있게 되었습니다.



이전 버전과 비교해서 생산성이나 접근할 수 있는 부분이 다양해서 아주 유용하게 사용할 수 있습니다.

 

Server Object Model을 알아보면 SharePoint 머신 위에서 구동되는 웹 파트, 이벤트, 관리자 프로그램, 배치 프로그램 등이며 SharePoint 어셈블리를 직접 호출할 수 있다는 것이 Server OM입니다.

 

LINQ는 목록의 수 많은 항목 중에서 조건에 맞는 항목을 가져오고 원하는 정렬을 시키려고 하면 CAML이라는 XML을 직접 구성하고 SPQuery 라는 클래스를 통해 넘겨주어야 했습니다. 그래서 별도로 SharePoint MVP가 만든 CAML Builder 라는 도구가 유용하게 사용되었습니다. 2010 환경에서도 CAML은 사용이 가능합니다만 LINQ는 알고 있는 것처럼 쿼리 식으로 개체를 데이터처럼 액세스 할 수 있습니다. 웹 파트 등에 사용하면 아주 유용하다는 생각이 팍 드실 겁니다.

 

Client OM은 서버 머신 위가 아닌 원격 클라이언트에서 동작되는데 SharePoint 개체나 데이터를 원격 클라이언트에서 접근할 수 있다는 것입니다.

생성할 수 있는 유형은 .NET, Silverlight, Javascript 를 통해 접근할 수 있습니다. SharePoint 2010에서는 Silverlight 환경이 기본적으로 구비되어 있으며 Silverlight 웹 파트도 기본적으로 생성되어 있습니다. Client OM을 사용할 수 있는 내용으로 Silverlight 웹 파트를 생성해서 접근할 수 있습니다.

 

REST 기반 API 는 기존 웹 서비스보다 더 간단하게 사용이 가능하며 개체로 접근을 손쉽게 할 수 있습니다. ADO.NET Data Services 를 이용해서도 SharePoint 개체와 데이터를 액세스 할 수 있습니다.

 

 

SharePoint 2010 데이터 기술을 알아보았고 다음 블로그부터 하나씩 구체적으로 알아보도록 하겠씁니다.


신고
posted by 정홍주
prev 1 next

티스토리 툴바