1 / 52

SharePoint Development Sebastian Weber

SharePoint Development Sebastian Weber. SharePoint Development . Sebastian Weber Software Engineer Platinion GmbH – The Boston Consulting Group Weber.Sebastian@platinion.de. Sebastian Weber. Software Engineer bei der Platinion GmbH, einer Tochter der Boston Consulting Group

lev
Download Presentation

SharePoint Development Sebastian Weber

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SharePoint Development Sebastian Weber

  2. SharePoint Development Sebastian Weber Software Engineer Platinion GmbH – The Boston Consulting Group Weber.Sebastian@platinion.de

  3. Sebastian Weber • Software Engineer bei der Platinion GmbH, einer Tochter der Boston Consulting Group • Über 10 Jahre Erfahrung in der Softwareentwicklung im Microsoft Umfeld • Autor und Sprecher mit den Schwerpunkten .NET Architektur und Technologien (SQL Server und SharePoint)

  4. Warum selber programmieren ...? • SharePoint um eigene Module (Web Parts) erweitern • Issue-Tracker, Helpdesk, Weblog, Wiki, ... • SharePoint programmatisch administrieren • Web Parts installieren, Seiten erzeugen, Themen zuweisen ... • SharePoint Funktionen/Daten in eigener Anwendung nutzen • Zugriff auf SharePoint Dokumentenbibliothek aus eigener (Windows) Anwendung heraus, ...  ... um alles aus SharePoint herauszuholen!

  5. HRMS Timesheet HRMS Staffing Beispiel 1: Intranet aufbauen „Altes“ HRMS(J2EE)

  6. Firmen-Homepage Web Service Externe News Intranet Beispiel 2: Daten extern nutzen Externe News Zentrale Verwaltung aller News (intern und extern)

  7. Aber ... ... wie ist das mit SharePoint realisierbar?

  8. Agenda Entwicklungsumgebung SharePoint Architektur Web Part Entwicklung SharePoint Objektmodell SharePoint Web Services Zusammenfassung

  9. Agenda Entwicklungsumgebung SharePoint Architektur Web Part Entwicklung SharePoint Objektmodell SharePoint Web Services Zusammenfassung

  10. Systemumgebung • „Eine Maschine“ • Direkt auf Windows Server 2003 arbeiten • http://www.msfn.org/win2k3/ • „Zwei (oder mehrere) Maschinen“ • Entwicklung auf Windows XP • Deployment auf Windows Server 2003 • Virtual PC oder externes System

  11. Entwicklungsumgebung • Visual Studio .NET • SharePoint DLLs kopieren (bei „Mehr-Maschinen-Modell“) • C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\ISAPI • Microsoft.SharePoint.DLL • Microsoft.SharePoint.Portal.DLL • Microsoft.SharePoint.Portal.SingleSignon.DLL • Microsoft.SharePoint.Portal.SingleSignon.Security.DLL • Web Part Projektvorlage für Visual Studio .NET • http://msdn.microsoft.com/sharepoint

  12. Agenda Entwicklungsumgebung SharePoint Architektur Web Part Entwicklung SharePoint Objektmodell SharePoint Web Services Zusammenfassung

  13. Areas SSO ... WebDAV FP RPC Sites Webs WebPart Docs Lists ... .NET Framework SharePoint Architektur Objektmodell Web Services Objektmodell Web Services Web Part SharePoint 2001 (Unmanaged) Code

  14. Agenda Entwicklungsumgebung SharePoint Architektur Web Part Entwicklung SharePoint Objektmodell SharePoint Web Services Zusammenfassung

  15. Was sind Web Parts? • Aus der Sicht des Anwenders • Bausteine für modulare Webseiten • Einbindung in Webseite zur Laufzeit möglich • Aus der Sicht des Entwicklers • ASP.NET Server Controls, als Assembly deployed • Haben vollen Zugriff auf die .NET Base Class Library • Unterstützung durch Visual Studio .NET Projekt Template

  16. Das „Hello World!“ Web Part namespace MyWebParts { using Microsoft.SharePoint; using Microsoft.SharePoint.WebPartPages; public class HelloWorld : WebPart { protected override void RenderWebPart (HtmlTextWriter output){ output.Write(“Hello World!”); } } }  ... wie ASP.NET Server Control Entwicklung!

  17. IIS Virtual Server \bin\ - Ordner Web.config„Safe Control“ IIS Virtual Server \bin\ - Ordner Web.config„Safe Control“ Web Part Deployment – Option 1 Windows Server Web PartAssembly (DLL) • Assembly für jeden Virtual Server einzeln installieren • Assembly muß als „Safe“ in der Web.config registriert sein

  18. Web Part Deployment – Option 2 Windows Server Global Assembly Cache (GAC) Web PartAssembly (DLL) IIS Virtual Server • Assembly global für alle Virtual Server installieren • Assembly im GAC ist immer „Safe“ (strong name) IIS Virtual Server IIS Virtual Server

  19. Noch mehr Optionen ... • Manuelle Installation • Dateien kopieren • Web.config anpassen • CAB Datei erstellen • Dateien in CAB kopieren • STSADM.EXE aufrufen • MSI Paket erstellen • WPPackager.EXE Tool verwenden! http://msdn.microsoft.com/SharePoint

  20. Kalender Web Part demo

  21. Weitere Features ... • Web Part Connections • Event-gesteuerter Datenaustausch • Nur Implementierung der Consumer/Provider Interfaces und Methoden nötig • IList, IRow, ICell, IFilter, IParams, Transformers

  22. Zukunft der Web Parts Visual Studio .NET 2005 („Whidbey“) • „Whidbey“ Web Parts ≠ SharePoint Web Parts • ASP.NET Team wird einen Wrapper bereitstellen, mit dem Whidbey Web Parts in SharePoint laufen • Nächste SharePoint Version wird auf Basis von Whidbey Web Parts arbeiten!

  23. Tipps, Tricks & Best Practices • Fehlerbehandlung durchführen (try-catch), ansonsten Umleitung auf Fehlerseite durch SharePoint • Immer HTMLEncode verwenden • Öffentliche Eigenschaften über Attribute gut kommentieren • SharePoint Caching-Mechanismen verwenden

  24. Web Parts gut&schlecht • Gut • Building Blocks der Zukunft für modulare Webseiten • Integration vorhandener ASP.NET Steuerelemente • Schlecht • Kein Designer verfügbar • Debugging derzeit umständlich Wrapper „SmartPart“http://gotdotnet.com „Whidbey“

  25. Agenda Entwicklungsumgebung SharePoint Architektur Web Part Entwicklung SharePoint Objektmodell SharePoint Web Services Zusammenfassung

  26. Was ist das Objektmodell? • Schnittstelle zu ... • Windows SharePoint Services (WSS) • SharePoint Portal Server (SPS) • .NET Assemblies (managed DLLs) • Objektmodell „erwartet“ SharePoint auf dem selben Rechner, kein Fernzugriff!

  27. Objektmodell ist nur innerhalb des SharePoint Servers verwendbar Web Part Windows-Anwendung Web-Anwendung Objektmodelle

  28. Windows SharePoint Services KlassenBeispiele  Insgesamt 18 Namensräume, davon stehen 9 für eigene Anwendungen zur Verfügung, Namensraum Microsoft.SharePoint.* • Security • SPGroupCollection • SPGroup • SPUserCollection • SPUser • Documents • SPDocumentLibrary • SPFileCollection • List Data • SPListCollection • SPList • SPListItemCollection • SPListItem • SPFieldCollection • SPView • Administration • SPGlobalAdmin • SPQuota • SPVirtualServer

  29. SharePoint Portal Server Klassen • Insgesamt über 50 Namensräume, davon 16 heute in Verwendung • Namensraum Microsoft.SharePoint.Portal.* • Erweitert das WSS-Objektmodell um • Audiences • Areas • Search • Single Sign-on

  30. Top-Level Objekte • WSS-Objektmodell hat 4 Top-Level Objekte: • SPWeb ( “Eine Site”) • SPSite (“Eine SiteCollection”) • SPVirtualServer • SPGlobalAdmin • Für sämtliche Datenoperationen (Listen, Dokumentenbibliotheken …) wird ein SPWeb benötigt!

  31. SPWeb bietet Zugriff auf sämtliche Objekte einer Site • Ermöglicht Zugriff auf Listen, Dokumente, Benutzer, Benachrichtigungen einer Site • Eigenschaften (Beispiel): • Web.Lists (liefert eine Collection aller Listen) • Web.Title (liefert den Titel der Seite) • Web.Users (liefert die Benutzer der Seite) • Zugriff auf das aktuelle SPWeb Objekt geschieht mit SPControl über den Kontext: SPWeb web = SPControl.GetContextWeb(Context);

  32. Beispiel: Zugriff auf Listen • Liste über das Web-Objekt beziehen SPWeb web = SPControl.GetContextWeb(Context); SPList myList = web.Lists[“Aufgaben”]; • Verweis auf die Einträge der Liste über die Items-Eigenschaft SPListItemCollection items = myList.Items; alternativ kann die Liste über ein SPQuery Objekt eingeschränkt werden SPListItemCollection items = myList.GetItems(query); • Zugriff auf die Felder geschieht über den Indexer des SPListItem Objekts foreach(SPListItem item in items) { Response.Write(item[“Title"].ToString()); }

  33. Zugriff auf Listen mit Objektmodell demo

  34. Weitere Features ... • Event Sinks • Implementierung eigener Events möglich, bspw. bei check-in/-out von Dokumenten • Event-Listener implementieren • Deployment direkt in GAC • Aktivierung unter SharePoint Oberfläche • Ermöglicht Workflowunterstützung

  35. Tipps, Tricks & Best Practices • SPGlobalAdmin und SPSite sind die einzigen Klassen, die direkt mit „new“ instantiiert werden können • foreach() ist schneller als Durchlauf per Index • Ergebnis kostspieliger Aufrufe wie GetListItems() zwischenspeichern • Überwachung der Aufrufe mit SQL Profiler möglich

  36. Objektmodell gut&schlecht • Gut • Sehr komfortabel in der Verwendung • Sehr mächtig, nahezu alle Funktionen sind erreichbar • Schlecht • Nur auf dem SharePoint Server verfügbar, nicht von extern „by design“

  37. Agenda Entwicklungsumgebung SharePoint Architektur Web Part Entwicklung SharePoint Objektmodell SharePoint Web Services Zusammenfassung

  38. Was sind die Web Services? • Eine weitere Schnittstelle zu ... • Windows SharePoint Services (WSS) • SharePoint Portal Server (SPS) • Verwendet selbst die Objektmodell-Schnittstellen! • Erreichbar unter • http:// Server:Port / _vti_adm / ServiceName.asmx • http:// Server:Port / _vti_bin / ServiceName.asmx • http:// Server:Port / Sites / Site /_vti_bin / ServiceName.asmx • Direkt in Visual Studio .NET verwendbar • Ermöglicht den „Fernzugriff“ auf SharePoint

  39. WebServices ermöglichen den Zugriff von „extern“ Fat-Client Anwendung Web-Anwendung (Web Part) Zugriff per SOAP Web Services

  40. 16 WSS Web Services (1-8)

  41. 16 WSS Web Services (9-16)

  42. 3 SPS Web Services

  43. Beispiel: Zugriff auf Listen • Web Reference hinzufügen • Authentifizierung durchführenservice.Credentials = CredentialCache.DefaultCredentials; • Liste abholenXmlNode n = service.GetListItems("Aufgaben", "", null, null, "", null); • Xml-Knoten durchlaufenforeach(XmlNode node in nodeList) output.Write(node.InnerText);

  44. SharePoint Web ServicesZugriff auf Listen demo

  45. Tipps, Tricks & Best Practices • Roundtrips vermeiden, Xml-Ergebnisse zwischenspeichern • Helper schreiben für Xml-Handling, XmlNode in XmlDocument überführen • Pfade zu Webservices (.asmx) dynamisch halten, Generierung der WS Proxys manuell mit wsdl.exe

  46. Web Services gut&schlecht • Gut • Zugriff von jedem beliebigen System aus möglich (auch nicht-Windows) • Schlecht • Rückgabewerte erfolgen als XmlNode • Nicht alle Funktionalitäten von SharePoint erreichbar (bspw. Dokumententransfer) „by design“

  47. Wenn Web Services nicht ausreichen ... • WebDAV und Frontpage RPC • Verwenden HTTP Aufrufe • Weitere Infos unter MSDN • Direktzugriff auf die SharePoint Datenbank • „keine gute Idee“ • Implementierung eigener Web Services • SharePoint kann „fremde“ Web Services hosten, müssen aber zuvor angemeldet werden • Vom eigenen Web Service ist Zugriff auf Objektmodell möglich, „Tunneln des OM“

  48. Agenda Entwicklungsumgebung SharePoint Architektur Web Part Entwicklung SharePoint Objektmodell SharePoint Web Services Zusammenfassung

  49. Zusammenfassung • Web Parts sind kombinierbare „Bausteine“ • Der Zugriff auf SharePoint erfolgt über • Objektmodell und/oder Web Services • SPS ≠ WSS

  50. Mehr Informationen • Entwicklerseiten • http://msdn.microsoft.com/sharepoint • http://gotdotnet.com/team/sharepoint • http://code-zone.de • Produkt • http://microsoft.de/sharepoint • Third-Party Seiten • http://mysharepoint.de (Michael Greth) • http://sharepointinfo.de (Markus Weisbrod)http://weblogs.mysharepoint.de/frankfi/ (Frank Fischer) • http://sebastian-weber.org

More Related