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();