Glossar: CSOM

zurück zum Glossar

Synonyme

SharePoint .NET Framework client object model

Bedeutung

Das SharePoint .NET Framework Client Object Model (kurz: CSOM) ist eine Programmierschnittstelle (API), die der Entwicklung von SharePoint-Lösungen dient, die aus der technischen Perspektive des Anwenders laufen („clientseitig“).

Clientseitige Entwicklung ist in SharePoint auf verschiedenen Wegen möglich. Verbreitet ist die Verwendung der REST-API, JSOM und CSOM.

Im Gegensatz zum .NET Server Side Model interagieren CSOM-Lösungen immer in einem Clientcontext. Diese beinhaltet u.a. den Benutzer, unter dessen Identität der CSOM-Code mit dem SharePoint-Anwendungsserver interagiert. Clientseitiger Code kann somit nicht SharePoint Zugriffsrechtekonzepte unterlaufen.

CSOM-Anwendungen benötigen die Assemblies Microsoft.SharePoint.Client.Runtime.dll und Microsoft.SharePoint.Client.dll. Bei Erstellung eines Projekts des Typs „App für SharePoint 2013“ in Visual Studio 2012, werden diese Referenzen zum Beispiel automatisch hinzugefügt.

Beispiele (C#)

Namespace einbinden (Grundlage für alle weiteren Beispiele):


using Microsoft.SharePoint.Client;
	

Namen (Titel) einer Website abfragen:


/*
Der ClientContext liefert das web-Objekt (die Website).
*/
ClientContext context = new ClientContext("http://SiteAdresse..."); 
Web web = context.Web; 
context.Load(web); 
context.ExecuteQuery(); 
Console.Writeline(web.Title);
	

Alle Listen einer Website abfragen:

	
/* 
Context.Load fragt alle Listen des web-Objekts nach ihrem 
Namen (Title) und der Listen-ID
*/
ClientContext context = new ClientContext("http://SiteAdresse..."); 
Web web = context.Web; 
context.Load(web.Lists, 
    lists => lists.Include(list => list.Title,
        list => list.Id)); 
context.ExecuteQuery(); 

/*
Nach der Abfrage kann die geladene Collection ausgegeben werden
*/
foreach (List list in web.Lists) 
{ 
    label1.Text = label1.Text + ", " + list.Title; 
}
	

Ankündigungen einer Ankündigungsliste anzeigen:

	
/*
Wir adressieren die Ankündigungsliste mit dem Namen "Neuigkeiten"
*/
ClientContext context = new ClientContext("http://SiteAdresse..."); 
List announcementsList = context.Web.Lists.GetByTitle("Neuigkeiten"); 

/*
Operationen auf Listen, können gut mit CAML erledigt warden.
Hier wird eine CAML-Query erzeugt, die max. 100 Elemente betrifft, 
unabhängig davon, ob die Listenelemente in einer flachen Liste, 
oder in einer Ordnerstruktur liegen.
*/
CamlQuery query = CamlQuery.CreateAllItemsQuery(100); 
ListItemCollection items = announcementsList.GetItems(query); 

/*
Abfrage ausführen
*/
context.Load(items); 
context.ExecuteQuery(); 

/*
Ausgabe des Ergebnisses
*/
foreach (ListItem listItem in items) 
{ 
    label1.Text = label1.Text + ", " + listItem["Title"]; 
}
	

Ein Listenelement in einer Ankündigungsliste erzeugen:

	
ClientContext context = new ClientContext("http://SiteAdresse..."); 

List announcementsList = context.Web.Lists.GetByTitle("Neuigkeiten"); 

/*
Das neue Listenelement wird erzeugt, dann die Werte gesetzt, worauf die Liste aktualisiert werden muss
*/
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation(); 
ListItem newItem = announcementsList.AddItem(itemCreateInfo); 
newItem["Title"] = "Neuigkeit vom Clientprogramm"; 
newItem["Body"] = "Ich wurde <b>automatisch</b> erzeugt!"; 
newItem.Update(); 

/*
Jetzt das Ganze ausführen
*/
context.ExecuteQuery();