Sharepoint development sebastian weber
Download
1 / 52

SharePoint Development Sebastian Weber - PowerPoint PPT Presentation


  • 101 Views
  • Uploaded on

SharePoint Development Sebastian Weber. SharePoint Development . Sebastian Weber Software Engineer Platinion GmbH – The Boston Consulting Group [email protected] Sebastian Weber. Software Engineer bei der Platinion GmbH, einer Tochter der Boston Consulting Group

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'SharePoint Development Sebastian Weber' - lev


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Sharepoint development sebastian weber

SharePoint Development Sebastian Weber


Sharepoint development

SharePoint Development

Sebastian Weber

Software Engineer

Platinion GmbH – The Boston Consulting Group

[email protected]


Sebastian weber
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)


Warum selber programmieren
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!


Beispiel 1 intranet aufbauen

HRMS Timesheet

HRMS Staffing

Beispiel 1: Intranet aufbauen

„Altes“ HRMS(J2EE)


Beispiel 2 daten extern nutzen

Firmen-Homepage

Web Service

Externe News

Intranet

Beispiel 2: Daten extern nutzen

Externe News

Zentrale Verwaltung aller News

(intern und extern)


Aber ...

... wie ist das mit SharePoint realisierbar?


Agenda
Agenda

Entwicklungsumgebung

SharePoint Architektur

Web Part Entwicklung

SharePoint Objektmodell

SharePoint Web Services

Zusammenfassung


Agenda1
Agenda

Entwicklungsumgebung

SharePoint Architektur

Web Part Entwicklung

SharePoint Objektmodell

SharePoint Web Services

Zusammenfassung


Systemumgebung
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


Entwicklungsumgebung
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


Agenda2
Agenda

Entwicklungsumgebung

SharePoint Architektur

Web Part Entwicklung

SharePoint Objektmodell

SharePoint Web Services

Zusammenfassung


Sharepoint architektur

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


Agenda3
Agenda

Entwicklungsumgebung

SharePoint Architektur

Web Part Entwicklung

SharePoint Objektmodell

SharePoint Web Services

Zusammenfassung


Was sind web parts
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


Das hello world web part
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!


Web part deployment option 1

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


Web part deployment option 2
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


Noch mehr optionen
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



Weitere features
Weitere Features ...

  • Web Part Connections

    • Event-gesteuerter Datenaustausch

    • Nur Implementierung der Consumer/Provider Interfaces und Methoden nötig

    • IList, IRow, ICell, IFilter, IParams, Transformers


Zukunft der web parts
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!


Tipps tricks best practices
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


Web parts gut schlecht
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“


Agenda4
Agenda

Entwicklungsumgebung

SharePoint Architektur

Web Part Entwicklung

SharePoint Objektmodell

SharePoint Web Services

Zusammenfassung


Was ist das objektmodell
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!


Objektmodell ist nur innerhalb des sharepoint servers verwendbar
Objektmodell ist nur innerhalb des SharePoint Servers verwendbar

Web Part

Windows-Anwendung

Web-Anwendung

Objektmodelle


Windows sharepoint services klassen beispiele
Windows SharePoint Services Klassen verwendbarBeispiele

 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


Sharepoint portal server klassen
SharePoint Portal Server Klassen verwendbar

  • 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


Top level objekte
Top-Level Objekte verwendbar

  • 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!


Spweb bietet zugriff auf s mtliche objekte einer site
SPWeb bietet Zugriff auf sämtliche Objekte einer Site verwendbar

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


Beispiel zugriff auf listen
Beispiel: Zugriff auf Listen verwendbar

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

    }



Weitere features1
Weitere Features ... verwendbar

  • 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


Tipps tricks best practices1
Tipps, Tricks & Best Practices verwendbar

  • 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


Objektmodell gut schlecht
Objektmodell gut&schlecht verwendbar

  • 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“


Agenda5
Agenda verwendbar

Entwicklungsumgebung

SharePoint Architektur

Web Part Entwicklung

SharePoint Objektmodell

SharePoint Web Services

Zusammenfassung


Was sind die web services
Was sind die Web Services? verwendbar

  • 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


Webservices erm glichen den zugriff von extern
WebServices ermöglichen den Zugriff von „extern“ verwendbar

Fat-Client Anwendung

Web-Anwendung

(Web Part)

Zugriff per SOAP

Web Services




3 sps web services
3 SPS Web Services verwendbar


Beispiel zugriff auf listen1
Beispiel: Zugriff auf Listen verwendbar

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


Sharepoint web services zugriff auf listen
SharePoint Web Services verwendbarZugriff auf Listen

demo


Tipps tricks best practices2
Tipps, Tricks & Best Practices verwendbar

  • 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


Web services gut schlecht
Web Services gut&schlecht verwendbar

  • 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“


Wenn web services nicht ausreichen
Wenn Web Services nicht ausreichen ... verwendbar

  • 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“


Agenda6
Agenda verwendbar

Entwicklungsumgebung

SharePoint Architektur

Web Part Entwicklung

SharePoint Objektmodell

SharePoint Web Services

Zusammenfassung


Zusammenfassung
Zusammenfassung verwendbar

  • Web Parts sind kombinierbare „Bausteine“

  • Der Zugriff auf SharePoint erfolgt über

    • Objektmodell und/oder Web Services

  • SPS ≠ WSS


Mehr informationen
Mehr Informationen verwendbar

  • 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


Fragen und antworten
Fragen und Antworten verwendbar

Vielen Dank!

Sebastian Weber

Software Engineer

Platinion GmbH – The Boston Consulting Group

[email protected]



ad