zjy19811001 发表于 2015-9-24 09:28:24

SharePoint 2010中的客户端模型

  1.介绍
  客户端模型是SharePoint 2010才提供的,可以更灵活的在任何客户端设备中操作SharePoint对象,在2007版本中没有客户端模型,2010中有三种客户端模型JavaScript,SilverLight,.NET Managed。下面是对比情况:
  
      
  
  2.原理
  当我们使用客户端模型访问SharePoint 2010服务器对象的时候,请求首先会被打包成XML格式的SharePoint对象模型,然后在由客户端发送到服务器端,在服务器端调用服务器端的对象模型,。然后得到反应结果以JSON
  格式发给客户端对象模型,客户端模型在解析得到的结果,展现给前端,如下图:

  3.客户端模型对象
服务器端客户端JavascriptMicrosoft.SharePoint.SPContextMicrosoft.SharePoint.Client.ClientContextSP.ClientContextMicrosoft.SharePoint.SPSiteMicrosoft.SharePoint.Client.SiteSP.SiteMicrosoft.SharePoint.SPWebMicrosoft.SharePoint.Client.WebSP.WebMicrosoft.SharePoint.SPListMicrosoft.SharePoint.Client.ListSP.ListMicrosoft.SharePoint.SPListItemMicrosoft.SharePoint.Client.ListItemSP.ListItemMicrosoft.SharePoint.SPFieldMicrosoft.SharePoint.Client.FieldSP.Field  4.一些例子代码
  using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
  namespace OM
{
    public partial class Form1 : Form
    {
      public Form1()
      {
            InitializeComponent();
      }
  private void button1_Click(object sender, EventArgs e)
      {
            Cursor old = this.Cursor;
            this.Cursor = Cursors.WaitCursor;
  Microsoft.SharePoint.Client.ClientContext clientContext = new Microsoft.SharePoint.Client.ClientContext("http://moss2010/sites/test");
            NetworkCredential nwc = CredentialCache.DefaultNetworkCredentials;
            clientContext.Credentials = nwc;
            Microsoft.SharePoint.Client.Web web = clientContext.Web;
  clientContext.Load(web);
            clientContext.ExecuteQuery();
  this.lblSiteTitle.Text = web.Title;
  this.Cursor = old;
  }
  private void button2_Click(object sender, EventArgs e)
      {
            Cursor old = this.Cursor;
            this.Cursor = Cursors.WaitCursor;
  Microsoft.SharePoint.Client.ClientContext clientContext = new Microsoft.SharePoint.Client.ClientContext("http://moss2010/sites/test");
            NetworkCredential nwc = CredentialCache.DefaultNetworkCredentials;
            clientContext.Credentials = nwc;
            Microsoft.SharePoint.Client.Web web = clientContext.Web;
  var query = from list
                        in clientContext.Web.Lists
                        where list.Title == "SharePoint Team Members"
                        select list;
  var result = clientContext.LoadQuery(query);
            clientContext.ExecuteQuery();
  Microsoft.SharePoint.Client.List listMember = result.SingleOrDefault<Microsoft.SharePoint.Client.List>();
  Microsoft.SharePoint.Client.CamlQuery caml = new Microsoft.SharePoint.Client.CamlQuery();
            caml.ViewXml = @"<View><Query></Query></View>";
  Microsoft.SharePoint.Client.ListItemCollection listItems = listMember.GetItems(caml);
            clientContext.Load(listItems);
            clientContext.ExecuteQuery();
  List<Employee> allDatas = new List<Employee>();
            foreach (Microsoft.SharePoint.Client.ListItem item in listItems)
            {
                allDatas.Add(new Employee(item["Title"], item["Age"], item["Sex"]));
            }
            dataGridView1.DataSource = allDatas;
  this.Cursor = old;
      }
  private void button3_Click(object sender, EventArgs e)
      {
            Microsoft.SharePoint.Client.ClientContext clientContext = new Microsoft.SharePoint.Client.ClientContext("http://moss2010/sites/test");
            NetworkCredential nwc = CredentialCache.DefaultNetworkCredentials;
            clientContext.Credentials = nwc;
            Microsoft.SharePoint.Client.Web web = clientContext.Web;
  var query = from list
                        in clientContext.Web.Lists
                        where list.Title == "SharePoint Team Members"
                        select list;
  var result = clientContext.LoadQuery(query);
            clientContext.ExecuteQuery();
  Microsoft.SharePoint.Client.List listMember = result.SingleOrDefault<Microsoft.SharePoint.Client.List>();
  Microsoft.SharePoint.Client.CamlQuery caml = new Microsoft.SharePoint.Client.CamlQuery();
            caml.ViewXml = @"<View><Query><Where><Eq><FieldRef Name='Employee_x0020_Name' /><Value Type='Text'>" + tbxInput.Text + "</Value></Eq></Where></Query></View>";
  Microsoft.SharePoint.Client.ListItemCollection listItems = listMember.GetItems(caml);
            clientContext.Load(listItems);
            clientContext.ExecuteQuery();
  this.lblOutput.Text = listItems.FieldValues["Title"].ToString();
  this.Cursor = old;
      }
    }
  public class Employee
    {
      public Employee(object title, object age, object sex)
      {
            this.Age = age;
            this.Sex = sex;
            this.Title = title;
      }
      public object Title { get; set; }
      public object Age { get; set; }
      public object Sex { get; set; }
    }
}
页: [1]
查看完整版本: SharePoint 2010中的客户端模型