Glossar: CSOM
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();
