Tags

, ,

CLIENT OBJECT MODEL TRONG SHAREPOINT 2010

Có rất nhiều kĩ thuật để từ 1 môi trường client có thể tương tác (đọc/ghi) với dữ liệu trong SharePoint. Một trong những kĩ thuật đó là sử dụng client.svc service. Service này có thể gọi theo đường dẫn URL /_vti_bin/client.svc và được xây dựng theo mô hình Client Object Model.

Client Object Model là gì?

Chúng ta đều biết, ngày nay có rất nhiều ứng dụng sử dụng những công nghệ ở phía client (client-side) như Ajax hay Silverlight và cũng 1 số lượng lớn các ứng dụng phân tán được phát triển. Làm sao để những ứng dụng này có thể làm việc với dữ liệu trong SharePoint? Rõ ràng, những ứng dụng này cần có 1 API chuẩn và Client Object Model cung cấp 1 client-side API với đầy đủ các tính năng thay thế cho server-side API.

SharePoint 2010 Client Object Model

SharePoint 2010 Client Object Model sử dụng 1 vài object để chuyển dữ liệu giữa server (sharepoint) và client (application). Tùy theo những môi trường phát triển ứng dụng khác nhau, chúng ta sử dụng những object khác nhau để tương tác với SharePoint 2010:

Trong đó, ClientContext object đóng vai trò rất quan trọng. Mọi tác vụ client muốn tương tác với server đều phải bắt đầu với object này.

Để hiểu rõ hơn, chúng ta có thể xem 1 ví dụ đơn giản, tạo 1 console application để hiển thị tiêu đề (title) của 1 site:

static void Main(string[] args)
{
string siteUrl = “http://sharepoint”;
using (ClientContext myContext = new ClientContext(siteUrl))
{
myContext.Load(myContext.Site);
myContext.ExecuteQuery();
Console.WriteLine(myContext.Site.Url);
}
}

Chúng ta có thể thấy, để lấy được tiêu đề site, cần phải gọi 2 method. ClientContext.Load() để chỉ thông tin cần phải lấy và ClientContext.ExecuteQuery() là động lệnh để thực hiện. Sau khi ExcecuteQuery, thông tin mới thực sự được lấy về.

Chúng ta có thể sử dụng ngôn ngữ LINQ để chỉ ra những thông tin cần lấy về. 2 đoạn code sau đây sẽ cùng hiển thị tiêu đề của các list trong site và chỉ hiển thị các list là visible.

1. Sử dụng ClientContext.Load

string siteUrl = “http://sharepoint”;
using (ClientContext myContext = new ClientContext(siteUrl))
{
myContext.Load(myContext.Web, web => web.Lists.Include(list => list.Title ).Where(field => field.Hidden == false));
myContext.ExecuteQuery();
foreach (List list in myContext.Web.Lists)
{
Console.WriteLine(list.Title);
}
}
}

2. Sử dụng ClientContext.LoadQuery

string siteUrl = “http://sharepoint”;
using (ClientContext myContext = new ClientContext(siteUrl))
{
var query = from list in myContext.Web.Lists
where list.Hidden != false
select list;
var lists = myContext.LoadQuery(query);
myContext.ExecuteQuery();
foreach (var list in lists)
{
Console.WriteLine(list.Title);
}
}
}

Chúng ta có thể cập nhật dữ liệu vào SharePoint thông qua method ClientContext.Update()ClientContext.ExcecuteQuery(). Ví dụ để cập nhật tiêu đề của 1 SharePoint site chúng ta sử dụng đoạn code sau:

myContext.Load(myContext.Web);
myContext.ExecuteQuery();
myContext.Web.Title = “New title”;
myContext.Web.Update();
myContext.ExecuteQuery();

Trên đây là 1 số ví dụ cơ bản về việc sử dụng client object model để tương tác dữ liệu của SharePoint từ 1 ứng dụng .NET. Đối với các ứng dụng có sử dụng Javascript hoặc Silverlight, chúng ta cũng lập trình tương tự với các object tương ứng được liệt kê ở phía trên.

Enjoy!!!
Nhat Phan