SharePoint 2010 to czwarta już generacja tej technologii, skaładająca się z produktu Microsoft SharePoint Foundation 2010 oraz SharePoint Server 2010. W kolejnym punkcie zajmiemy się omówieniem tych produktów oraz wyjaśnimy jakie dodatkowe składniki i rozszerzenia zawiera SharePoint Server 2010. Wskażemy też najważniejsze nowości, które pojawiły się w tej wersji tego systemu.
SharePoint 2010 jako platforma aplikacyjna
Nie trzeba być specjalistą od nowinek technologicznych (a właściwie to trzeba by było przespać ostatnie kilka lat gdzieś pod kamieniem), żeby nie zauważyć jak bardzo popularnym produktem stał się SharePoint Server. Od czasów trzeciej jego generacji wydanej w 2007 roku, ilość jego wdrożeń oraz stopień adaptacji do wewnętrznych potrzeb stał się na tyle duży, że dziś możemy śmiało mówić o produkcie klasy Enterprise i dobrej alternatywie dla produków takich jak Lotus Notes, czy własnych aplikacjach intranetowych opartych o technologie Java, czy ASP.NET.
SharePoint 2010 to czwarta już generacja tej technologii, skaładająca się z produktu Microsoft SharePoint Foundation 2010 oraz SharePoint Server 2010. W kolejnym punkcie zajmiemy się omówieniem tych produktów oraz wyjaśnimy jakie dodatkowe składniki i rozszerzenia zawiera SharePoint Server 2010. Wskażemy też najważniejsze nowości, które pojawiły się w tej wersji tego systemu.
SharePoint Foundation 2010
W dużym skrócie, SharePoint Foundation 2010 to platforma aplikacyjna do łatwego tworzenia witryn intranetowych przeznaczonych dla różnych grup użytkowników i zawięrających zróżnicowaną treść i/lub funkcjonalność. Tę standardową zapawnieją różnego rodzaju szablony, listy i biblioteki dokumentów pozwalające na przechowywanie różnego rodzaju treści i dokumentów oraz składniki Web Parts.
Główną zaletą produktu jest to, że utworzenie takiej witryny oraz dostosowanie jej do potrzeb danej firmy lub organizacji może odbywać się całkowicie przy pomocy przeglądarki internetowej i bez współudziału programistów, chociaż ci ostatni mogą dostarczać gotowe komponenty, będące poźniej składnikami takich witryn.
SharePoint Server 2007 był często krytykowany za niskie poszanowanie aktualnych standardów, według których buduje się dzisiaj nowoczesne strony webowe, nieco przestarzały interfejs użytkownika o nie zawsze optymalnej logice przejść pomiędzy stronami, czy wymagający częstego odświerzania całej strony przy najprostszych czynnościach.
Obecna wersja posiada zdecydowanie nowocześniejszy interfejs użytkownika oparty w dużej mierze o technologie AJAX i Silverlight i działający już bez problemu w przeglądarkach innych niż Internet Explorer. Ale odświerzony interfejs użytkownika to nie wszystko. Na platformie SharePoint Foundation pojawiło się szereg interesujących nowości, z których najważniejsze znajdują się na poniższej liście:
- Architektura Service Application - Całkowicie nowa infrastruktura pozwalająca na współdzielenie funkcjonalności pomiędzy farmami webowymi.
- Wsparcie dla PowerShell - automatyzacja platformy SharePoint za pomocą dobrze już znanego narzędzia dla administratorów i programistów.
- Narzędzia w Visual Studio 2010 - Flagowe środowisko programistyczne firmy Microsoft doczekało się wreszcie porządnego wsparcia dla programowania pod platformę SharePoint. Gotowe szablony dla różnych typów projektów, takich jak Web Parts, Event Receiver, czy Workflow zostały uzupełnione o mechanizmy pozwalające na łatwe ich wdrażanie, debugowanie i testowanie.
- Sandboxed Solutions - Możliwość uruchamiania kodu w specjalnym procesie zapewniającym jego izolacje, co zwiększa stabilność całej farmy webowej
- List throttling - Mechanizm pozwalający ograniczać ilość elementów zwracanych przez zapytania do list i bibliotek dokumentów.
- LINQ provider dla SharePoint - Możliwość pisania zapytań do list przy użyciu wyrażeń LINQ, jest to miła odmiana, zwłaszcza dla programistów borykających się do tej pory z mało intuicyjnym i opartym o XML języku CAML.
- Dostęp do zawartości list poprzez REST - Adresacja zasobów i treści znajdujących się w listach i bibliotekach dokumentów, możliwa jest teraz przy użyciu stylu architektonicznego REST, wykorzystywanego bardzo często na wielu nowoczesnych portalach internetowych.
- Klienckie modele obiektowe - Chcąc dostawać się do zawartości list serwera SharePoint z zewnętrznych aplikacji zdani byliśmy do tej pory na mało wygodne usługi Web Services lub protokołu WebDAV. Wspomniane już modele obiektowe pozwalają na bardzo łatwe oprogramowanie tego typu operacji w aplikacjach Windows Forms, WPF, ASP.NET, czy Silverlight. Odpowiednie biblioteki dostępne są również w języku JavaScript.
- Claim-based Security - Całkowicie nowy model uwierzytelniania ułatwiający użycie zewnętrznych systemów zarządzania tożsamością, oparty o tzw. poświadczenia.
- Business Connectivity Services - Dostępna niegdyś tylko w najwyższych wersjach serwera SharePoint, usługa pozwalająca na zapewnienie dostępu do wielu heterogenicznych źródeł danych, teraz dostępna jest w SharePoint Foundation 2010. Wartym wspomnienia usprawnieniem jest możliwość oprogramowania zarówno zapisu jak i odczytu danych pochodzących np. z zewnętrznej bazy danych lub innego systemu LOB.
SharePoint Foundation 2010 stanowi, więc sporą pomoc we wszystkich tych firmach i organizacjach, w których istnieje potrzeba tworzenia dużej ilości mniej lub bardziej wyspecjalizowanych witryn intranetowych, znacząco redukując czas potrzebny na ich stworzenie. Teraz czynnościami takimi jak dodanie nowej strony, czy zdefiniowanie listy może zająć się nawet zwykły użytkownik biznesowy (o ile oczywiście będzie posiadał odpowiednie uprawnienia).
Architektura serwera SharePoint jest przygotowana do działania w tzw. farmach webowych. Osobne serwery można wydzielić na bazy danych a osobne serwery mogą pełnić rolę serwerów typu front-end.
SharePoint 2010 dystrybuowany jest już tylko i wyłącznie w wersji 64-bit a rolę dedykowanego systemu operacyjnego może pełnić Windows Server 2008 lub 2008 R2. Nowością jest możliwość zainstalowania serwera SharePoint Foundation 2010 lub SharePoint Server 2010 również na systemach klienckich, takich jak Windows Vista lub Windows 7. Ta druga opcja, to najlepszy wybór, jako środowisko deweloperskie.
SharePoint serwer wykorzystuje, jako serwer webowy IIS 7.0 polegając na wielu jego funkcjach i możliwościach. Natywną technologią programistyczną jest natomiast .NET Framework 3.5 SP1. Nie ma, więc wreszcie problemu z użyciem technologii takich jak LINQ, ASP.NET AJAX, czy wreszcie Silverlight.
Wybrane nowości dla programistów
Poniższy rysunek przedstawia główne koncepcje i zagadnienia, które powinien poznać każdy programista SharePoint. Warty uwagi jest tutaj podział na fundament, który stanowi system operacyjny i główne technologie wykorzystywane przez produkt, główną warstwę aplikacyjną, którą stanowi SharePoint Foundation 2010 oraz zestaw dodatkowych funkcjonalności, które oferowane są przez płatne wersje produktu takie jak SharePoint Server 2010 Standard i Enterprise. Omówienie możliwości płatnych wersji serwera wykracza daleko poza ramy tego artykułu i zajmiemy się nimi w kolejnych publikacjach.

Rysunek 1 - SharePoint 2010 jako platforma aplikacyjna
W dalszej części artykułu spróbujmy zając się nieco bliżej wybranymi nowościami oferowanymi przez platformę SharePoint Foundation 2010.
LINQ provider dla SharePoint
Programiści starszych wersji SharePoint'a bardzo dobrze pamiętają jak mało przyjemnym zadaniem było czasami wydajne odpytywanie zawartości list. W większości wypadków wymagało to, bowiem użycia wyrażeń zapisanych w opartym na XML'u języku CAML, czyli Collaborative Application Markup Language. Chociaż ten sposób pisania zapytań do list jest nadal wspierany, to programiści dostają w najnowszej wersji jeszcze jedno, znacznie wygodniejsze narzędzie - jest do dedykowany do tego celu provider LINQ dla SharePoint'a.
Żeby przypomnieć jak niewdzięcznie potrafiły wyglądać zapytania w języku CAML, przypomnijmy jakiś przykład:

Aby możliwe stało się korzystanie z podobnej funkcjonalności, ale przy użyciu wyrażeń LINQ, należy użyć narzędzia o nazwie spmetal.exe, które jest dostępne po zainstalowaniu serwera SharePoint. Jego użycie jest konieczne, żeby automatycznie wygenerować klasy odpowiadające strukturze list, do których mamy zamiar pisać zapytania. Po wygenerowaniu odpowiedniego kawałka kodu w języku C# lub Visual Basic .NET zyskujemy między innymi:
- Możliwość pisania silnie typowanego kodu
- Wsparcie w Intellisense
- Sprawdzanie błędów nazewniczych w czasie kompilacji
- Możliwość pisania zarówno zapytań pobierających dane, jak i modyfikacje zawartości list
Przyjrzyjmy się, zatem kilku przykładom. Na początek klasa encji reprezentująca prostą listę:

Gdy taki plik już istnieje, nie pozostaje nam nic innego niż manipulacja danymi listy za pomocą wyrażeń LINQ:

Wydaje się, że żadnego programisty nie trzeba raczej zachęcać do tego sposoby pracy z listami, jest on nie tylko przyjemniejszy i mniej błędogenny, ale również przyczynia się do ujednolicenia sposobu z różnymi źródłami danych, dzięki technologii LINQ.
Sandboxed Solutions
Ta nowość jest próbą zaadresowania i rozwiązania pewnego problemu, spotykanego najczęściej w większych wdrożeniach serwera.
SharePoint jest przede wszystkim platformą aplikacyjną, co oznacza, że mimo jego olbrzymiej standardowej funkcjonalności, to programiści będą dostarczali kolejne rozszerzenia i moduły, które dostosują daną witrynę do konkretnych potrzeb i wymagań. Problemem w tym przypadku mogło być to, że jeden źle napisany składnik Web Parts mógł destabilizować lub spowalniać działanie całego drzewa witryn, a administrator miał zazwyczaj bardzo ograniczone możliwości diagnostyki tego typu problemów.
W celu rozwiązania powyższego problemu stworzono Sanboxed Solution, których główne cechy to:
- Możliwość pisania kodu wykorzystującego tylko podzbiór modelu obiektowego serwera SharePoint
- Ograniczony jest również dostęp do klas zapewniających połączenia http, czy TCP, wołania Web Services, dostęp do ADO.NET, czy P-Invoke
- Kod stworzony przez programistów wykonywany jest w tzw. ograniczonym kontekście bezpieczeństwa
- Fizycznie kod uruchamiany jest w oddzielnym procesie, niezależnym od procesu, w którym uruchomione jest cała kolekcja witryn.
- Administrator ma możliwość ograniczania i monitorowania zasobów wykorzystywanych przez danych komponent.
- Trzeba również pamiętać, że nie wszystkie typy rozwiązań mogą być stworzone, jako Sandbox Solution

Rysunek 2 - Galeria Sandbox Solutions, monitorowanie zasobów
Business Connectivity Services
SharePoint Server pełni bardzo często rolę portalu integracyjnego, a z tą funkcją wiąże się konieczność dostępu do danych znajdujących się w wielu różnych źródłach danych. Mogą to być zarówno zewnętrzne bazy danych takie jak SQL Server, czy Oracle jak i różnego rodzaju systemy LOB (np. SAP) czy usługi Web Services.
Dotychczas programista lub architekt musiał bardzo często wybierać pomiędzy składowaniem danych w listach, co otwierało dostęp do wielu standardowych funkcjonalności takich jak automatycznie generowane formularze do dodawania i edycji danych, możliwość tworzenia widoków, wersjonowanie i wiele innych lub wykorzystaniem zewnętrznych baz danych. Jeżeli decydowaliśmy się na ten drugi scenariusz, programista musiał samodzielnie oprogramowywać interfejsy użytkownika i inne wymagane funkcjonalności.
W celu rozwiązania tego problemu w SharePoint Foundation 2010 pojawiła się usługa o nazwie Business Connectivity Services, oferująca wiele ciekawych funkcji takich jak:
- Dostęp do danych znajdujących się w różnych źródłach danych zarówno w trybie do odczytu jak i z możliwością edycji
- Wsparcie dla operacji w trybie wsadowym
- Obsługa dużych obiektów binarnych (BLOB)
- Możliwość łatwej integracji z innymi funkcjonalnościami SharePoint'a, takimi jak:
- Listy
- Dedykowane składniki Web Parts
- Wsparcie w modelu obiektowym
Sposób wykorzystania tej usługi polega na zdefiniowaniu specjalnego modelu danych. Model taki przygotowuje albo użytkownik przy pomocy narzędzia SharePoint Designer 2010 albo programista przy pomocy Visual Studio 2010. Administrator może tak model uaktywniać dla poszczególnych kolekcji witryn, co pozwala na jego łatwe wykorzystywanie dostarczanych przezeń danych w listach, dedykowanych składnikach Web Parts lub własnych rozwiązaniach.

Rysunek 3 - Model danych BCS w Visual Studio 2010

Rysunek 4 - Lista wyświetlająca dane z bazy Adventure Works
Nowe narzędzia dla programistów
W ostatnim podpunkcie zajmiemy się nowościami w narzędziach dla programistów.
W poprzednich wersjach SharePoint'a programiści nie byli rozpieszczani ilością i jakością narzędzi wspomagających tworzenie rozwiązań dla tego produktu. Skutkowało to często koniecznością posiłkowania się licznymi skryptami i rozwiązaniami dostarczanymi przez różne firmy zewnętrzne i społeczności. Sytuacja ta zmieniła się na lepsze wraz z pojawieniem się Visual Studio 2010 oraz narzędzia SharePoint Designer 2010. Warto nadmienić, że to drugie dostępne jest całkowicie za darmo.
Przyjrzyjmy się, zatem głównym funkcjonalnościom oferowanym przez Visual Studio 2010:
- Możliwość wizualnego tworzenia składników Web Parts, modeli danych BCS oraz przepływów pracy Workflow

Rysunek 5 - Wizualne tworzenie składnika przepływu pracy
- Szeroki wybór szablonów ułatwiających tworzenie różnego typu modułów i rozszerzeń

Rysunek 6 - Typy projektów SharePoint w Visual Studio 2010
- Wsparcie do tworzenia paczek wdrożeniowych wsp, wraz z edytorem zwalniającym ze żmudnej edycji opisujących je plików XML
- Możliwość nie tylko tworzenia rozwiązań, ale również ich łatwego debugowania i wdrażania z poziomu środowiska programistycznego
- Widok drzewa witryn w oknie Server Explorer, ułatwiający nawigację pomiędzy składnikami takiego drzewa
- Integracja z serwerem Team Foundation Server, wspierającym pracę grupową
- Wsparcie dla tworzenia rozwiązań typu Sandbox Solutions
- Możliwość importowania rozwiązań (np. przepływów pracy Workflows) stworzonych przy użyciu narzędzia SharePoint Designer.
Narzędziem przeznaczonym dla bardziej zaawansowanych użytkowników niebędących programistami stworzono produkt SharePoint Designer 2010. W najnowszej jego wersji wprowadzono szereg usprawnień takich jak:
- Możliwość tworzenia modeli BCS
- Usprawniony edytor przepływów pracy z możliwością ich eksportu
- Możliwość tworzenia schematów list i szablonów witryn

Rysunek 7 - SharePoint Designer 2010
Na końcu warto jeszcze wspomnieć o nowości, która ucieszy zarówno programistów jak i administratorów. Dotychczas automaty ja większości zadań w środowisku SharePoint wymagała użycia narzędzia dostępnego w linii komend o nazwie stsadm.exe. Teraz dostajemy do naszych rąk wsparcie w znacznie bardziej zaawansowanej linia komend cmd.exe, powłoce PowerShell.

Rysunek 8 - Powłoka PowerShell w akcji
Dobrą wiadomością zarówno dla administratorów jak i programistów jest fakt, że PowerShell bezproblemowo wspiera możliwość tworzenia nie tylko bardziej zaawansowanych skryptów, ale również własnych rozszerzeń (Snap-ins).
Nawet najbardziej zawansowany produkt nie byłby w pełni wartościowy, gdyby nie istniał zbudowany wokół niego ekosystem rozszerzeń i narzędzi. Wraz z wersją 2010 możemy podpisać się pod tym stwierdzeniem obiema rękami, bo powodów żeby się przyczepić jest już zdecydowanie mniej.
Podsumowanie
Niniejszy artykuł zawiera bardzo krótkie wprowadzenie do świata produktów SharePoint z punktu widzenia programisty lub architekta aplikacji. Przybliżyliśmy w nim główne nowości znajdujące się w bazowej jego wersji o nazwie SharePoint Foundation 2010. Artykuł ten powinien stanowić zachętę nie tylko do przejścia do najnowszej jego wersji, ale również do zapóźniania się z tą aplikacją, jeżeli nie mieliśmy jeszcze takiej okazji.
Na koniec garść odnośników dla osób, które chciałyby poszerzyć swoją wiedzę na temat poruszonych tutaj tematów.
Odnośniki
Co nowego w SharePoint Foundation 2010?
Usprawnienia list
Wykorzystanie PowerShell
Sandboxed Solutions
Business Connectivity Services
SharePoint Hands-on labs - dla samouków:
http://msdn.microsoft.com/en-us/sharepoint/ee513147.aspx
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17215
Autor: Bartosz Kierun
Na co dzień zajmuje się analizą, projektowaniem i tworzeniem rozwiązań opartych o platformę .NET, ze szczególnym wskazaniem aplikacji webowych i rozwiązań integracyjnych. Technologiami Microsoft zajmuje się od ok. 10 lat. Od kilku lat w gestii jego zainteresowań znajduje się przede wszystkim Sharepoint Server. Bartosz posiada również wieloletnie doświadczenie, jako trener technologii programistycznych Microsoft. Prelegent wielu warsztatów i konferencji poświęconym technologiom programistycznym firmy Microsoft w tym MTS, CodeCamp, DevDays, Community Launch i Heroes Happen Here. Hobbystycznie oraz zawodowo zajmuje się poznawaniem nowych technologii związanych z tworzeniem oprogramowania i architekturą systemów, zarządzaniem i prowadzeniem projektów informatycznych oraz zagadnieniami Business Intelligence.
Posiadane certyfikaty: MCT, MCPD, MCTS