}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Sdílení dat mezi Microsoft SharePoint a externími zdroji dat D IPLOMOVÁ PRÁCE
Bc. Miroslav Lízal
Brno, podzim 2012
Prohlášení Prohlašuji, že tato diplomová práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Bc. Miroslav Lízal
Vedoucí práce: Ing. RNDr. Barbora Bühnová, Ph.D. ii
Podˇekování Rád bych podˇekoval vedoucí této diplomové práce Ing. RNDr. Barboˇre Bühnové, Ph.D. nejen za cenné rady a pˇripomínky, ale také za ochotu v celém prubˇ ˚ ehu vypracovávání této diplomové práce.
iii
Shrnutí Tato diplomová práce se zabývá rˇ ešením problému výmˇeny dat mezi platformou Microsoft SharePoint a ostatními systémy, zejména relaˇcními databázemi. Jsou zde popsány existující aplikace sloužící k rˇ ešení tohoto nebo podobných problému. ˚ Dále jsou analyzovány a popsány metody pˇrístupu k datum ˚ uloženým v obsahových databázích platformy SharePoint. Souˇcástí práce je popis návrhu možného rˇ ešení, které se skládá z ruzných ˚ rozšíˇrení pro Microsoft SharePoint. Na základˇe tohoto návrhu je provedena samotná implementace aplikace umožnující ˇ výmˇenu dat mezi Microsoft SharePoint a relaˇcní databází.
iv
Klíˇcová slova SharePoint, sdílení dat, relaˇcní databáze, plánování úloh, monitorování.
v
Obsah 1 2
3
4
5
Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . Pˇrehled použitých technologií . . . . . . . . . . . . 2.1 .NET, C# . . . . . . . . . . . . . . . . . . . . . . 2.2 Microsoft SharePoint . . . . . . . . . . . . . . . 2.2.1 Popis platformy SharePoint . . . . . . . 2.2.2 Alternativní produkty . . . . . . . . . . 2.3 PowerShell . . . . . . . . . . . . . . . . . . . . . 2.3.1 PowerShell konzole . . . . . . . . . . . 2.3.2 Windows PowerShell ISE . . . . . . . . 2.4 Microsoft SQL Server . . . . . . . . . . . . . . . 2.5 Nagios . . . . . . . . . . . . . . . . . . . . . . . Popis a analýza problému . . . . . . . . . . . . . . . 3.1 Sdílení dat . . . . . . . . . . . . . . . . . . . . . 3.2 Automatické spouštˇení . . . . . . . . . . . . . . 3.2.1 Plánovaˇc úloh . . . . . . . . . . . . . . . 3.2.2 SharePoint Timer . . . . . . . . . . . . . 3.3 Monitoring . . . . . . . . . . . . . . . . . . . . . 3.3.1 IIS Log . . . . . . . . . . . . . . . . . . . 3.3.2 SPLog . . . . . . . . . . . . . . . . . . . ˇ Rešení . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Pˇrístup k datum ˚ uloženým v SharePointu . . . 4.1.1 Serverový objektový model . . . . . . . 4.1.2 Webové služby . . . . . . . . . . . . . . 4.1.3 Klientský objektový model . . . . . . . 4.2 Dostupná existující rˇ ešení . . . . . . . . . . . . 4.2.1 Data Synchronisation Studio . . . . . . 4.2.2 SQL Server Integration Services . . . . 4.2.3 Microsoft Sync Framework . . . . . . . 4.2.4 SPLoad . . . . . . . . . . . . . . . . . . . 4.2.5 Další nalezená rˇ ešení a pˇrístupy . . . . 4.3 Logování . . . . . . . . . . . . . . . . . . . . . . Pˇrizpusobení ˚ a vývoj aplikací pro SharePoint . . . 5.1 Popis nástroju˚ pro správu a práci s platformou 5.1.1 Centrální administrace . . . . . . . . . . 5.1.2 Microsoft SharePoint Designer 2010 . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 3 3 5 5 8 9 10 10 11 11 13 14 15 15 16 16 18 18 20 20 20 22 24 26 26 31 33 35 35 36 37 37 37 38 vi
5.1.3 SharePoint Workspace . . . . . . . . . . . Vývoj vlastních rozšíˇrení . . . . . . . . . . . . . . 5.2.1 Popis hlavních adresáˇru˚ 12Hive a 14Hive 5.2.2 Typy rozšíˇrení . . . . . . . . . . . . . . . . 5.2.3 Možnosti rozšíˇrení a úpravy . . . . . . . 5.3 Srovnání pˇrístupu˚ z pohledu výkonnosti . . . . 6 Návrh a implementace . . . . . . . . . . . . . . . . . . 6.1 Návrh . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Sdílení dat . . . . . . . . . . . . . . . . . . 6.1.2 Plánování spouštˇení . . . . . . . . . . . . 6.1.3 Logování a monitoring aplikace . . . . . 6.1.4 Architektura aplikace . . . . . . . . . . . 6.2 Implementace . . . . . . . . . . . . . . . . . . . . 6.2.1 Projekt Core . . . . . . . . . . . . . . . . . 6.2.2 Projekt CLI . . . . . . . . . . . . . . . . . 6.2.3 Projekt Web . . . . . . . . . . . . . . . . . 6.2.4 Projekt Tests . . . . . . . . . . . . . . . . . 6.2.5 Projekt Utils . . . . . . . . . . . . . . . . . 6.2.6 Projekt PowerShell . . . . . . . . . . . . . 6.3 Monitoring . . . . . . . . . . . . . . . . . . . . . . 7 Závˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . Literatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Seznam zkratek . . . . . . . . . . . . . . . . . . . . . . B Seznam pojmu˚ . . . . . . . . . . . . . . . . . . . . . . C Elektronické pˇrílohy . . . . . . . . . . . . . . . . . . . 5.2
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
38 39 39 40 42 48 50 50 51 53 53 54 54 56 59 59 62 63 65 65 66 68 73 75 77
vii
1 Úvod V dnešní dobˇe vlastní témˇerˇ každá firma informaˇcní systém, a to i vˇetšina malých spoleˇcností. Jedná se o systémy mzdové, docházkové, fakturaˇcní, plánovací, rˇ ízení vztahu se zákazníky, katalogy služeb a mnohé další. Proto se cˇ asto stává, že veškerou agendu nezpracovává pouze jeden systém. V takovém pˇrípadˇe, kdy je instalováno více rˇ ešení, je tˇreba zajistit vzájemnou komunikaci jednotlivých systému. ˚ V ideálním pˇrípadˇe lze systémy propojit pouze jejich vhodnou konfigurací, napˇríklad napojením docházkového systému na databázi zamˇestnancu. ˚ V docházkovém systému poté není nutné duplikovat databázi zamˇestnancu. ˚ Takovéto napojení nejen že ušetˇrí cˇ as pˇri správˇe zamˇestnancu, ˚ ale také zamezuje vzniku chyb a nekonzistence v jednotlivých systémech. Horší situace nastane, pokud jeden systém poskytuje pouze vstupy pro vkládání dat a druhý pouze výstupy pro jejich cˇ erpání. V takovémto pˇrípadˇe je tˇreba zajistit propojení systému˚ pomocí prostˇredníka. Tato diplomová práce se zabývá analýzou, návrhem a implementací napojení dnes velmi oblíbené platformy pro sdílení dokumentu˚ a informací Microsoft SharePoint na okolní systémy. Práce je logicky cˇ lenˇena do nˇekolika cˇ ástí, které cˇ tenáˇre postupnˇe seznámí s problematikou sdílení a výmˇeny dat. V druhé kapitole jsou struˇcnˇe pˇredstaveny technologie, které byly pˇri rˇ ešení použity, zejména již zmínˇený Microsoft SharePoint. V následující tˇretí kapitole jsou popsány problémy vznikající nehomogenní infrastrukturou informaˇcních systému˚ s popisem možných rˇ ešení. Dále jsou v této kapitole popsány požadavky, které by mˇely být splnˇeny pro vyˇrešení problému. Další cˇ ásti pˇredkládané diplomové práce jsou zamˇerˇ eny prakˇ ticky. Ctvrtá kapitola popisuje možnosti pˇrístupu k datum ˚ uloženým v obsahových databázích. Také jsou zde uvedena existující rˇ ešení popisovaného problému, a to od komerˇcních a open-source rˇ ešení pˇres synchronizaˇcní framework, až po neveˇrejné rˇ ešení, které by právˇe výstup této diplomové práce mˇel nahradit. Kromˇe problému se syn-
1
1. Ú VOD chronizací systému˚ jsou zde rozebrány i možnosti logování standardního a nestandardního bˇehu aplikace. Po popisu jednotlivých rˇ ešení jsou v dalších kapitolách prezentovány možnosti vývoje pro platformu SharePoint a analyzovány metody pˇrístupu k datum, ˚ na základˇe kterých je následnˇe vybrán jeden z možných dalších postupu. ˚ Výsledný návrh a implementace jsou uvedeny v pˇredposlední kapitole, kde se implementace snaží pokrýt celý rozsáhlý problém popsaný v tˇretí kapitole. V závˇeru práce jsou shrnuty dosažené výsledky, které byly získány z vlastní implementace, testování a nasazení systému do bˇežného provozu. Také jsou zde popsána další možná rozšíˇrení aplikace, která vyplývají z prakticky získaných zkušeností pˇri jejím používání.
2
2 Pˇrehled použitých technologií Platforma SharePoint je velice rozsáhlá, proto si nejprve pˇredstavíme hlavní technologie použité v této práci tak, aby byly další cˇ ásti práce co nejvíce srozumitelné. Zmínˇena bude platforma .NET a na ni navázaný programovací jazyk C# nebo také základní informace o platformˇe SharePoint. Velmi blízce svázán s frameworkem .NET a platformou SharePoint je skriptovací jazyk PowerShell, který umožnuje ˇ snadnou a efektivní správu aplikací pro operaˇcní systém Windows. Jako úložištˇe dat používá SharePoint databázový systém Microsoft SQL Server. Pro monitoring bˇehu systému˚ se stal témˇerˇ standardem nástroj Nagios, který nám zabezpeˇcí, že na pˇrípadné problémy budeme zavˇcas upozornˇeni a budeme je moci rˇ ešit dˇríve, než je pocítí koncoví uživatelé.
2.1 .NET, C# .NET je softwarový framework vyvinutý spoleˇcností Microsoft. Umožnuje ˇ vytvoˇrit témˇerˇ jakoukoli aplikaci urˇcenou pro operaˇcní systém Microsoft Windows, od desktopové aplikace, pˇres služby Windows, webové stránky a webové služby, až po komponenty distribuovaných aplikací nebo komponenty pro práci s databázemi. Spolu s platformou .NET se objevil i nový jazyk C#, který byl od základu˚ navržen tak, aby s technologií .NET spolupracoval, a tak využil všechny možnosti vývojových prostˇredku˚ a konceptu˚ objektovˇe orientovaného programování pro .NET. Pro použití tohoto frameworku však není tˇreba se jazyk C# uˇcit, protože Microsoft rozšíˇril i existující jazyky – jazyk C++, výraznˇe pˇrepracoval jazyk Visual Basic na Visual Basic .NET, ale vytvoˇril také další jazyk J# (varianta k jazyku Java). V technologii .NET se všechny jazyky pˇrekládají do spoleˇcného mezijazyka (Intermediate Language), konkrétnˇe do CLI (Common Intermediate Language), který byl dˇríve, pˇred standardizací, nazýván také MSIL (Microsoft Intermediate Language). Díky této vlastnosti lze snadno kombinovat a využívat sestavení (assembly) napsaná i v ruzných ˚ jazycích.
3
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
Hlavní výhody technologie .NET (a také jazyka C#): •
Objektovˇe orientované programování
•
Knihovna základních tˇríd (Base Class Library)
•
Podpora dynamických stránek – ASP.NET
•
Snadný pˇrístup k datum ˚ – ADO.NET
•
Sdílení kódu mezi aplikacemi – koncepce sestavení
•
Dobré zabezpeˇcení – podepisování sestavení (strong name)
•
Podpora webových služeb
Jádrem platformy .NET Framework je bˇehové prostˇredí CLR (Common Language Runtime), neboli bˇehový systém. Kód spuštˇený pod kontrolou tohoto modulu se oznaˇcuje jako rˇ ízený kód (managed code).
Obrázek 2.1: Struktura .NET (vlevo), grafické znázornˇení CLR (vpravo) [39]. 4
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
Microsoft vytvoˇril pro programování pro .NET vlastní vývojové prostˇredí Visual Studio. Témˇerˇ pravidelnˇe s novou verzí .NET frameworku vychází i nová verze vývojového prostˇredí. Existují ale i alternativní vývojová prostˇredí. Jmenujme napˇríklad SharpDevelop nebo MonoDevelop jako hlavní zástupce open source, která jsou oblíbená pˇri programování v operaˇcním systému Linux. Ve spojení s operaˇcním systémem Linux je dobré vzpomenout i open-source bˇehové prostˇredí Mono, které je dostupné i pro jiné operaˇcní systémy.
2.2 Microsoft SharePoint Microsoft Sharepoint je platforma pro webové aplikace umožnující ˇ pokrýt široký rozsah oblastí využití, a to hlavnˇe pro správu obsahu (CMS – content management system) a správu dokumentu˚ (DMS – document management system). Sharepoint, tak jak ho známe dnes, se postupnˇe vyvinul z pˇredcházejících produktu˚ spoleˇcnosti Microsoft – Site Server (1996), Comerce server, Web Store, Microsoft SharePoint Portal Server 2001, Microsoft SharePoint Team Services (2002), Windows SharePoint Services 2.0 (zdarma) a komerˇcní verze Microsoft SharePoint 2003, Windows SharePoint Services 3.0 (zdarma) s komerˇcním rozšíˇrením Microsoft Office SharePoint Server 2007 a koneˇcnˇe aktuální verze Microsoft SharePoint Foundation 2010 (zdarma) s komerˇcním rozšíˇrením Microsoft SharePoint Server 2010, které je následnˇe možné rozšíˇrit na SharePoint Enterprise 2010. V druhé cˇ ásti roku 2012 spoleˇcnost Microsoft uvolnila SharePoint Foundation 2013 Preview. Jako hlavní jsou u této verze vyzdvihovány pˇredevším dvˇe novinky, a to obchod s rozšíˇreními a také napojení na sociální sítˇe (zejména Yammer – sociální sít’ pro podniky). Seznam edicí a jejich popis vˇcetnˇe dostupných funkcí je popsán na produktové stránce SharePointu spoleˇcnosti Microsoft [18]. 2.2.1 Popis platformy SharePoint Na platformu SharePoint lze nahlížet dvˇema zpusoby ˚ – z fyzického a logického pohledu. Fyzický popis udává možnosti instalace na jeden server, na menší nebo vˇetší farmu serveru. ˚ Z logického pohledu se jedná o rozdˇelení aplikaˇcní logiky. 5
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
Fyzická struktura Microsoft Sharepoint platforma je postavená na SOA (serviceoriented architecture). Je možné instalovat vše na jeden server (standalone instalace), nebo na farmu serveru. ˚ Na té rozlišujeme jejich role – webový (front-end), aplikaˇcní (application), pˇrípadnˇe databázový (database) server. I v pˇrípadˇe farmové instalace je však možné nainstalovat všechny role na jeden server (vhodné jen pro instalaci vývojového prostˇredí, není doporuˇceno pro produkˇcní nasazení). V pˇrípadˇe instalace na více serveru˚ muže ˚ být instalována databáze na aplikaˇcním serveru (vhodné pokud je pouze jeden aplikaˇcní server a jeden nebo více webových serveru), ˚ nebo na vyhrazeném serveru cˇ i databázovém clusteru.
Obrázek 2.2: Možnosti instalace [24]. Webový server obstarává komunikaci s klientem pomocí HTTP požadavku˚ (HTTP, HTTPS. . . ), aplikace je hostována v IIS (Internetová informaˇcní služba – Internet Information Services). Pro rozložení zátˇeže muže ˚ být použito více webových serveru˚ a požadavky na jednotlivé servery pak rˇ ídí loadbalancer. Pro loadbalancing je možné využít softwarové rˇ ešení obsažené v Microsoft Windows Serveru (nejlevnˇejší, ale omezené škálování), softwarové rˇ ešení tˇretích stran nebo i hardwarové rˇ ešení (nejdražší, ale s vysokým výkonem a možnostmi nastavení). Aplikaˇcní server obstarává zejména bˇeh služeb, napˇríklad spouštˇení naplánovaných nakonfigurovaných úloh (Timer Job service) 6
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
jako je synchronizace údaju˚ o uživatelích z Active Directory nebo spouštˇení pracovních postupu˚ (workflow). Dále muže ˚ být na aplikaˇcním serveru spuštˇena služba Sharepoint Search pro indexaci obsahu. Jako databázový server je použit Microsoft SQL Server. Veškerá konfigurace, která je v SharePointu provádˇena, se ukládá do konfiguraˇcní databáze na tomto serveru. Pˇridání nového serveru do farmy je v rámci farmové instalace velmi jednoduché. Pˇri pˇriˇrazení serveru do farmy se na server dle informací v konfiguraˇcní databázi automaticky nainstalují všechna rozšíˇrení vˇcetnˇe konfigurace ve stávající farmˇe. Logická struktura Z pohledu uživatele i programátora je duležité ˚ zejména logické cˇ lenˇení. Pro instalaci dodateˇcných rozšíˇrení je možné rozlišit rozsah nasazení právˇe v rámci tohoto cˇ lenˇení. V dalších kapitolách zabývajících se implementací budeme potˇrebovat i znalost návaznosti jednotlivých logických celku˚ na tˇrídy a jejich instance v objektech [33].
Obrázek 2.3: Logické cˇ lenˇení [4].
Farma (Farm) je nejvyšší logický celek, který pod sebou sdružuje všechny webové aplikace a je zastˇrešen pomocí tˇrídy SPFarm. Po7
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
kud tedy nainstalujeme rˇ ešení s rozsahem „Farm“, bude dostupné ve všech aplikacích v rámci farmy. Webová aplikace (Web Application) je pˇridˇelena do fondu aplikací (Application Pool), který je z pohledu systému jeden bˇežící proces (w3wp.exe). Z hlediska IIS se jedná o web (Site) bˇežící na vlastní adrese (URL), která má pˇriˇrazený autentizaˇcní mechanizmus. Webová aplikace je reprezentována tˇrídou SPWebApplication a dále se skládá z kolekce webu. ˚ Kolekce webu˚ (Site collection) je virtuální kontejner jednotlivých webu. ˚ Výhoda tohoto sdružení je napˇríklad pˇri zálohování, nebot’ umožnuje ˇ zálohovat všechny podˇrazené weby. SPSite je tˇrída popisující právˇe kolekci webu. ˚ Kolekce webu˚ je také základní jednotka, v rámci které lze spravovat uživatelská oprávnˇení a sdílet data mezi seznamy. Web (Web) je nejmenší jednotka v rámci hlavní logické struktury, muže ˚ obsahovat podˇrízené weby. Obsah je možné v rámci webu jednoduše sdílet. Web je zastˇrešen tˇrídou SPWeb a obsahuje následnˇe již pˇrímo data uživatelu˚ (ve formˇe položek) uspoˇrádané v seznamech a knihovnách dokumentu. ˚ 2.2.2 Alternativní produkty Pokud budeme hledat, mužeme ˚ najít podobné produkty jako je SharePoint, které ho dokážou více cˇ i ménˇe zastoupit. Protože SharePoint je však velmi pˇrizpusobivé ˚ rˇ ešení, vˇetšina alternativ pokryje jen nˇekterou z jeho cˇ ástí. Oracle WebCenter – Spaces Produkt Spaces je jednou z aplikací rodiny Oracle WebCenter. Po technologické stránce je Oracle WebCenter postaven nad frameworkem JSF (JavaServer Faces). Jedná se o software s uzavˇreným kódem. Podobnˇe jako SharePoint umožnuje ˇ uživatelum ˚ vytváˇret seznamy, 8
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
stránky a dokumentové knihovny pro podporu spolupráce uživatelu. ˚ Oracle WebCenter Spaces je možno do urˇcité míry také modifikovat a rozšiˇrovat pomocí vlastních rˇ ešení. Data jsou ukládána na pozadí do relaˇcní databáze. Mimo Oracle databáze jsou podporovány i databáze konkurenˇcní (Microsoft SQL Server nebo IBM DB2) [17, 31].
Open source CMS projekty Pro nˇekterá menší intranetová rˇ ešení je možné použít i nˇekterý z open-source CMS projektu. ˚ Jedním z nejznámˇejších je napˇríklad Joomla, redakˇcní systém pro publikování informací. Dalšími zástupci jsou napˇríklad Drupal nebo WordPress. Výhodou tˇechto produktu˚ je, že jsou poskytovány zdarma, stejnˇe jako veškerý potˇrebný software nutný pro jejich bˇeh. Vˇetšinou se jedná o systémy napsané ve skriptovacím jazyce PHP a data jsou ukládány do MySQL databáze.
2.3 PowerShell Windows PowerShell je skriptovací jazyk navržený zejména pro administrátory systému. ˚ Tento skriptovací jazyk je postaven na .NET frameworku a umožnuje ˇ zkušeným uživatelum ˚ snadno automatizovat administrativní cˇ innosti, zejména správu Windows, ale i aplikací bˇežících pod tímto operaˇcním systémem. Zabudované PowerShell pˇríkazy se nazývají cmdlety (cmdlets). Existuje velké množství poskytovatelu˚ (provideru) ˚ pro pˇrístup k datum. ˚ Jsou to napˇríklad registry, úložištˇe certifikátu, ˚ souborový systém, adresáˇrová služba Active Directory. Na rozdíl od vˇetšiny ostatních interpretu˚ pˇríkazu˚ (shell) nejsou vstupy a zejména výstupy pouhé textové rˇ etˇezce, ale jsou to .NET objekty. Výhodou tohoto rˇ ešení je následné zpracování výstupu dalšími pˇríkazy v rouˇre (pipeline) [26]. Kromˇe zabudovaných cmdletu˚ je možné si pˇridat další cmdlety ve formˇe doplnk ˇ u˚ pomocí pˇríkazu Add-PSSnapIn, at’ už vytvoˇrené 9
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
tˇretími stranami, nebo své vlastní. Napˇríklad snap-in SharePointu pˇrídáme následujícím pˇríkazem: 1
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
2.3.1 PowerShell konzole Rozhraní pˇríkazové rˇ ádky (CLI – Command-line interface) muže ˚ na první pohled spoustu lidí odrazovat od používání takovýchto nástroju, ˚ a to zejména absencí jakýchkoliv ovládacích prvku, ˚ jako jsou menu nebo grafické rozhraní. Dˇríve než lze provést požadovanou operaci, je proto nutné znát textové pˇríkazy. Ve vˇetšinˇe konzolových aplikací je totiž problém se získáváním nápovˇedy pro aktuální uživatelský kontext. PowerShell vˇcetnˇe konzole se snaží uživateli co nejvíce pomoci, poˇcínaje intuitivním pojmenováním cmdletu, ˚ pˇres doplnování ˇ rozepsaných pˇríkazu˚ pomocí klávesy TAB (takzvaný Tab-Completion), vyhledávání v pˇríkazech, až po propracovaný systém nápovˇedy (ve vˇetšinˇe pˇrípadu˚ i s pˇríklady). Užiteˇcnými pˇríkazy jsou napˇríklad GetCommand, který vrátí seznam všech cmdletu˚ nebo Get-Help, který zobrazí nápovˇedu k danému cmdletu [27]. 2.3.2 Windows PowerShell ISE Kromˇe rozhraní pˇríkazové rˇ ádky máme možnost využít i nástroje Windows PowerShell ISE (Windows PowerShell Integrated Scripting Environment). Toto rozhraní je dostupné v systémech Windows Vista, Windows Server 2008 a novˇejších. ISE je mnohem pˇríjemnˇejší rozhraní, zejména pro psaní a následné ladˇení skriptu, ˚ než standardní konzole. Umožnuje ˇ samozˇrejmˇe také spouštˇení skriptu, ˚ nebo jen jejich cˇ ástí. Dalším vylepšením pro práci je zvýraznování ˇ syntaxe a možnost vkládat zarážky (brakepoint) pro snadnˇejší ladˇení. Rozhraní je rozdˇeleno do tˇrí hlavních cˇ ástí: •
pˇríkazové okno – zde je možné provádˇet pˇríkazy stejnˇe jako v PowerShell konzoli,
•
okno s výstupem – zobrazuje výstup po provedení pˇríkazu, ˚ 10
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
•
skriptovací okno – umožnuje ˇ psát souvislé skripty, ladit je a spouštˇet.
V rámci jedné aplikace je možno spustit nˇekolik instancí PowerShellu a v rámci jedné instance potom i nˇekolik skriptovacích oken. Ovládání je možné skrze panel nástroju, ˚ nebo po krátké dobˇe snadno zapamatovatelnými klávesovými zkratkami [16].
2.4 Microsoft SQL Server Microsoft SQL Server je relaˇcní databázový systém vyvinutý spoleˇcností Microsoft. Kromˇe placené verze je dostupná edice Express, kterou lze získat zdarma, ale její funkˇcnost je omezena na poˇcet procesoru, ˚ maximální využitou pamˇet’ a maximální velikost databáze. Express edice je i pˇres tato omezení využitelná hlavnˇe pro menší podniky. Ve vˇetšinˇe pˇrípadu˚ je pro nˇe totiž tato edice dostaˇcující. Správa se provádí pomocí aplikace SQL Management Studio. Ta pokrývá vˇetšinu administrativních úkonu, ˚ od vytvoˇrení databáze, vytvoˇrení uživatelu˚ a nastavení jejich oprávnˇení, správu dat až po zálohování databáze a vytváˇrení a spouštˇení údržbových plánu. ˚ Souˇcástí SQL Serveru jsou i další nástroje. Pro vývojáˇre je zajímavý zejména SQL Profiler umožnující ˇ zachytávat ze serveru události, které je následnˇe možné analyzovat. Velmi dobˇre poslouží tˇreba pro diagnostiku pomalu bˇežících dotazu. ˚
2.5 Nagios Nagios je oblíbený open-source dohledový systém, který se stal témˇerˇ standardem. Umožnuje ˇ sledování stavu IT systému, ˚ identifikování a rˇ ešení problému˚ a díky vˇcasnému varování o nestandardním stavu systému problémum ˚ pˇredcházet. Hlavními pojmy, s kterými Nagios pracuje, jsou: •
host – zaˇrízení, které je monitorováno,
•
service – monitorovaná služba na daném hostu,
•
contact – kontakt, který má být informován, pokud dojde k definované události. 11
ˇ 2. P REHLED POUŽITÝCH TECHNOLOGIÍ
Celý systém je navržen tak, aby byl rozšiˇritelný pomocí tzv. pluginu. ˚ Pokud tedy narazíme na to, že Nagios sám od sebe neumožnuje ˇ monitorovat nˇejaký prvek v základní instalaci, mužeme ˚ doinstalovat rozšíˇrení, které toto bude umožnovat. ˇ Pokud takovéto rozšíˇrení neexistuje, je možné napsat si jej i vlastními silami. I když je Nagios open-source projekt, existuje i možnost zajistit si komerˇcní podporu u spoleˇcnosti Nagion Enterprises [28].
12
3 Popis a analýza problému Platforma SharePoint se stává poslední dobou stále oblíbenˇejší v rˇ adˇe firem. Úspˇech si získává zejména díky snadnému a intuitivnímu ovládání, které je založeno na podobnosti s kanceláˇrským balíkem Microsoft Office, jejich vzájemné integraci a integraci s operaˇcním systémem Windows. Mimo použití jako intranetové, nezˇrídka i internetové rˇ ešení, se nad touto platformou, díky snadné rozšiˇritelnosti, budují menší cˇ i vˇetší aplikace a z nich i rozsáhlé systémy. Menší úpravy se provádˇejí pomocí podpurných ˚ nástroju˚ SharePoint designer (pro úpravy vzhledu, vkládání webových cˇ ástí. . . ), nebo MS Office InfoPath pro pˇrizpusobování ˚ standardních formuláˇru˚ do struktury, která více odpovídá požadavkum ˚ koncových uživatelu. ˚ Pro vˇetší pˇrizpusobení ˚ se pro vývoj využívá programování rozšíˇrení ve Visual Studiu. Aplikace muže ˚ být sebelepší, ale bez toho, aby do ní šly snadno nahrát nebo z ní naopak cˇ erpat data, nebude pro uživatele pˇríliš použitelná. Tato práce má za cíl analyzovat, navrhnout a implementovat možnost snadno ukládat data z jiných systému˚ do platformy SharePoint, ale také je poskytovat a vkládat do dalších systému. ˚ V dnešní dobˇe má mnoho platforem ruzná ˚ rozhraní pro výmˇenu dat. U SharePointu tomu není jinak. Problém však nastane, pokud potˇrebujeme tyto aplikace propojit. Pokud oba systémy umí data pˇrijímat i poskytovat, narazíme na to, že potˇrebujeme nˇejakého prostˇredníka, který tuto výmˇenu zajistí. Práce se zabývá co nejobecnˇejším rˇ ešením tohoto problému tak, aby byl její výsledek použitelný pro co nejširší spektrum využití. Samotná výmˇena dat je pouze jednou z cˇ ástí rˇ ešeného problému. Pro použití v produkˇcním prostˇredí je kromˇe synchronizace tˇreba zajistit i snadnou ovladatelnost nástroje a možnosti automatického (plánovaného) spouštˇení. Neménˇe duležitou ˚ vlastností by mˇela být bezpeˇcnost. V pˇrípadˇe problému bˇehu aplikace by mˇely být nekorektní stavy aplikace vhodnˇe reportovány a co nejlépe zaznamenány okolnosti, za jakých problém nastal. Informováni bychom ale mˇeli být i o úspˇešnˇe dokonˇcených úlohách.
13
3. P OPIS A ANALÝZA PROBLÉMU
3.1 Sdílení dat Vyˇrešit problém pˇrístupu a poskytování dat (do cizích systému˚ z pohledu SharePointu) je možné tˇremi základními pˇrístupy. První možností je cˇ erpat data pˇrímo z požadovaného systému a zmˇeny zapisovat pˇrímo do cílového systému. Druhou možností je používat v externích systémech data uložená v SharePointu a pouze k nim pˇristupovat a zapisovat zmˇeny – práce s daty je možná pomocí webových služeb. Poslední možností je zajistit výmˇenu dat mezi systémy. SharePoint umožnuje ˇ od verze 2010 vytváˇret externí typy obsahu (external content type). Takto definovaná entita se muže ˚ na první pohled jevit jako nejjednodušší rˇ ešení. Možnosti následné práce jsou bohužel s takovouto entitou velice omezené, napˇríklad omezená správa oprávnˇení k jednotlivým položkám. Druhá možnost (ˇcíst i zapisovat data) bude v pˇrípadˇe již existujícího systému velice cˇ asto nepoužitelná, nebot’ i velmi flexibilní systémy nejsou na tyto možnosti ve vˇetšinˇe pˇrípadu˚ pˇripraveny. Tato možnost je tedy dostupná jen pro systémy, které jsou pro tento typ ukládání dat pˇrímo pˇripravovány. Pokud požadujeme mít data internˇe uložená v SharePointu a zárovenˇ v externí aplikaci, je tˇreba zajistit jejich výmˇenu. Tuto interakci lze zajistit zejména následujícími operacemi: •
import dat z cizích systému, ˚
•
export dat do cizích systému, ˚
•
obousmˇerná výmˇena dat.
Pod pojmem externí aplikace muže ˚ být myšlen ale i SharePoint. Pokud potˇrebujeme pˇristupovat k datum, ˚ která nejsou pˇrímo dostupná z dané lokace (webu), muže ˚ se nám hodit právˇe takováto výmˇena dat. Mužeme ˚ ale vymyslet i pˇrípad, kdy budeme data vymˇenovat ˇ i v rámci SharePointu v lokacích, kde by to nebylo potˇreba rˇ ešit. Pˇredstavme si seznam s informacemi o produktech vˇcetnˇe cen. K tomuto seznamu bychom rádi omezili pˇrístup pouze pro urˇcitou skupinu lidí, ale dále bychom chtˇeli použít tento seznam jako cˇ íselník. ˇ Omezení oprávnˇení lze provádˇet pouze na úrovni rˇ ádku. ˚ Rešením 14
3. P OPIS A ANALÝZA PROBLÉMU by bylo vytvoˇrit nový seznam, který bude dostupný každému, ale bude obsahovat pouze ty sloupce, které mají být pˇrístupné všem uživatelum. ˚ Tato data pak budou získávána z kompletního, avšak nepˇrístupného seznamu.
3.2 Automatické spouštˇení Pˇri provozu aplikace se setkáme s tím, že bychom ji rádi pravidelnˇe spouštˇeli a nemuseli tento proces manuálnˇe provádˇet sami. S automatizací tohoto procesu se omezí požadavky na lidské zdroje a minimalizují se chyby lidského faktoru. Napˇríklad to, že uživatel zapomene provést požadovanou akci, nebo ji spustí s chybnými vstupy. V pˇrípadˇe vývoje pro Sharepoint jsou k dispozici dvˇe možnosti spouštˇení.
3.2.1 Plánovaˇc úloh První možností automatického spouštˇení procesu je využití systémového plánovaˇce. Ve Windows se o tuto agendu stará Plánovaˇc úloh (Task Scheduler), který je implementován jako služba Windows. Správa se provádí pomocí stejnojmenné aplikace. Plánovaˇc úloh umožnuje ˇ naplánovat spuštˇení libovolného procesu a to v urˇcitý datum a cˇ as, ale i opakovanˇe – dennˇe, týdnˇe, mˇesíˇcnˇe. Jako spouštˇecí akce nemusí být pouze spuštˇení v daný cˇ as, ale také navázání na akci v systému. Lze jmenovat napˇríklad spuštˇení, pˇrihlášení uživatele, uzamknutí sezení. Výhodou této možnosti je, že se jedná o standardní vlastnost systému a spouštˇení je plnˇe pod naší kontrolou. Vzniklé problémy, ale i informace o spuštˇení, jsou zaznamenány do Protokolu událostí (Event Log). Nevýhodou tohoto rˇ ešení v pˇrípadˇe webové aplikace je potˇrebný pˇrístup na server, a to vˇetšinou pomocí vzdálené plochy (Remote Desktop). Uživatel musí mít zárovenˇ dostateˇcná oprávnˇení pro možnost nastavovat potˇrebné údaje. 15
3. P OPIS A ANALÝZA PROBLÉMU 3.2.2 SharePoint Timer Druhou alternativou je využít možností SharePointu v rámci Úloh cˇ asovaˇce (Timer Jobs). Implementace je provedena podobnˇe jako u Plánovaˇce úloh. Stejnˇe jako ten je i „Sharepoint 2010 Timer“ spuštˇený jako služba ve Windows. Na rozdíl od Plánovaˇce úloh zde není uživatelské rozhraní pro vytváˇrení úloh, ale spravují se zde pouze existující úkoly v rámci SharePointu. Kromˇe existujících úloh je možné definovat i vlastní, ale není to tak snadné jako u Plánovaˇce úloh ve Windows. Výhoda použití tohoto rˇ ešení pro vlastní rozšíˇrení je zachování principu˚ zavedených v SharePointu. Naopak velkou nevýhodou v nˇekterých pˇrípadech muže ˚ být to, že nelze definovat, na kterém serveru se úkol spustí v pˇrípadˇe farmové instalace – spustí se na libovolném serveru, kde bˇeží služba.
3.3 Monitoring Pˇri vývoji aplikací se bez zaznamenávání stavu˚ (logování) neobejdeme, a to ani u malých aplikací. Logování není duležité ˚ jen pˇri vývoji, ale oceníme jej hlavnˇe pˇri nasazení aplikace do ostrého provozu, kdy vˇetšinou již nemáme k dispozici ladící nástroj (debuger), anebo není úplnˇe snadné jej použít. Hlavní úlohou logování je informování o bˇehu a událostech aplikace. Log aplikace umožní odhalit chybný bˇeh aplikace a pˇredcházet tak stavum, ˚ které by mohly poškodit data nebo jinak narušit správné chování programu. Tyto informace jsou pak velice prospˇešné pro nalezení chybného kódu programu a následné ovˇerˇ ení, zda opravou této chybné cˇ ásti byl problém vyˇrešen. Logování není jen o zápisu textových hlášení do „nˇejakého“ textového souboru nebo databáze. Špatnˇe nastavené logování muže ˚ zpusobit ˚ více problému˚ než užitku. Je tˇreba se zamyslet nad tím, zda velké množství záznamu˚ neovlivní celkový chod systému. Toto kritérium je tˇreba zhodnotit ze dvou pohledu, ˚ a to z krátkodobého i dlouhodobého. Z krátkodobého hlediska je nutné myslet na to, abychom nelogovali mnoho zbyteˇcných záznamu˚ a neubírali na výkonu samotné aplikaci. Pˇrílišné logování pak muže ˚ zpusobovat ˚ i dlouhodobˇejší 16
3. P OPIS A ANALÝZA PROBLÉMU problémy. Nesmíme totiž zapomenout, že pokud logování aplikace vyprodukuje napˇríklad 100 MB záznamu˚ za hodinu, za den je to již 2,4 GB a za mˇesíc dokonce 72 GB. Jestliže víme, že budeme logovat velké objemy záznamu, ˚ je vhodné také správnˇe navrhnout, jak se budou záznamy do souboru˚ ukládat. V pˇrípadˇe velkých objemu˚ není vhodné logovat vše do jednoho souboru. Denní log velký 2,4 GB z pˇredchozího pˇríkladu by se následnˇe velmi špatnˇe procházel a velmi špatnˇe by se v nˇem hledaly potˇrebné informace. Je tˇreba tedy zhodnotit vhodný interval dˇelení souboru˚ – napˇríklad 1 den, 1 hodina. Pro velké logy ale nemusí být na škodu napˇríklad ani 10 minut. Další možností je dˇelit soubory po urˇcitém množství zaznamenaných rˇ ádku. ˚ Abychom omezili vliv na výkon, je vhodné ukládat logy na jiný disk než na ten, kde bˇeží systém a aplikace. Duležité ˚ je také popˇremýšlet nad tím, kam logovat. V pˇrípadˇe, že budeme logovat na souborový systém serveru, budeme mít oddˇelené záznamy pro každý server. Z tohoto pohledu je vhodné na souborový systém logovat zejména informace týkající se dané instalace. Na druhou stranu, logováním do databáze mužeme ˚ napˇríklad centralizovat informace a mít pˇrístup ke všem informacím z jednoho místa. Toto muže ˚ být vhodné tˇreba pro aplikaci bˇežící v clusteru. Pokud logovací záznam obsahuje informaci o jménu nebo o jiném identifikaˇcním údaji serveru, mužeme ˚ tak rozlišit místo vzniku jednotlivých záznamu. ˚ Další velkou výhodou centralizace logu˚ je snadné a rychlé prohledávání a vytváˇrení ruzných ˚ statistik. V pˇrípadˇe webové aplikace máme k dispozici hned nˇekolik logu: ˚ •
systémový log – zaznamenávání problému˚ pˇrímo s aplikaˇcním serverem, napˇríklad problém se spuštˇením aplikace,
•
log webového serveru – jedná se zejména o záznamy pˇrístupu k jednotlivým souborum, ˚
•
aplikaˇcní log – logování provádˇené pˇrímo aplikací – v našem pˇrípadˇe je zajištˇeno pˇrímo platformou SharePoint. Pro vlastní rˇ ešení v rámci platformy však lze využít libovolné vlastní metody. 17
3. P OPIS A ANALÝZA PROBLÉMU 3.3.1 IIS Log Záznamy z logu webového serveru obsahují zejména informace o pˇrístupu k jednotlivým požadavkum ˚ od klienta. Ve výchozím nastavení je dáno, aby se do logu zapisovaly informace o datu a cˇ ase, zdrojová a cílová IP adresa, metoda (GET, POST. . . ), URL, port, cˇ íslo HTTP stavu (jsme schopni zjistit, zda volání neskonˇcilo chybou) a další informace zaslané klientem, napˇríklad jméno a verze internetového prohlížeˇce. Na první pohled se muže ˚ zdát, že z pohledu vývojáˇre nejsou tyto informace moc zajímavé. V pˇrípadˇe výskytu problému, ale mohou velice pomoci. Napˇríklad tehdy, když uživatel oznámí, že se mu objevila nˇejaká chyba, ale není pˇresnˇe schopný rˇ íct, kde a jak se chyba vyskytla. Následnˇe mužeme ˚ zjistit jeho pˇredchozí pohyb po webu a pokusit se z tˇechto informací chybu nasimulovat. Správný log najdeme podle Site-ID – nápomocný muže ˚ být opˇet PowerShell: 1 2
# vypise vsechny weby vcetne jejich Site-ID Get-WmiObject -NameSpace ’root\WebAdministration’ Site | Select Id,Name
3.3.2 SPLog SPLog je aplikaˇcní log platformy Microsoft SharePoint. Výstupem jsou textové soubory ve výchozím nastavení ukládané do adresáˇre 14Hive/LOGS. Duležité ˚ informace se také zapisují do standardního Protokolu událostí ve Windows. Pokud vyvíjíme vlastní rozšíˇrení, mužeme ˚ využít zabudovaný logovací mechanizmus. Konfigurace logování se provádí v centrální administraci v sekci Monitorování – Vytváˇrení sestav – Konfigurovat protokolování diagnostiky (Monitoring – Reporting – Configure diagnostic logging). Je možné nastavit minimální úrovnˇe pro logování pro Protokoly události (Event Log) a Protokol trasování (Trace Log). Pro Trace log je možné (a doporuˇcené z výše popsaných duvod ˚ u) ˚ navíc zmˇenit umístˇení, maximální poˇcet dní, po které budou záznamy uchovávány, a jejich maximální velikost na disku. Výhodou použití zabudovaného rˇ ešení i ve vlastních rozšíˇreních je „konzistence“ celého systému. V pˇrípadˇe problému˚ vše najdeme pohromadˇe. Nejvˇetší nevýhodou je to, že nelze snadno mˇenit úrovnˇe 18
3. P OPIS A ANALÝZA PROBLÉMU logování jen pro vlastní rozšíˇrení. Tím jsou omezeny možnosti ladˇení problému˚ v produkˇcním prostˇredí, protože nemusí být možné nastavit úrovenˇ Podrobná (Verbose), ve které samotný SharePoint zaˇcne generovat veliké množství dat a tím negativnˇe ovlivní rychlost zpracování požadavku. ˚
19
ˇ 4 Rešení K rˇ ešení problému lze pˇristoupit nˇekolika možnými zpusoby. ˚ Mu˚ žeme se pokusit najít existující aplikaci, která rˇ eší právˇe tento nebo podobný problém a bylo by možné ji použít. Jinou možností je navrhnout a vytvoˇrit aplikaci vlastní, která bude co nejlépe splnovat ˇ naše požadavky. Pro posouzení existující aplikace je tˇreba si nejprve uvˇedomit, jaké možnosti máme z pohledu SharePointu v pˇrístupu k datum ˚ a dle tˇechto kritérií následnˇe hodnotit i posuzovanou aplikaci.
4.1 Pˇrístup k datum ˚ uloženým v SharePointu Microsoft SharePoint ukládá data do Microsoft SQL Server databáze. Databáze má pevnou strukturu dat. Struktura dat viditelná v seznamech a knihovnách dokumentu˚ je rˇ ešena v databázi až pomocí logické struktury. Zjednodušenˇe rˇ eˇceno, data jsou ukládána do jedné tabulky a v druhé tabulce jsou metadata popisující jejich strukturu. S daty nelze pracovat pˇrímo na databázové úrovni, ale pomocí definovaného rozhraní. SharePoint 2010 umožnuje ˇ práci skrze tˇri pˇrístupy – serverový objektový model, webové služby nebo klientský objektový model. Pro lepší pochopení možností práce s daty v jednotlivých existujících rˇ ešeních a následné zhodnocení je dobré pˇredvést jednotlivé metody a popsat jejich výhody a nevýhody. V následujících cˇ ástech bude ukázáno, jak pomocí popisovaného rozhraní získat data ze seznamu Contacts (vytvoˇreného ze standardní SharePoint šablony Contacts) z webu Examples, konkrétnˇe adresy http://sps2010/sites/Examples, kde požadujeme vrátit maximálnˇe 10 kontaktu, ˚ respektive jmen a telefonních cˇ ísel, kde je název spoleˇcnosti HP nebo Apple. 4.1.1 Serverový objektový model Serverový objektový model je známý již ze starších verzí SharePointu a v poslední nejnovˇejší verzi 2010 se témˇerˇ neliší od star20
4. Rˇ EŠENÍ ších verzí – zachovává zpˇetnou kompatibilitu, pˇridává pouze nové funkce, pˇrípadnˇe opravuje chyby. Pro pˇrístup k datum ˚ se využívá zejména tˇrídy SPList. Ta slouží jak pro pˇrístup k seznamu, tak pro pˇrístup do knihovny dokumentu. ˚ Všechna data lze pˇreˇcíst iterací pˇres vlastnost Items. Pˇristupovat takto k datum ˚ nemusí být vždy úplnˇe optimální rˇ ešení a vˇetšinou tomu tak opravdu není. Musí se totiž naˇcíst všechny záznamy z databáze, tím pádem je operace v rozsáhlých seznamech cˇ asovˇe i pamˇet’ovˇe velice nároˇcná. Lepší možností pro pˇrístup k datum ˚ je využití metody GetItems pro získání záznamu˚ dle omezujících podmínek (filtru) nebo GetItemById, pokud požadujeme konkrétní záznam se známým identifikátorem. Metoda GetItems umožnuje ˇ získat data dle pohledu (view) nebo filtru. Pro definování filtru se používá speciální jazyk CAML (Collaborative Application Markup Language), který je založen na XML notaci, respektive jeho cˇ ást pro dotazování. Ta obsahuje binární logické operátory konjunkce (and) a disjunkce (or), unární operátory, napˇríklad je prázdný (IsNull), zaˇcíná (BeginsWith), odpovídá (Eq) atd. [20]. Velkým pomocníkem v zaˇcátcích sestavování filtru˚ muže ˚ být velmi užiteˇcný nástroj U2U CAML Query Builder. Poslední dostupná verze je sice pro SharePoint 2007, ale jelikož se objektový model nezmˇenil, je možné jej využít i ve verzi 2010 [37]. Pˇríklad získání dat pomocí serverového objektového modelu: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// otevreme kolekci webu (site collection) using (SPSite site = new SPSite("http://sps2010/sites/examples")) { // otevreme web using (SPWeb spWeb = site.OpenWeb()) { // ziskame seznam s kontakty SPList contactlist = spWeb.Lists["Contacts"]; SPQuery query = new SPQuery(); // vytvorime dotaz / filtr query.Query = @"<Where>
<Eq>HP <Eq>Apple Value> "; // pokud seznam obsahuje adresare, ziskame data i z podadresaru query.ViewAttributes = "Scope=\"Recursive\""; // maximalni limit vracenych kontakty bude 10 query.RowLimit = 10;
21
4. Rˇ EŠENÍ 18 19 20 21 22 23
// vraceny budou pouze sloupce FullName a CellPhone query.ViewFields = "
"; // ziskame polozky ze seznamu dle nastavenych kriterii SPListItemCollection contacts = contactlist.GetItems(query); } }
Pro naˇctení dat ze SharePointu budeme potˇrebovat do referencí pˇridat pouze sestavení Microsoft.SharePoint. Zde jsou shrnuty výhody a nevýhody serverového objektového modelu. Výhody: •
nejsnadnˇejší a nejefektivnˇejší pˇrístup k datum ˚
•
možnost práce v kontextu jiného uživatele
•
objektový pˇrístup Nevýhody:
•
dostupný pouze na serveru
4.1.2 Webové služby Stejnˇe jako serverový objektový model mužeme ˚ rozhraní webových služeb znát již ze starších verzí. Webová služba je zpusob ˚ komunikace mezi dvˇema stranami (klient – server) ve vˇetšinˇe pˇrípadu˚ pomocí SOAP (Simple Object Access Protocol), který je brán jako standard. Webové služby poskytují klientum ˚ popis svého rozhraní (seznam dostupných metod, typy jejich argumentu˚ a návratových hodnot) pomocí WSDL (Web Services Description Language), které je založeno na XML. V pˇrípadˇe webových aplikacích postavených nad platformou .NET se jedná zpravidla o soubory *.asmx. O WSDL definici se ASP.NET postará automaticky. Získání WSDL je možné pouhým pˇridáním parametru wsdl k adrese služby (napˇr. service.asmx?wsdl). SharePoint 2010 na rozdíl od starších verzí blokuje volání SOAP (soubory *.asmx) webových služeb SharePointu. Pro jejich používání je tˇreba je povolit. Stejnˇe jako u vˇetšiny administrativních akcí mu˚ žeme provést nastavení dvˇema zpusoby: ˚ 22
4. Rˇ EŠENÍ •
V centrální administraci: Application Management - Manage web applications - vybrat aplikaci Blocked File Types (v ribbonu) - odebrat asmx ze seznamu
•
pomocí PowerShellu: 1 2 3
$app = Get-SPWebApplication "http://sps2010/" $app.BlockedFileExtensions.Remove("asmx") $app.Update()
Pˇríklad získání dat pomocí webové služby: Adresa: http://sps2010/sites/examples/_vti_bin/Lists.asmx 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.microsoft.com/sharepoint/soap/"> <soapenv:Header/> <soapenv:Body> <soap:GetListItems> <soap:listName>Contacts <soap:viewName> <soap:query><Where> <Eq>HP <Eq>Apple Eq> <soap:viewFields> <soap:rowLimit>10 <soap:queryOptions> <soap:webID>
Pro testování webových služeb je vhodná napˇríklad aplikace SoapUI [35]. Z WSDL služby automaticky vygeneruje šablony SOAP dotazu˚ dostupných metod. Po vyplnˇení parametru˚ lze následnˇe tyto dotazy spouštˇet a kontrolovat výsledky. Mimo standardních webových služeb nabízí SharePoint od verze 2010 i RESTful rozhraní. REST (Representational State Transfer) je architektura rozhraní vhodná pro distribuované systémy a slouží pro pˇrístup ke zdrojum ˚ dat. Architektura je navržena jako bezstavová, výsledek dotazu tedy nezávisí na pˇredchozích dotazech. REST 23
4. Rˇ EŠENÍ implementuje cˇ tyˇri základní metody oznaˇcované jako CRUD (create – vytvoˇrení dat, retrieve – získání dat, update – aktualizace dat, delete – smazání dat). Tyto operace jsou v HTTP protokolu implementovány pomocí odpovídajících metod (POST – vytvoˇrení, GET – získání, PUT – aktualizace, DETELE – smazání). Všechny zdroje jsou identifikovány vlastním URI (Uniform Resource Identifier). Pˇríklad získání dat pomocí RESTful rozhraní: 1
http://sps2010/sites/examples/_vti_bin/listdata.svc/Contacts?$filter=( Company eq ’HP’) or (Company eq ’Apple’)&$top=10
Zde jsou vyjmenovány výhody a nevýhody webových služeb. Výhody: •
možnost pˇrístupu k datum ˚ i z libovolného poˇcítaˇce (nejen ze serveru) ˚ Nevýhody:
•
složité zpracování dat, data jsou jako rˇ etˇezce
•
nemožnost pˇrístupu k datum ˚ pomocí „zvýšených oprávnˇení“ (RunWithElevatedPrivileges)
4.1.3 Klientský objektový model V pˇredchozích verzích SharePointu bylo možné pˇristupovat k datum ˚ pouze pomocí serverového objektového modelu nebo webových služeb. Objektový model se využíval zejména pro získání dat pro webové cˇ ásti nebo aplikaˇcní stránky. Pro systémy mimo SharePoint nebyla jiná možnost, než použít volání webových služeb se všemi omezeními a pˇrípadnou neefektivitou oproti objektovému ˇ modelu. Casto se webové služby využívají také v pracovních postupech. SharePoint 2010 mimo obou pˇredchozích možností poskytuje i tˇretí rozhraní pro pˇrístup k datum. ˚ Jedná se o klientský objektový model, který muže ˚ být z programátorského hlediska v nˇekterých pˇrípadech efektivnˇejší. Lze ho využívat pomocí JavaScriptu, Silverlightu (a to jak bˇežícího v prohlížeˇci tak i mimo prohlížeˇc), ale i pomocí .NET kódu programu (C#). Oproti webovým službám pˇridává podporu i pro nˇekteré operace, které tam nebyly dostupné, zejména 24
4. Rˇ EŠENÍ vzhledem k funkˇcnosti a rozsahu použití webových služeb – napˇríklad práce s webovými cˇ ástmi. Základem klientského objektového modelu je webová služba Client.svc, která na stranˇe serveru funguje jako rozhraní nad serverovým objektovým modelem. Klient se dotazuje webové služby pomocí XML zpráv (o vytvoˇrení se stará klientský objektový model) a odpovˇed’ je vracena v obecném formátu JSON (JavaScript Object Nonation). Ten je dále zpracován opˇet klientským objektovým modelem pro další práci s výsledkem.
Obrázek 4.1: Klientský objektový model [38]. Pro práci s klientským objektovým modelem je navíc tˇreba pˇridat reference na sestavení Microsoft.SharePoint.Client a Microsoft.SharePoint.Client.Runtime. Pˇriklad získání dat pomocí klientského objektového modelu: 1 2 3 4 5 6 7 8 9
// pripravime klientsky kontext a ziskame seznam Contacts ClientContext clientctx = new ClientContext("http://sps2010/sites/examples "); List contactlist = clientctx.Web.Lists.GetByTitle("Contacts"); CamlQuery query = new CamlQuery(); // nastavime pozadovane podminky query.ViewXml = @"<Where> <Eq>HP <Eq>Apple
25
4. Rˇ EŠENÍ 10 11 12 13 14 15 16 17
10 ViewFields> "; ListItemCollection contacts = contactlist.GetItems(query); clientctx.Load(contacts); // vytvori se dotaz clientctx.ExecuteQuery(); // zavola se webova sluzba // nyni je v kolekce contacts nactena a data muzeme libovolne dale zpracovavat
Následující výhody a nevýhody jsou kombinací obou pˇredchozích pˇrístupu. ˚ Výhody: •
jednotné rozhraní jak pro standardní aplikace, Silverlight i JavaScript
•
možnost pˇrístupu k datum ˚ z libovolného poˇcítaˇce
•
objektový pˇrístup Nevýhody:
•
nejménˇe efektivní pˇrístup
•
nároˇcné na použití
4.2 Dostupná existující rˇešení Pˇri rˇ ešení libovolného problému je vhodné nejdˇríve zkusit vyhledat již existující rˇ ešení. Je totiž pravdˇepodobné, že stejný problém již rˇ ešil nˇekdo jiný. Je však možné, že ale nenajdeme žádný nástroj, který by plnˇe vyhovoval našim požadavkum. ˚ I pˇresto je dobré znát existující produkty, protože z nich lze pˇri vlastní implementaci vycházet. 4.2.1 Data Synchronisation Studio Data Synchronisation Studio je produkt spoleˇcnosti Simego Ltd., který je možné získat na webu ve zkušební (trial) 15 denní verzi [34]. V rámci zkušební verze byla provedena analýza chování programu a zjištˇeny její kladné i záporné stránky. 26
4. Rˇ EŠENÍ Základní zhodnocení Z informací dostupných o produktu lze vyvodit jeho základní klady i zápory. Hlavní výhodou je, že se jedná o již hotovou aplikaci a díky tomu je možné ji nasadit do produkˇcního prostˇredí ve velmi krátkém cˇ ase. Neménˇe duležitou ˚ výhodou jsou široké možnosti napojení na další systémy a podpora ruzných ˚ protokolu˚ (MS SQL, MS Access, Excel, ODBC, OleDB, MySQL, Oracle, ale CSV, XML, SOAP), mimo jiné je podporováno i napojení na SharePoint. Je však tˇreba zvážit i pˇrípadné problémy. Pokud by produkt pˇrestal z nˇejakého duvodu ˚ staˇcit, pˇrípadnˇe by nesplnoval ˇ nˇekterý z požadavku, ˚ bylo by témˇerˇ nemožné provést zmˇeny chování, protože se jedná o komerˇcní uzavˇrený produkt. Technické provedení Základní jednotkou, se kterou se v programu pracuje, je projekt. Pˇri vytváˇrení projektu je možné použít jednoduchého pruvodce. ˚ V prvním kroku je nutné vybrat datový zdroj – v našem pˇrípadˇe Sharepoint nebo databáze. V pˇrípadˇe SharePointu máme na výbˇer ze tˇrí SharePoint poskytovatelu˚ dat (budou popsány níže). U každého z nich jsou stejné možnosti. Prvním krokem je zadání adresy webu a následnˇe výbˇer seznamu a pohledu, který chceme použít jako datový zdroj. V pru˚ vodci není dále možné nastavit žádné jiné hodnoty. Podrobnˇejší nastavení parametru˚ je možné až následnˇe ve vlastnostech datového zdroje. Možnosti jsou ale opˇet relativnˇe omezené, protože lze nastavit pouze pohled, z kterého se budou brát data, a QueryLimit, který nastaví maximální poˇcet vrácených položek. Již tedy není možné jednoduše zmˇenit napˇríklad seznam. V pˇrípadˇe zmˇeny seznamu by bylo tˇreba znovu nakonfigurovat celý datový zdroj. Pokud vybereme databázový datový zdroj, po zadání pˇripojovacího rˇ etˇezce k databázovému serveru (connection string) jsou zobrazeny databáze a následnˇe tabulky a pohledy. Další možnosti nastavení zdroje jsou opˇet v jeho vlastnostech. Zde je již možné mˇenit jak pˇripojovací rˇ etˇezec, tak tabulku, odkud se cˇ erpají data. V mnoha pˇrípadech muže ˚ být vítána i možnost definovat vlastní pˇríkaz pro získání dat, nebo alesponˇ where a order by klauzule. 27
4. Rˇ EŠENÍ Po vybrání obou datových zdroju˚ je možné provést mapování zdrojové struktury na cílovou. Po provedení tohoto nastavení je již možné spustit porovnání zdroju, ˚ a to obˇema smˇery, nebo z vybraného zdroje pouze zobrazit data. Takto vytvoˇrený projekt lze následnˇe uložit. Projekt se ukládá do souboru ve formátu XML. S velkou opatrností lze tedy pˇrípadnˇe mˇenit parametry i pˇrímo v tomto souboru. Uložený projekt (DS) je možné následnˇe spouštˇet v Data Synchronisation Studiu nebo v jednodušší aplikaci Data Synchronisation Studio Run Tool. Zde lze naˇcíst více pˇripravených konfigurací a tyto konfigurace následnˇe uložit do Run Tool projektu (DSRun). Jak DS, tak DSRun projekt lze pˇrímo z aplikace naplánovat tak, aby byl pomocí plánovaˇce úloh ve Windows (Task Scheduler) automaticky spouštˇen. Dialog s nastavením neumožnuje ˇ vybrat libovolný cˇ asový interval – napˇríklad každý den v noci, ale následnˇe je možné takto naplánovaný úkol snadno upravit v Plánovaˇci úloh pˇrímo ve Windows.
Obrázek 4.2: Naplánování synchronizace. Synchronizace funguje na principu stažení dat z obou zdroju˚ (A, B) do pamˇeti, kde je aplikace porovná a umožní promítnout zmˇeny (zdroj A -> zdroj B nebo zdroj B -> zdroj A) – pˇridat nové záznamy, smazat staré nebo aktualizovat existující ze zdrojového do cílového 28
4. Rˇ EŠENÍ umístˇení. Informace o zmˇenách jsou uživateli prezentovány v tabulce (gridu), kde jsou zvýraznˇeny bunky, ˇ které budou, po potvrzení uživatelem, zmˇenˇeny. Dalším krokem bylo vytvoˇrení testovací konfigurace, pomocí které bylo cílem zjistit, jak Data Synchronisation Studio pracuje.
Obrázek 4.3: Testovací konfigurace DS. Analýzou provedenou pomocí nástroje SQL Server Profiler bylo zjištˇeno, že dotazy na databázi jsou optimalizovány dle vybraných sloupcu˚ k synchronizaci – vybrány byly pouze potˇrebné sloupce. Výsledný dotaz tedy, pro tabulku Table_1 a sloupce ID a Text, vypadá napˇríklad takto (tabulka navíc obsahuje i další sloupce LongText, SPSID): 1
SELECT [ID], [Text] FROM dbo."Table_1"
Aplikace je tedy maximálnˇe optimalizována, jak z pamˇet’ového, tak i sít’ového hlediska z pohledu klienta (objem požadovaných dat zasílaných po síti z databázového serveru). V pˇrípadˇe analýzy cˇ erpání dat ze SharePointu byla situace ponˇekud složitˇejší. Nebylo možné využít SQL Server Profiler pro zjištˇení 29
4. Rˇ EŠENÍ dotazu získávajícího data z databáze. Pro zjištˇení zasílaného dotazu byl použit HTTP proxy server Burp Suite [29]. Zaslaný dotaz je optimalizován jen na potˇrebné sloupce – stejnˇe jako u databáze (pˇri použití datového zdroje, který využívá webové služby): 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns :xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www. w3.org/2001/XMLSchema"> <soap:Body> <listName>e18774ad-8f72-4982-8be7-43066d0ecb43 03bf391d-ff97-460a-9cd4-ce9f8afb28d5 5000 TRUE <Paging ListItemCollectionPositionNext="Paged=TRUE& p_ID=15000" /> <webID>53222b2c-c401-45c3-ab79-bb9876620b7b
Po dukladné ˚ analýze tohoto programu lze kladnˇe hodnotit možnost použití dvou zpusob ˚ u˚ pˇrístupu k datum ˚ v SharePointu. Dva datové zdroje jsou implementovány pomocí webových služeb (jeden z nich je oznaˇcen jako zastaralý) a jeden pomocí klientského objektového modelu. Nevýhodou je to, že neexistuje datový zdroj, který využívá serverový objektový model pro pˇrístup k datum. ˚ Tím pádem nelze provádˇet operace na vˇetšinou nejménˇe vytížených aplikaˇcních serverech (v obou pˇrípadech se zatˇežují právˇe nejvíce využívané webové servery). Velkou nevýhodou je však nesnadná práce se sloupci typu „vyhledání informace z jiného seznamu“ (lookup) a typu „osoba nebo skupina“ (user or group). Toto omezení je však dáno metodou 30
4. Rˇ EŠENÍ pˇrístupu k datum. ˚ Snadnˇeji a efektivnˇeji by to bylo možné jen v pˇrípadˇe použití serverového objektového modelu. V pˇrípadˇe, že by nabízená funkˇcnost postaˇcovala potˇrebám uživatele, jedná se o dobrý a spolehlivý nástroj. V programu muže ˚ chybˇet zejména možnost dˇelat jen rozdílové aktualizace (synchronizace od posledního spuštˇení) nebo jen exportovat všechna data ze SharePointu (napˇríklad všechny zmˇenˇené záznamy za poslední den). Velkou výhodou je možnost vytvoˇrení vlastních poskytovatelu˚ dat. 4.2.2 SQL Server Integration Services Souˇcástí Microsoft SQL Serveru je SSIS (SQL Server Integration Services). Jedná se o platformu poskytující integraci a transformaci dat vhodnou pro rˇ ešení komplexních problému˚ [21]. SQL Server Integration Services neposkytuje zabudovaný datový zdroj pro SharePoint. Je ale možné pˇridat poskytovatele dat tˇretích stran. Pro SharePoint jich existuje nˇekolik, zejména komerˇcních, ale i open-source. Z komerˇcních jsou dostupné napˇríklad tyto: •
Task Factory [30]
•
COZYROC SSIS+ 1.6 Library [2]
Dále bude pˇredstavena konfigurace SSIS vytvoˇrená právˇe pomocí open-source poskytovatele dat SharePoint ListAdapter [13], respektive jeho komponent SharePoint List Source a SharePoint List Destination. Podobnˇe jako v Data Synchronisation Studiu se konfigurace datového zdroje pro SharePoint provádí zadáním adresy webu, jména seznamu a pohledu. Pˇrípadnˇe lze navíc nadefinovat vlastní filtr ve formˇe CAML dotazu. Podobnˇe jako Data Synchronisation Studio používají obˇe komponenty (zdroj a cíl) pro komunikaci se SharePointem volání webových služeb. Výhodou je však použití jména seznamu a pohledu v konfiguraci. Díky tomu lze jen zmˇenit adresu webu a tím pˇrenést pˇripravenou konfiguraci z vývojového nebo testovacího prostˇredí na prostˇredí produkˇcní. 31
4. Rˇ EŠENÍ
Obrázek 4.4: Testovací konfigurace SSIS. Pˇri spuštˇení projektu (konfigurace) je nejprve stažen seznam pohledu, ˚ aby se podle nakonfigurovaného jména pohledu zjistilo, jestli v seznamu existuje, a následnˇe se použilo pro další dotazy jeho identifikaˇcní cˇ íslo: 1 2 3 4 5 6 7 8
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <listName>List_2
Jakmile je dohledán pohled, stáhne se seznam položek dle konfigurace: 1 2 3 4 5 6 7 8 9 10 11
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <listName>List_2 {91934783-DF6A-44EB-8824-BF55E7E859E4}
32
4. Rˇ EŠENÍ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
1000 FALSE FALSE <Paging ListItemCollectionPositionNext=""/>
Pro SSIS je možné vyvíjet dvˇema zpusoby. ˚ V SQL Server Business Intelligence Develpoment Studio, jak již bylo pˇredvedeno, nebo v prostˇredí vývojového nástroje Visual Studio. V prvním pˇrípadˇe se jedná o typ projektu pro Visual Studio 2008 (není však bohužel možné využít Visual Studio 2010 [3]. U SSIS je tˇreba hlídat, jaké definice sloupcu˚ jsou použity. Komponenta zdroje naˇcítá všechny sloupce bez ohledu na to, které jsou následnˇe reálnˇe použity, což muže ˚ zpusobovat ˚ problém s rychlostí a dostatkem potˇrebné pamˇetí. Pro SSIS lze vyvíjet i vlastní komponenty [36, 6]. Pomocí serverového objektového modelu by tedy bylo možné naprogramovat vlastní zdroj i cíl dat, která nelze získat jednoduše pomocí webových služeb. 4.2.3 Microsoft Sync Framework Microsoft Sync Framework je obecná synchronizaˇcní platforma umožnující ˇ spolupráci a bˇeh aplikací, služeb a zaˇrízení v režimu 33
4. Rˇ EŠENÍ
Update stamp
Insert stamp
Delete stamp
ID klienta (updaty)
ID klienta (inserty)
ID klienta (mazání)
Stažení snapshotu dat na klienta Stažení inkrementálních insertu˚ a updatu˚ na klienta Stažení inkrementálních insertu, ˚ updatu˚ a mazání na klienta Nahrání insertu˚ na server Nahrání insertu˚ a updatu˚ na server Nahrání insertu, ˚ updatu˚ a mazání na server Obousmˇerné inserty a updaty s detekcí konfliktu˚ Obousmˇerné inserty, updaty a mazání s detekcí konfliktu˚
PK
offline. Umožnuje ˇ snadno vytváˇret systémy synchronizující jakákoliv data libovolným sít’ovým protokolem. Hlavní pˇredností je, mimo již existujících datových poskytovatelu˚ (databázové, souborové, webové), možnost vytvoˇrit si vlastní. [17] Poskytovatel dat pro SharePoint bohužel není mezi standardními zdroji dat, které Microsoft Sync Framework nabízí. Existuje však aplikace SyncToy [23] pro synchronizaci položek mezi knihovnou dokumentu˚ a souborovým systémem, která využívá právˇe Microsoft Sync Framework.
Ne
Ne
Ne
Ne
Ne
Ne
Ne
Ano
Ano
Ano1 Ne
Ne
Ne
Ne
Ano
Ano
Ano1 Ano
Ne
Ne
Ne
Ano
Ne
Ne
Ne
Ne
Ne2
Ne
2
2
Ano
Ne
Ne
Ne
Ne
Ne
Ne
Ano
Ne
Ne
Ne
Ne2
Ne2
Ne
Ano4 Ano
Ano1 Ne
Ano3 Ano3 Ne
Ano4 Ano
Ano1 Ano
Ano3 Ano3 Ano3
Tabulka 4.1: Potˇrebné informace pro požadovaný typ operace [7]. 1
Vyžadováno, pokud potˇrebujeme rozlišit inserty a updaty.
2
Vyžadováno, pokud více klientu˚ muže ˚ zmˇenit rˇ ádek a chceme tyto zmˇeny rozlišit.
3
Vyžadováno, pokud nechceme zmˇeny propagovat zpˇet na klienta, který je provedl.
4
Primární klíˇc musí být unikátní. Smazané hodnoty se nesmí znovu používat (vhodné používat
GUID) [1].
34
4. Rˇ EŠENÍ Nevýhodou pˇri použití tohoto frameworku však muže ˚ být to, že pro možnost provést synchronizaci musí být nˇekteré sloupce v datovém zdroji. Ve výše uvedené tabulce 4.1 jsou shrnuty požadavky na informace ve zdrojích v návaznosti na požadovanou operaci. Pro synchronizaci dat ze SharePointu a dat z databáze nemusí být vždy možné získat potˇrebná data (ˇcas vložení, úpravy nebo smazání) v existujících strukturách. Zejména z pohledu návrhu synchronizace jsou informace kolem Mycrosoft Sync Frameworku vhodné jako zdroj mnoha dalších myšlenek a znalostí. 4.2.4 SPLoad SPLoad je komerˇcní produkt, veˇrejnˇe nedostupný, který byl vyvinut pro import dat do SharePointu. Výsledkem této diplomové práce by mˇelo být právˇe jeho nahrazení novým produktem, který by rˇ ešil nˇekteré stávající problémy a omezení. Jedinou výhodou aplikace SPLoad je to, že se jedná o bˇežící systém, který je vyladˇený na úkoly, které provádí již nˇekolik let. Aplikace má však spoustu nedostatku, ˚ kvuli ˚ kterým by mˇela být nahrazena. Základním problémem je nevhodný pˇrístup k databázi. SQL dotaz do databáze je skládán jako textový rˇ etˇezec (ne jako parametrizovaný dotaz), u kterého se nyní naráží na maximální délku podporovanou v databázi, a je náchylný k SQL injection. Dalším problémem je jeho složitá konfigurace. Pro nastavení se používají XML soubory, které v atributech používají složité textové kombinace dalšího nastavení, místo jednoduššího rozdˇelení parametru˚ do jednotlivých atributu˚ XML elementu. Programu by prospˇel také lepší monitoring. 4.2.5 Další nalezená rˇešení a pˇrístupy Data Synchronisation Studio není jediným veˇrejnˇe dostupným komerˇcním produktem. Za zmínku stojí napˇríklad i produkt Business Data List Connector spoleˇcnosti Layer 2 [11]. Konfigurace se provádí pˇrímo v nastavení daného seznamu, není tedy žádný centrální pˇrehled o jednotlivých konfiguracích. Konfigurace také není možné snadno uložit a pˇrenést je na jiný seznam (v rámci farmy nebo z testovacího prostˇredí na produkˇcní). Na seznamu lze nastavit jen jednu 35
4. Rˇ EŠENÍ konfiguraci, takže se data nedají exportovat do více lokací. Databázový zdroj muže ˚ být pouze databáze, ne jiný SharePoint seznam. Mimo serverového objektového modelu, webových služeb SharePointu a klientského objektového modelu se muže ˚ použít i CMIS (Content Management Interoperability Services) rozhraní. Jedná se o sadu webových služeb implementující operace standardizované právˇe v rozhraní CMIS.
4.3 Logování Zaznamenávat stavy aplikace je standardní, mnohokrát rˇ ešený problém. V této oblasti není již témˇerˇ žádný prostor na vymýšlení nových rˇ ešení, zejména pokud jsme nenarazili na nˇejaký velmi specifický požadavek. Jelikož se jedná o velice obecný problém, který rˇ eší témˇerˇ každá aplikace, existuje již mnoho hotových knihoven napˇríˇc všemi programovacími jazyky a frameworky. Jelikož nepožadujeme od logování žádné speciální funkce nebo chování, máme na výbˇer z velkého množství hotových rˇ ešení, napˇríklad Enterprise Library, NLog, log4net a mnoho dalších [5]. Vˇetšinou se liší jen v drobných detailech, jako jsou možnosti úrovní nebo podporovaná úložištˇe. Na základˇe pˇredchozích dobrých zkušeností bylo rozhodnuto, že v této diplomové práci bude pro logování použita knihovna log4net. Ta vznikla portováním úspˇešné knihovny pro logování log4j, která je využívána v Javˇe.
36
5 Pˇrizpusobení ˚ a vývoj aplikací pro SharePoint V první cˇ ásti této kapitoly budou pˇredstaveny nástroje, které jsou dostupné pro práci s platformou SharePoint a pro její správu. Povˇedomí o tˇechto nástrojích by mˇel mít každý zkušenˇejší uživatel, který má na starosti napˇríklad údržbu projektového nebo týmového webu. V další cˇ ásti budou uvedeny možnosti vývoje a nasazení rozšírˇ ení, zajímavé zejména z pohledu programátora, pˇrípadnˇe administrátora farmy. Poslední cˇ ást se bude vˇenovat porovnání výkonnosti v pˇrístupu k datum ˚ uloženým v SharePointu pomocí serverového objektového modelu, webových služeb a klientského objektového modelu tak, aby bylo možné vyvodit závˇery z informací získaných analýzou existujících rˇ ešení.
5.1 Popis nástroju˚ pro správu a práci s platformou Pro práci s platformou SharePoint je dostupných nˇekolik základních aplikací, které umožnují ˇ jeho jednoduché úpravy, používání i správu. Nejduležitˇ ˚ ejší z nich je webová aplikace Centrální administrace a dále dvˇe desktopové aplikace Microsoft SharePoint Designer a SharePoint Workspace. Mimo aplikací s grafickým uživatelským rozhraním lze vˇetšinu administrativních úkolu˚ provádˇet i pomocí skriptovacího jazyka PowerShell, pro který je dostupná sada pˇríkazu, ˚ nebo pomocí programu STSADM.EXE, který pracuje v režimu pˇríkazového rˇ ádku.
5.1.1 Centrální administrace Jak již z názvu vyplývá, jedná se o nástroj pro administraci. Stejnˇe jako celý SharePoint je i centrální administrace založená na webovém pˇrístupu. Je to první cˇ ást SharePointu, kterou administrátor po instalaci uvidí. Prvotní konfigurace probíhá totiž právˇe v pruvodci ˚ v této cˇ ásti. 37
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
V rámci administrace se spravují jednotlivé webové aplikace (tzv. top-level site), nastavuje se mapování adres, definice oprávnˇení (administrátorské úˇcty, anonymní pˇrístup), ale i systémová nastavení (správa serveru˚ ve farmˇe, emailové a SMS nastavení), sledování (analýza stavu, úlohy cˇ asovaˇce, vytváˇrení sestav stavu a využití) a zálohování až po správu upgradu˚ a oprav. Centrální administrace je jednou z nˇekolika možností, jak provádˇet hlavní nastavení. Dalším nástrojem je program STSADM. Jedná se o konzolovou aplikaci urˇcenou pro správce platformy. Tato aplikace je pozusta˚ tek ze starších verzí, ve kterých byla hlavním nástrojem pro administrativní úˇcely. Nejflexibilnˇejší možností je ale využít pro konfiguraci PowerShell, který se po zažití stane i nejefektivnˇejším pˇrístupem a dokáže nahradit veškeré funkce programu STSADM. 5.1.2 Microsoft SharePoint Designer 2010 Microsoft SharPoint Designer je aplikace z kanceláˇrského balíku Microsoft Office, která je dostupná ke stažení zdarma. Tento program umožnuje ˇ snadný a rychlý vývoj pro SharePoint. Zkušení uživatelé pomocí tohoto nástroje mohou velmi snadno vybudovat i rozsáhlé portály postavené na standardních funkcích poskytovaných platformou. Tato aplikace se postará nejen o editaci stránek, vkládání webových cˇ ástí a úpravu šablonových stránek (master page), ale umožnuje ˇ i vytváˇret seznamy, typy obsahu (content type), nebo spravovat uživatelské akce v kontextových menu. Z pokroˇcilejších funkcí nabízí napˇríklad správu pracovních postupu˚ a definici externích datových zdroju˚ [19]. 5.1.3 SharePoint Workspace SharePoint Workspace je souˇcástí kanceláˇrského balíku Microsoft Office Professional Plus 2010 a umožnuje ˇ pracovat s obsahem v SharePointu i v offline režimu. Užiteˇcná je tato aplikace zejména v pˇrípadˇe, kdy uživatel nemá pˇrístup na server SharePoint (na služební cestˇe, u zákazníka). Po pˇripojení jsou pak zmˇeny automaticky synchronizovány. Pˇripojení do SharePoint Workspace se provádí pomocí pásu karet (ribbon menu) z dokumentové knihovny 38
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
nebo seznamu kliknutím na akci Synchronizovat s aplikací SharePoint Workspace.
5.2 Vývoj vlastních rozšíˇrení Nejvˇetších možností pˇrizpusobení ˚ si SharePointu vlastním potˇrebám lze však docílit jen s pomocí vývojového nástroje Visual Studio [25] spoleˇcnosti Microsoft. Tento proces pˇrizpusobení ˚ však klade nejvˇetší nároky na cˇ as a znalosti uživatele. Ve vˇetšinˇe pˇrípadu˚ je pro tuto cˇ innost tˇreba, aby se o úpravy postaral programátor mající velmi dobré znalosti ve vývoji aplikací pro framework .NET. V pˇrípadˇe vizuálních rozšíˇrení, v podobˇe stránek a webových cˇ ástí, musí ovládat i ASP.NET. Mimo tˇechto znalostí je však tˇreba velmi dukladnˇ ˚ e pochopit i architekturu, objektový model a nˇekteré záludnosti této platformy. Proto zde rozebereme základní informace a principy pro vývoj.
5.2.1 Popis hlavních adresáˇru˚ 12Hive a 14Hive Termíny 12Hive a 14Hive jsou oznaˇcovány koˇrenové adresáˇre, kde ˇ jsou nainstalovány hlavní souˇcásti platformy SharePoint. Císla udávají verzi. Od verze 2007 jsou interní cˇ ísla verzí shodná s interními cˇ ísly kanceláˇrského balíku Microsoft Office – 2007 odpovídá internímu cˇ íslu 12 a 2010 cˇ íslu 14. Oficiální oznaˇcení koˇren (root) pro hlavní adresáˇr instalace (verze 2010) se mezi vývojáˇri a administrátory neuchytil a na vˇetšinˇe blogu˚ a diskusních fór se stále používá termín 14Hive, a to hlavnˇe z duvodu ˚ jasné identifikace tohoto adresáˇre a nezamˇenitelnosti s jinými „koˇrenovými“ adresáˇri. Pro pˇripravovanou verzi SharePointu 2013 bude interní cˇ íslo 15 a hlavní adresáˇr bude alesponˇ mezi vývojáˇri opˇet oznaˇcován jako 15Hive. Jak již bylo rˇ eˇceno, jedná se o adresáˇr obsahující hlavní soubory SharePointu – binární soubory, konfiguraci, webové stránky, webové kontroly, nápovˇedu nebo jazykové pˇreklady. Zde je základní popis jednotlivých adresáˇru˚ [8]: 39
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
•
\ADMINSAPI: Adresáˇr obsahující webové služby volané Centrální administrací (mapovaný do virtuálního adresáˇre „_vti_adm“)
•
\BIN: Adresáˇr obsahující všechny základní binární soubory potˇrebné pro bˇeh, vˇcetnˇe nástroje STSADM.EXE
•
\CONFIG: Adresáˇr obsahuje zejména konfiguraˇcní soubory, ale i pˇrekladové soubory
•
\Data: Adresáˇr je používán pro indexaˇcní službu. Obsahuje napˇríklad seznam nevýznamných slov (pro cˇ eštinu mužeme ˚ v souboru noiseces.txt najít slova jako a, aby, ale, který nebo pro angliˇctinu v souboru noiseeng.txt napˇr. a, and, is, in) – z du˚ vodu menšího indexu a lepší výkonnosti.
•
\ISAPI: Adresáˇr obsahuje všechny standardní webové služby. Každá webová aplikace SharePointu obsahuje virtuální adresáˇr „_vti_bin“ mapovaný na ISAPI adresáˇr.
•
\LOGS: Adresáˇr obsahuje aplikaˇcní log SharePointu. Stane se velmi navštˇevovaným, pokud budeme vyvíjet rozšíˇrení nebo provádˇet administraci SharePointu.
•
\Resources: Adresáˇr obsahuje pˇrekladové soubory pro nainstalované jazykové lokalizace.
•
\TEMPLATE: Adresáˇr obsahuje hlavní funkˇcní cˇ ásti aplikace jako jsou rozšíˇrení, šablony, obrázky a vzhledy ovládacích prvku. ˚ Jeho další podadresáˇre se mapují do nˇekolika dalších duležitých ˚ virtuálních adresáˇru˚ – napˇr. „_layouts“, „_layouts/images“, „_layouts/styles“.
5.2.2 Typy rozšíˇrení Pˇri vývoji vlastních rozšíˇrení mužeme ˚ vyvíjet dva základní typy – aplikace (konzolové, formuláˇrové) bˇežící pˇrímo na serveru a využívající objektový model, nebo ASP.NET aplikace instalující se jako rozšíˇrení stávající funkcionality. 40
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
Konzolové a formuláˇrové aplikace U standardních aplikací se bude jednat zejména o aplikace usnadnující ˇ administrátorum ˚ správu, ruzné ˚ exporty a importy dat nebo struktury. Pˇri vývoji ve Visual Studiu se vychází z šablony pro konzolovou aplikaci s následným pˇridáním reference na sestavení SharePoint. Duležité ˚ je nastavit .NET Framework na verzi 3.5 a jako cílovou platformu vybrat x64 [15]. Pokud není nastavena cílová platforma na x64, pˇri spuštˇení programu a pokusu o vytvoˇrení objektu z tˇrídy SPSite dostaneme moc neˇríkající, až matoucí, chybu: The Web application at could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.
ASP.NET Mnohem zajímavˇejší, zejména z pohledu rozšiˇrování funkˇcnosti, je vývoj dalších doplnk ˇ u˚ dostupných koncovým uživatelum. ˚ U tˇechto rozšíˇrení se jedná zejména o stránky, webové cˇ ásti, ale tˇreba i vlastní webové služby. SharePoint má vlastní systém instalací rozšíˇrení ve formˇe takzvaných balíˇcku˚ rˇ ešení (solution package), nazývaných jako WSP balíˇcek nebo WSP soubor (dle pˇrípony souboru *.wsp). Nejedná se o žádný nestandardní formát, ale o CAB (Cabinet) formát – komprimovaný archiv. Není tedy problém do tohoto souboru nahlédnout hloubˇeji a pochopit vlastní strukturu dat. Této možnosti využijeme zejména pˇri rˇ ešení potíží s instalací nebo pˇri problémech s vytvoˇrením vlastních instalaˇcních balíˇcku. ˚ ˇ Rešení lze rozdˇelit na dva typy: •
Farmová rˇ ešení (farm solution) – nejˇcastˇejší typ rozšíˇrení, instalaci muže ˚ provést jen administrátor farmy,
•
Uživatelská rˇ ešení (sandbox solution) – muže ˚ být využita pouze velmi omezená funkcionalita pro vytvoˇrení vlastních rˇ ešení (napˇríklad nemožnost vytvoˇrit vizuální komponentu). Pro uživatelská rˇ ešení muže ˚ být použit pouze kód v sestavení, 41
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
muže ˚ je ale instalovat i administrátor kolekce webu. ˚ Pro jejich velká omezení se však témˇerˇ nepoužívají. Nejduležitˇ ˚ ejším souborem je manifext.xml, který obsahuje informace o DLL knihovnách (dynamic-link library – dynamicky linkovaná knihovna), seznamu funkcí (feature), webových službách, obrázcích, definicích vzhledu vizuálních komponent a dalších souborech potˇrebných pro bˇeh rozšíˇrení. Mimo informace o seznamu DLL knihoven a cestˇe, kam mají být nasazeny, je zde umístˇen i seznam bezpeˇcných komponent (safe controls). Všechny vizuální komponenty, které jsou v SharePointu zobrazovány, musí v tomto seznamu být. Pˇri nasazení jsou informace o bezpeˇcných komponentách uloženy do hlavního konfiguraˇcního souboru webové aplikace (web.config). Druhým duležitým ˚ souborem je feature.xml. Tˇechto souboru˚ muže ˚ být v jednom balíˇcku i více. Tento soubor obsahuje odkazy na soubory s popisy webových cˇ ástí (soubory s pˇríponou *.webpart) a další soubory (elements.xml) obsahující informace o souˇcástech rozšíˇrení, jako jsou napˇríklad události (Event Receivers) nebo definice pro delegované komponenty. Jednotlivá rozšíˇrení lze následnˇe aktivovat a deaktivovat každé zvlášt’. Nejsnadnˇeji získáme balíˇcek se všemi potˇrebnými daty tak, že vývoj budeme provádˇet ve vývojovém prostˇredí Visual Studio, které obsahuje pˇrímo v projektu volbu „vytvoˇrit balíˇcek“. Visual Studio není pro vývoj rozšíˇrení pro SharePoint nezbytné. Pokud budeme mít zkompilován kód (napˇríklad pomocí IDE SharpDevelop), balícˇ ek mužeme ˚ pˇripravit i pomocí opensource rˇ ešení WSP Builder [9] (pˇri vývoji pro SharePoint 2007 Visual Studio nepodporovalo pˇrímo tvorbu WSP balíˇcku˚ a tvorba balíˇcku˚ byla pomocí tohoto nástroje v podstatˇe standardem). Nic nám však nebrání vytvoˇrit si balíˇcek úplnˇe sami svépomocí, avšak za cenu delší doby pˇrípravy. 5.2.3 Možnosti rozšíˇrení a úpravy SharePoint díky své variabilitˇe umožní i pouze jednoduchými uživatelskými nastaveními pokrýt mnoho požadavku˚ a pokud nˇeco není možné upravit uživatelsky, témˇerˇ jistˇe to pujde ˚ programovˇe. Tak je 42
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
totiž možné udˇelat jakékoli úpravy vzhledu a chování celého systému. Základními tˇrídami, se kterými budeme pracovat, jsou SPSite a SPWeb. V SharePointu je však využíván i neˇrízený kód, proto je tˇreba se starat o uvolnování ˇ pamˇeti. Tˇrídy SPSite a SPWeb implementují rozhraní IDisposable, které zajistí uvolnˇení pamˇeti po již nepotˇrebných objektech. Pˇri vývoji, zejména v zaˇcátcích, než si programátor osvojí správné návyky pro práci s tˇemito tˇrídami, muže ˚ pomoci nástroj SharePoint Dispose Checker [10]. Ten provˇerˇ í kód a upozorní na problematická místa, kde by za bˇehu objekty nebyly uvolnˇeny, nebo, v opaˇcném pˇrípadˇe, kde by uvolnˇeny být nemˇely. Uvolnˇení objektu˚ pomocí konstrukce using: 1 2 3 4 5 6 7
using(SPSite site = new SPSite("http://sps2010")) { using(SPWeb web = site.OpenWeb()) { // kod vyuzivajici objekty site a web } }
Uvolnˇení objektu˚ pomocí konstrukce try – catch – finally: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
try { site = new SPSite("http://sps2010"); web = site.OpenWeb(); // kod vyuzivajici objekty site a web } catch(Exception e) { // zpracovani vyjimky } finally { if (web != null) web.Dispose(); if (site != null) site.Dispose(); }
V dalších ukázkách kódu˚ v této kapitole bude vypuštˇeno vytvorˇ ení objektu˚ web a site a pokud nebude rˇ eˇceno jinak, bude využit první pˇríklad s konstrukcí using. Sloupec Nejmenší jednotkou v SharePointu je sloupec (column). Ten muže ˚ být ruzného ˚ typu. Základních typu˚ (field type) je dvanáct. Sloupec 43
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
umožnuje ˇ uchovávat hodnoty napˇríklad typu text, datum, uživatel, nebo výbˇer z hodnot. Podle typu je následnˇe ve formuláˇrích zobrazena komponenta zobrazující nebo umožnující ˇ editovat hodnotu. Muže ˚ to být napˇríklad textový sloupec pomocí komponenty pro textový vstup, nebo výbˇer jako zaškrtávací volby. Kromˇe vytvoˇrení sloupce pˇrímo v seznamu je možné vytvoˇrit definici sloupce pˇrímo na webu (site column) a tento sloupec následnˇe využít ve více seznamech. Použití je na první pohled zˇrejmé napˇríklad u sloupce typu výbˇer. Pˇri pˇridání nové hodnoty do výbˇeru se hodnota pˇridá automaticky do všech sloupcu˚ v seznamech, kde je tento sloupec použit. Nový textový sloupec lze do seznamu pˇridat pomocí webového rozhraní, ale i programovˇe pomocí objektového modelu. Následující kód pˇridá do seznamu DemoList textový sloupec DemoColumn: 1 2 3 4 5
SPList demoList = web.Lists["DemoList"]; string fieldName = "DemoColumn"; SPFieldType type = SPFieldType.Text; bool required = false; demoList.Fields.Add("demoColumn", SPFieldType.Text, false);
Všechny sloupce jsou dˇedˇeny ze základní tˇrídy SPField. Všechny názvy typu˚ zaˇcínají prefixem SPField. Napˇríklad u textového sloupce se jedná o tˇrídu SPFieldText nebo u výbˇeru o SPFieldChoice. Pokud se však stane, že bychom z nˇejakého duvodu ˚ potˇrebovali jiný sloupec, respektive jeho formuláˇrové zobrazení, lze si nadefinovat i sloupec vlastní. Mužeme ˚ napˇríklad implementovat výbˇer, který bude ve formuláˇri vypadat jako semafor. Následnˇe je vhodné dodržet jmennou konvenci, pro semafor by tedy jméno tˇrídy mohlo být SPFieldTrafficLights. Typ obsahu Seznam (list) se skládá z uživatelem definovaných sloupcu. ˚ Mu˚ žeme najít pˇrípady, kdy by bylo limitující, kdyby všechny položky seznamu musely obsahovat vždy stejné sloupce. Toto omezení naštˇestí v SharePointu nehrozí. Pomocí nám v tomto pˇrípadˇe jsou typy obsahu (Content Type). Pokud budeme chtít v jednom seznamu uchovávat informace napˇríklad o vozovém parku, zjistíme, že pro osobní a nákladní au44
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
tomobily potˇrebujeme uchovávat ruzné ˚ údaje. Podobnˇe jako v objektovém programování existuje i v SharePointu vlastnost podobná dˇediˇcnosti. Mužeme ˚ vytvoˇrit typ obsahu auto, nadefinovat na nˇem základní sloupce, napˇríklad barva nebo SPZ. Pro osobní automobil vytvoˇríme nový typ obsahu, který bude vycházet z typu auto, a pˇridáme napˇríklad poˇcet míst k sezení. Podobnˇe pro nákladní automobil napˇríklad typ korby. Pˇri vytváˇrení položky si vybereme požadovaný typ obsahu a formuláˇr zobrazí sloupce pro daný typ. Stejnˇe jako pro sloupce lze typy obsahu definovat pˇrímo na webu a následnˇe je použít v ruzných ˚ seznamech, ale stále je spravovat z jednoho místa. Pˇríklad pˇridání typu obsahu DemoContentType vycházející ze standardního typu položka (Item): 1 2 3 4 5 6
SPContentType ctDemo = null; ? string ctName = "DemoContentType"; ctDemo = new SPContentType(web.AvailableContentTypes[SPBuiltInContentTypeId .Item], web.ContentTypes, ctName); ctDemo.Description = "Typ obsahu vychazejici z typu polozka"; cts.Add(ctDemo); ctDemo.Update(true);
Následnˇe je možné takto vytvoˇrený typ obsahu pˇridat do seznamu: 1 2 3 4 5
SPList demoList = web.Lists["DemoList"]; demoList.ContentTypesEnabled = true; // povoleni typu obsahu SPContentType ctDemo = web.ContentTypes["DemoContentType"]; demoList.ContentTypes.Add(ctDemo); demoList.Update();
Šablona seznamu Vytvoˇrení seznamu nemusí být pokaždé zdlouhavou prací, než vytvoˇríme v seznamu potˇrebné sloupce a požadované nastavení ze základní šablony Vlastní seznam (Custom List). Mužeme ˚ totiž využít nˇekterou z již pˇripravených šablon, jako jsou Diskusní vývˇeska, Kalendáˇr, Kontakty nebo Úkoly. Výhodou šablon je i to, že jsou definované speciální pohledy (View). Napˇríklad pro kalendáˇr není v pohledu zobrazen seznam položek ve formˇe seznamu, ale jako kalendáˇr. Vlastní seznam lze uložit jako šablonu a následnˇe na základˇe této šablony vytváˇret další seznamy. Šablonu mužeme ˚ také uložit a nahrát do jiné kolekce webu, ˚ nejen v rámci jedné farmy. Je tedy možné 45
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
pˇripravit si šablonu na vývojové nebo testovací farmˇe a následnˇe nahrát na produkˇcní prostˇredí. Událost Události (Event Receiver) v SharePointu lze pˇrirovnat napˇríklad ke spouštˇecˇ um ˚ (trigger) v databázích. Umožnují ˇ definovat akce (spustit vlastní kód), které se provedou pˇri operaci definované na kolekci webu, ˚ webu, seznamu, položce seznamu nebo na pracovním postupu. Události se rozdˇelují do dvou typu˚ podle typu spuštˇení na synchronní a asynchronní a dále do dvou typu˚ podle cˇ asu spuštˇení na „before events“ (událost vyvolána pˇred provedením akce) a „after events“ (událost vyvolána po provedení akce). Události se vˇetšinou vytváˇrejí ve Visual Studiu pomocí návrháˇre. ˇ Je možné je však vytváˇret i programovˇe. Casto, zejména pˇri rˇ ešení ruzných ˚ problému, ˚ potˇrebujeme zjistit, zda na seznamu existuje nˇejaká registrovaná událost. Ve starších verzích SharePointu se pro tyto úˇcely používaly ruzné ˚ utility. Od verze 2010 je však možné snadno získat seznam událostí pomocí PowerShellu: 1 2
# vypise udalosti na seznamu: $list.EventReceivers | Select Name, Type, Synchronization, SequenceNumber, Class
Webová cˇ ást Webová cˇ ást (Webpart) je vizuální komponenta, která je známá již z ASP.NETu (System.Web.UI.WebControls.WebPart) a která je pro potˇreby SharePointu rozšíˇrena o další vlastnosti (Microsoft.SharePoint.WebPartPages.WebPart). Jedná se o základní stavební jednotku pro vytváˇrení stránek a formuláˇru. ˚ Pokud budeme vytváˇret rozšíˇrení, ve vˇetšinˇe pˇrípadu˚ se bude jednat právˇe o vytváˇrení webových cˇ ástí. Webovou cˇ ást je možné umístit na libovolnou stránku obsahující komponentu WebPartManager. SharePoint 2010 novˇe umožnuje ˇ pro webovou cˇ ást vytvoˇrit kontextové menu, které se pˇri výbˇeru webové cˇ ásti zobrazí v menu pásu karet (ribbon menu). 46
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
Formuláˇr Formuláˇre a stránky jsou z pohledu uživatele nejvˇetší jednotné celky. Existují dva typy stránek. Bud’ jsou obsažené pˇrímo v SharePointu, nebo vyvinuté vlastní a nasazené pomocí vlastních rˇ ešení. Vlastní stránky mohou obsahovat vše, co nám dovolí samotný ASP.NET. Existující stránky v SharePointu lze upravovat vkládáním vlastních webových cˇ ástí a nastavením hodnot jejich vlastností. Existující stránkou nemusí být pouze stránka v knihovnˇe dokumentu˚ (napˇríklad wiki stránka), ale tˇreba i formuláˇr seznamu, který je také možné dále upravovat. Úloha Úloha (Timer Job) umožnuje ˇ nezávisle na akci uživatele spouštˇet (i opakovanˇe) definovaný kód. Správa úloh se provádí z centrální administrace. Na rozdíl od vˇetšiny ostatního kódu není úloha spouštˇena v kontextu webové aplikace (w3wp.exe), ale o spuštˇení se stará proces OWSTimer.exe. Proces OWSTimer.exe je v systému reprezentován jako služba. Úlohy nejsou spouštˇeny v pˇresnˇe definovaný cˇ as, ale v definovaném intervalu. Výchozí interval spouštˇení úloh je 5 minut. Interval je možné upravit v Centrální administraci pomocí pˇríkazu STSADM nebo pomocí PowerShellu. Pomocí úloh je mimo jiné provádˇeno i nasazení rˇ ešení (proto je dobré v pˇrípadˇe problému˚ s nasazením rˇ ešení zkontrolovat, zda služba bˇeží), zasílání upozornˇení a mnoho dalších. Abychom pˇri ladˇení nemuseli vždy cˇ ekat definovaný cˇ as, po kterém se úloha spustí, mužeme ˚ si na pomoc vzít opˇet PowerShell a vynutit spuštˇení okamžitˇe: 1 2
# vynuceni spusteni ulohy "NazevUlohy" v aplikaci s danou URL Get-SPTimerJob "NazevUlohy" -WebApplication "url" | Start-SPTimerJob
Pracovní postup Pracovní postup (Workflow) umožnuje ˇ nad položkami seznamu nebo v rámci webu spouštˇet definované procesy. Pracovní postup se skládá z jednotlivých aktivit. Aktivita je atomický blok, který defi47
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
nuje, co se má provést, napˇríklad vyžádat vstup od uživatele, zaslání emailu nebo tˇreba jen rozhodovací blok. Definice pracovního postupu se provádí pomocí SharePoint Designeru nebo Visual Studia. Na rozdíl od ostatních stavebních bloku˚ SharePointu nelze jednoznaˇcnˇe rˇ íci, kde pracovní postup bˇeží. Muže ˚ být hostován ve webové aplikaci, ale i jako úloha v procesu OWSTimer.exe. Existují nástavby tˇretích stran, které umožnují ˇ definovat pracovní postupy pˇrímo na webu. Hlavními zástupci pro práci s pracovními postupy jsou produkty firem Nintex nebo K2.
5.3 Srovnání pˇrístupu˚ z pohledu výkonnosti Pro pˇrístup k datum ˚ máme nˇekolik možností. Tyto možnosti byly rozebrány v kapitole 4.1. Pˇrístup k datum ˚ uloženým v SharePointu. Pro srovnání a zhodnocení jednotlivých pˇrístupu, ˚ zejména z pohledu rychlosti získání dat, byla vytvoˇrena jednoduchá konzolová aplikace, která umožnila stažení stejných dat pomocí tˇrí metod pˇrístupu, ˚ tedy pomocí serverového objektového modelu, klientského objektového modelu a volání webových služeb. Mˇerˇ ení probˇehlo 3x pro každý pˇrístup a 2x pro ruzné ˚ limity vracených položek (10 položek – obrázek 5.1 a 10 000 položek – obrázek 5.2). Seznam obsahoval celkem 100 000 položek. V každém spuštˇení probˇehlo ve smyˇcce 10 mˇerˇ ení. Z namˇerˇ ených dat je vidˇet, že v první iteraci se data naˇcetla do vyrovnávacích pamˇetí a naˇcetly se také potˇrebné knihovny. Každý další pˇrístup byl následnˇe již rychlejší a 2. - 10. iterace probˇehla za pˇribližnˇe stejnou dobu. Graf zobrazuje pouze cˇ as potˇrebný pro naˇctení dat. Pˇri reálné práci s webovými službami by byly cˇ asové nároky pro zpracování ještˇe vˇetší o pˇrevedení XML výsledku do podoby, ve které by se s daty dalo dále pracovat. Jako jasný vítˇez v tomto porovnání vychází serverový objektový model.
48
ˇ ˚ 5. P RIZP USOBENÍ A VÝVOJ APLIKACÍ PRO S HARE P OINT
Obrázek 5.1: Srovnání cˇ asu˚ pˇrístupu, ˚ limit 10 záznamu. ˚
Obrázek 5.2: Srovnání cˇ asu˚ pˇrístupu, ˚ limit 10 000 záznamu. ˚
49
6 Návrh a implementace Analýza rychlosti pˇrístupu k datum ˚ uloženým v SharePointu jasnˇe prokázala, že nejrychlejším zpusobem ˚ je serverový objektový model. Tento pˇrístup bohužel nenabízí žádný výše analyzovaný produkt. Žádný produkt také nenabízí snadnou možnost konfigurace bez potˇreby spouštˇet program na serveru. Z tˇechto duvod ˚ u˚ bylo rozhodnuto implementovat aplikaci, která bude splnovat ˇ požadavky na jednoduchou konfiguraci a která bude dostupná pˇrímo z prostˇredí platformy SharePoint. V této kapitole budou postupnˇe probrány jednotlivé cˇ ásti návrhu a následnˇe implementace daného rˇ ešení. Výhodou vlastní implementace je možnost dalšího vývoje, tím i rozšiˇrování funkcí aplikace a její pˇrizpusobení ˚ i budoucím požadavkum. ˚ Nevýhodou implementace nového rˇ ešení je však vyšší pracnost pro vytvoˇrení a zprovoznˇení, než jen konfigurace nˇekterého existujícího produktu. Výhody: •
Plná kontrola nad provádˇenými akcemi
•
Možnost rozšiˇrování dle aktuálních potˇreb
•
Možnost rozšiˇrovat o další poskytovatele dat
•
Na stranˇe SharePointu možnost vypnout události pˇri vkládání, editaci a mazání Nevýhody:
•
Pracnost
•
Nemusí obsahovat tolik možností, jako velké komerˇcní / opensource projekty
6.1 Návrh Z analýzy Microsoft Sync Frameworku vyplynulo, že není plnˇe vhodný pro práci s daty, u kterých nemužeme ˚ zaruˇcit jejich struk50
6. N ÁVRH A IMPLEMENTACE turu, a to zejména existenci potˇrebných sloupcu˚ pro cˇ asové hodnoty vytvoˇrení, aktualizace a smazání dat. Na základˇe tˇechto informací bylo rozhodnuto implementovat aplikaci od základu, ale tak, aby ji bylo možné dále snadno rozšiˇrovat. Rozšiˇritelností se rozumí snadné pˇridání dalšího poskytovatele dat, nebo i další synchronizaˇcní logiky. Z pohledu návrhu je možné aplikaci rozdˇelit do nˇekolika hlavních celku. ˚ Nejduležitˇ ˚ ejší cˇ ástí je samotné zajištˇení sdílení dat datových zdroju. ˚ Dále možnosti spouštˇení a plánování spouštˇení, monitoring stavu aplikace, ale i architektonický návrh aplikace. 6.1.1 Sdílení dat Z pohledu uživatele bude nejmenší jednotkou v rámci aplikace úkol. Dˇríve než bude možné úkol vubec ˚ provést, je tˇreba jej definovat. Definicí se rozumí popis vstupních dat a operace nad nimi. Pˇresunout data z jedné lokace do lokace druhé se muže ˚ z pohledu uživatele jevit jako snadný úkol. Složitˇejší je tyto informace poskytnout poˇcítaˇci tak, aby byl na základˇe tˇechto informací schopen akce správnˇe provést. Aby bylo možné tyto akce provádˇet opakovanˇe s minimálními cˇ asovými náklady, bylo tˇreba vyvinout postup, jak zprostˇredkovat uživateli nastavení, které bude co nejobecnˇejší. Dále bylo tˇreba vyvinout algoritmus, který na základˇe nastavení provede potˇrebné operace s definovanými daty. Nastavení Z pohledu uživatele se bude nastavení provádˇet pomocí jednoduchého webového uživatelského rozhraní. Uživatel si tedy nebude muset instalovat žádný dodateˇcný software pro práci s aplikací, bude staˇcit pouze internetový prohlížeˇc. Dle zamˇerˇ ení aplikace se pˇredpokládá, že uživatel je obeznámen s ovládáním platformy SharePoint. Proto se bude konfigurace provádˇet pokud možno co nejvíce podobným zpusobem, ˚ jakým je na této platformˇe zvykem pracovat. Pro uložení jednotlivých konfigurací bude využit obecný seznam. V rámci seznamu se jednotlivé konfigurace budou oznaˇcovat automatickým identifikátorem. Ke kaž51
6. N ÁVRH A IMPLEMENTACE dému nastavení bude možné definovat i popis, kam si uživatel bude moci vkládat své vlastní poznámky. Prvním krokem nastavení bude definice datových zdroju. ˚ Na základˇe výbˇeru typu datového zdroje se dále zobrazí potˇrebná vstupní pole pro zadání dodateˇcných informací. Pro databázi to bude pˇripojovací rˇ etˇezec a tabulka, pro SharePoint adresa webu a jméno seznamu. Aplikace by se mˇela snažit uživateli s nastavením co nejvíce pomáhat. Po zadání pˇripojovacího rˇ etˇezce k databázi sama dále nabídne seznam tabulek, v pˇrípadˇe SharePointu potom po zadání adresy webu nabídne dostupné seznamy.
Obrázek 6.1: Struktura projektu. Po nadefinování datových zdroju˚ provede uživatel mapování jednotlivých sloupcu˚ ze zdroje na sloupce cílové. V rámci mapování sloupcu˚ bude možnost zadat, podle kterého sloupce bude následnˇe probíhat párování jednotlivých rˇ ádku˚ mezi zdroji. Návrh algoritmu sdílení dat Uloženou konfiguraci bude následnˇe možné spustit. Aplikace bude pracovat podobnˇe jako analyzované existující aplikace. Po spuštˇení programu se stáhnou data z obou zdroju˚ do interních struktur. Následnˇe se spárují jednotlivé rˇ ádky z obou zdroju˚ dle párovacího sloupce. Jakmile se rˇ ádky spárují, porovná se, zda jsou hodnoty z obou zdroju˚ stejné. Pokud stejné nejsou, je potˇreba tyto rˇ ádky v cílovém ˇ datovém zdroji aktualizovat. Rádky, které se nepodaˇrí spárovat, se aktualizují dle následujících pravidel: •
rˇ ádek, který existuje jen ve zdroji, se vloží jako nový rˇ ádek do cílového zdroje, 52
6. N ÁVRH A IMPLEMENTACE •
pokud existuje rˇ ádek pouze v cílovém zdroji dat, je tento rˇ ádek smazán.
Všechny požadované operace upravující data se pˇri porovnávání budou rˇ adit do fronty a po dokonˇcení kontroly všech záznamu˚ se zmˇeny promítnou do cílového datového zdroje. Nutnou podmínkou pro provedení všech operací bude to, že datové zdroje v rámci párovacího sloupce musí obsahovat unikátní hodnoty. Pokud by hodnoty nebyly unikátní, nebylo by možné rˇ ádky jednoznaˇcnˇe spárovat. 6.1.2 Plánování spouštˇení Jakmile bude vytvoˇrena aplikace umožnující ˇ provádˇet potˇrebné operace nad datovými zdroji, bude tˇreba zajistit automatické spouštˇení. Aplikace bude umožnovat ˇ jednoduché plánování spouštˇení bˇehu programu. Plánování bude, stejnˇe jako konfigurace, probíhat v rámci platformy SharePoint tak, aby uživatel nepotˇreboval žádné dodateˇcné aplikace nebo pˇrístupy. Pokud bude tˇreba nastavit spuštˇení programu na základˇe složitˇejších podmínek, bude možné aplikaci s vybranou konfigurací spustit i pˇrímo ze serveru. Pro naplánování bude možné využít i aplikaci Plánování úloh, která je standardním nástrojem v operaˇcním systému Windows. Aby byl systém univerzální, bude spuštˇení možné i pomocí webových služeb. Tímto zpusobem ˚ bude umožnˇeno spuštˇení programu se zadanou konfigurací i z jiného serveru než jen z SharePoint farmy. Parametrem webové služby, mimo adresy webu uchovávající konfiguraci, bude i identifikaˇcní cˇ íslo požadované konfigurace ke spuštˇení. 6.1.3 Logování a monitoring aplikace Aplikace bude využívat vlastní aplikaˇcní log primárnˇe využívající databázové úložištˇe. Výhodou tohoto rˇ ešení, oproti využívání aplikaˇcního logu SharePointu, bude centralizace informací ze všech serveru˚ v jedné centrální databázi. 53
6. N ÁVRH A IMPLEMENTACE Logování bude zajišt’ovat knihovna log4net. Pro pˇrípadnou snadnou zmˇenu knihovny bude implementováno vlastní obecné rozhraní nad touto knihovnou. Vlastní aplikace nebude využívat pˇrímo knihovnu log4net, ale právˇe toto obecné rozhraní. V rámci plánování spouštˇení z prostˇredí SharePointu bude u naplánované úlohy zobrazen i poslední cˇ as spuštˇení. Kromˇe posledního cˇ asu spuštˇení by mˇela být dohledatelná i kompletní historie. V pˇrípadˇe kritické chyby aplikace budou záznamy uchovávány tak, aby bylo možné je hlídat pomocí monitorovacího nástroje. 6.1.4 Architektura aplikace Aplikace bude logicky cˇ lenˇena do nˇekolika cˇ ástí tak, aby bylo možné v rámci jednoho rˇ ešení sestavit jak balíˇcek rˇ ešení pro SharePoint, tak i konzolovou aplikaci pro spouštˇení jednotlivých konfigurací z pˇríkazového rˇ ádku nebo pomocí Plánovaˇce úloh. Jádro aplikace bude tvoˇrit synchronizaˇcní logika, sada tˇríd poskytujících rozhraní k jednotlivým datovým zdrojum ˚ a tˇrídy popisující konfiguraci. Toto jádro aplikace bude možné samostatnˇe testovat nezávisle na uživatelském rozhraní. Implementace aplikace bude provedena tak, aby bylo možné snadno pˇridávat nové datové zdroje. Další aplikace bude rozšiˇrovat webové rozhraní platformy SharePoint. Bude se jednat o rozšíˇrení o potˇrebné komponenty umožnující ˇ komunikaci s uživateli. Zejména jde o webovou cˇ ást (web part), která umožní provádˇet nastavení jednotlivých synchronizaˇcních úloh, a dále plánovaˇc úloh, který bude obstarávat spouštˇení úloh. Poslední duležitou ˚ cˇ ástí bude rozhraní pro pˇríkazovou rˇ ádku. Toto rozhraní nebude kromˇe zprostˇredkování vstupu˚ od uživatele a výstupu˚ provádˇet žádné jiné operace, veškerá logika bude obsažena právˇe v jádru aplikace.
6.2 Implementace Pro vývoj aplikace byl použit vývojový nástroj Visual Studio 2010, který obsahuje šablony pro ruzné ˚ typy projektu, ˚ vˇcetnˇe projektu˚ pro SharePoint 2010. Nejsnadnˇejší cestou, jak vyvíjet, je nainstalovat si 54
6. N ÁVRH A IMPLEMENTACE celé prostˇredí co nejvíce podobné reálnému nasazení. Vˇetšinou je dostateˇcná instalace na jeden server (webový, aplikaˇcní i databázový server) na jednom stroji. V dnešní dobˇe je velice oblíbená a také dostupná možnost virtualizace. Pro vývoj je tedy možné použít pouze virtualizovaný systém s dostateˇcným množstvím systémových prostˇredku, ˚ zejména pamˇeti. Vývoj byl provádˇen ve virtualizovaném systému Microsoft Windows 2008R2 Server bˇežícím ve virtualizaˇcním nástroji VMWare Player. V systému byl dále nainstalován Microsoft SQL Server 2008R2 a Microsoft SharePoint Foundation 2010. SharePoint Server 2010 nebyl nainstalován z duvodu ˚ kompatibility se základní verzí (verze Server pouze rozšiˇruje verzi Foundation o pokroˇcilejší nástroje, ale objektový model je stejný). V rámci Visual Studia bylo vytvoˇreno jedno rˇ ešení (solution), které se skládá z logicky rozdˇelených projektu˚ tak, aby se využilo co nejvíce spoleˇcného kódu mezi jednotlivými projekty. Jednotlivé projekty budou popsány níže. Pˇred prvním nasazením je tˇreba u všech projektu˚ povolit podepisování sestavení a nastavit správný „Strong Name Key“ (SNKey), na základˇe kterého se vytváˇrí silný název (strong name). Pokud bychom sestavení nepodepsali, nebylo by možné jej pˇri instalaci nahrát do globálního úložištˇe sestavení – GAC (Global Assembly Cache). Dále se na základˇe silného názvu do souboru web.config pˇríslušné webové aplikace po nasazení WSP balíˇcku vloží informace o bezpeˇcných komponentách (safe controls). Pokud bychom na toto zapomnˇeli a pˇridali námi vyvinutou webovou cˇ ást na stránku, po následné zmˇenˇe silného názvu by se objevila chyba, která je zobrazena na obrázku 6.2.
Obrázek 6.2: Chyba pˇri zobrazení webové cˇ ásti po zmˇenˇe silného názvu. 55
6. N ÁVRH A IMPLEMENTACE Jedinou možností opravy je odebrání staré webové cˇ ásti a pˇridání nové. Silný název jednoznaˇcnˇe identifikuje sestavení. Obsahuje název sestavení, cˇ íslo verze, národní prostˇredí, veˇrejný klíˇc a podpis k ovˇerˇ ení, že sestavení nebylo zmˇenˇeno [22]. Silný název neovlivnuje ˇ pouze SNKey, ale je tˇreba poˇcítat s tím, že obsahuje i verzi sestavení. Pro zaznamenání informace o verzi tedy není vhodné používat vlastnost verze, ale pro uchování této hodnoty je možné použít popis sestavení (description). Silný název sestavení pro H2O.SPLoadX.Core potom vypadá takto: H2O.SPLoadX.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=feaafeb7a1ba9378. Pro zjištˇení silného názvu sestavení mužeme ˚ opˇet využít PowerShell: 1 2
$assembly = [Reflection.Assembly]::Load("H2O.SPLoadX.Core.dll") $assembly.FullName
Jakmile je balíˇcek nasazen a rˇ ešení aktivováno, bude pravdˇepodobnˇe potˇreba nˇekteré cˇ ásti kódu ladit. Pro následné ladˇení je tˇreba zjistit, která webová aplikace (W3WP.EXE proces) hostuje naše rozšíˇrení. Jakmile je proces dohledán, využívá se pˇripojení vývojového prostˇredí právˇe k tomuto bˇežícímu procesu. K nalezení správného procesu lze využít systémovou konzolovou aplikaci appcmd nebo využít možností PowerShellu: [12]. AppCmd: 1
C:\Windows\System32\inetsrv\appcmd list wp
1
Get-WmiObject -NameSpace ’root\WebAdministration’ WorkerProcess | Select ProcessId, AppPoolName | Format-Table -AutoSize
Powershell:
Práci s dohledáváním procesu a následným pˇripojením ladícího nástroje k tomuto procesu muže ˚ usnadnit napˇríklad doplnˇek WSP Builder pro Visual Studio. Tento doplnˇek se sám postará o nalezení správného procesu a pˇripojení ladícího nástroje. 6.2.1 Projekt Core Projekt Core obsahuje jádro celého systému. Jedná se zejména o synchronizaˇcní logiku aplikace, popis datových zdroju˚ a správu konfigurace. 56
6. N ÁVRH A IMPLEMENTACE Konfigurace se ukládá v SharePointu do seznamu v XML formátu. Pro ukládání a naˇcítání konfigurace z objektu˚ a do objektu˚ se využívá standardních postupu˚ pro toto urˇcených, serializace a deserializace. Serializace zajistí pˇrevedení aktuálního stavu objektu do reprezentace, kterou je možné uložit (stream, pole bytu, ˚ rˇ etˇezec). Deserializace zajistí následné obnovení objektu˚ z takto uložených dat. Tˇrída konfigurace (SyncConfig) byla navržena tak, aby ji tedy bylo možné serializovat a uložit ve formˇe XML. Z tohoto duvodu ˚ byly použity takové datové typy a tˇrídy, aby to bylo možné.
Obrázek 6.3: Návrh tˇríd konfigurace. SyncConfig obsahuje definici dvou datových zdroju˚ (zdroj A a zdroj B), kolekci mapování (obsahující jednotlivá mapovací pravidla) a typ synchronizace (definuje zdroj a cíl). Mapovací pravidlo urˇcuje také to, který sloupec ze zdroje se mapuje na sloupec z cíle a typ pravidla. Typem pravidla je napˇríklad to, zda se jedná o párovací sloupec, na základˇe kterého se k sobˇe následnˇe pˇriˇrazují rˇ ádky z obou zdroju. ˚ Základní tˇrídou pro definici datového zdroje je DataSourceSettings. Tˇrída obsahuje metody, které by mˇeli implementovat všichni následní poskytovatelé dat. Implementace jednotlivých metod jsou prázdné, vyvolají pouze výjimku NotImplementedException. Toto neplatí ale u dvou statických metod GetProviders a CreateDataSource. 57
6. N ÁVRH A IMPLEMENTACE Metoda GetProviders zajišt’uje získání všech poskytovatelu˚ dat pomocí reflexe. Vrací seznam všech typu, ˚ které jsou dˇedˇeny z hlavní tˇrídy DataSourceSettings. Díky tomuto návrhu mohla být aplikace postavena tak, že pˇridání dalšího poskytovatele obnáší jen vytvorˇ ení nové tˇrídy, dˇedˇené ze základní, a pˇrepsání jednotlivých metod. Metoda CreateDataSource se následnˇe jen postará, aby bylo možné z takto získané tˇrídy vytvoˇrit instanci objektu. Vytvoˇrení instance objektu je provedeno opˇet pomocí reflexe. Z tˇrídy DataSourceSettings jsou tedy dˇedˇeny tˇrídy MSSQLDataSource a SPDataSource, které pˇridávají nové vlastnosti a metody specifické pro jejich úˇcel.
Obrázek 6.4: Návrh tˇríd poskytovatelu˚ dat. Synchronizaci zdroju˚ zajišt’uje tˇrída Synchronize. Na základˇe konfigurace se nejprve naˇctou data z obou datových zdroju˚ a uloží se do interních struktur aplikace. Hodnoty z jednotlivých sloupcu˚ jsou upraveny tak, aby byly porovnatelné mezi ruznými ˚ typy zdroju. ˚ Konverze se týká zejména SharePoint sloupcu˚ uchovávajících vybraného uživatele, výbˇer nebo datum. Jakmile jsou data upravena, je dalším krokem jejich porovnání. Ke zjištˇení, která data se nachází jen ve zdroji A, jen ve zdroji B, nebo v obou, se využije vytvoˇreného seznamu párovacích hodnot. Nad tˇemito seznamy se provede operace prunik ˚ (intersect) pro zjištˇení, které záznamy jsou v obou zdrojích. Tyto rˇ ádky jsou následnˇe porovnány a data, která jsou rozdílná, se promítnou do cílového seznamu dat. Zárovenˇ je poznamenáno, které rˇ ádky bude tˇreba po dokonˇcení porovnání uložit. Pro zjištˇení záznamu, ˚ které jsou dostupné jen v jed58
6. N ÁVRH A IMPLEMENTACE nom ze zdroju, ˚ je nad seznamy provedena operace rozdíl (except). Jednou je rozdíl proveden pro zjištˇení rˇ ádku, ˚ které jsou jen ve zdroji A (zdroj A - zdroj B) a podruhé pro rˇ ádky dostupné jen ve zdroji B (zdroj B - zdroj A). Na základˇe tˇechto výsledku˚ se rˇ ádky v cílovém zdroji oznaˇcí jako rˇ ádky ke smazání, nebo se vytvoˇrí rˇ ádek nový a je zaˇrazen k vytvoˇrení. Jakmile je sestaven seznam potˇrebných operací v cílovém zdroji, jednotlivé operace jsou postupnˇe provedeny. Tím je synchronizace dokonˇcena. 6.2.2 Projekt CLI Projekt CLI je program s rozhraním pro pˇríkazovou rˇ ádku. Umožnuje ˇ manuálnˇe spouštˇet vytvoˇrené konfigurace, pˇrípadnˇe naplánovat spuštˇení aplikace pomocí Plánovaˇce úloh. Veškeré vstupy programu jsou zajištˇeny pouze zadáním potˇrebných parametru˚ pˇri spuštˇení programu. Pro snazší práci s parametry byla použita knihovna pro parsování vstupních parametru˚ Command Line Parser Library [32]. Po zpracování vstupu˚ se dále již využívá kód z projektu Core, který zajistí všechny další potˇrebné operace pro bˇeh programu s požadovanou konfigurací. Alternativou ke konzolovému programu by mohl být se stejnou funkˇcností tento PowerShell kód: 1 2 3 4 5
$conigWebUrl = "http://sps2010/sites/SPLoadX"; $configId = 5 # pro spusteni konfigurace 5 [Reflection.Assembly]::LoadWithPartialName("H2O.SPLoadX.Core") New-Object H2O.SPLoadX.Core.Synchronize($configWebUrl, $configId)
6.2.3 Projekt Web V rámci projektu Web byla vyvinuta rozšíˇrení pro SharePoint. Tˇemito rozšíˇreními jsou: •
webová cˇ ást umožnující ˇ konfiguraci jednotlivých úloh,
•
událost na konfiguraˇcním seznamu doplnující ˇ automaticky údaje ke konfiguraci, 59
6. N ÁVRH A IMPLEMENTACE •
úloha cˇ asovaˇce, který obstarává plánované spouštˇení,
•
webové rozhraní pro zobrazování zapsaných událostí,
•
webová služba pro vzdálené spuštˇení synchronizace.
Pˇri vývoji rozšíˇrení v Microsoft Visual Studiu máme na výbˇer minimálnˇe dvˇe možnosti, jak vytvoˇrit strukturu adresáˇru˚ pro mapované adresáˇre (mapped folders) platformy SharePoint. První možností je nechat si pro každou mapovanou složku (zejména z podadresáˇre TEMPLATES, který je potˇreba témˇerˇ vždy pˇri vývoji vizuálních komponent) vytvoˇrit adresáˇr nový. V projektu ale takto muže ˚ vzniknout velké množství složek, které následnˇe znemožní rychlou orientaci. Pˇríklad po pˇridání adresáˇru˚ Images, Layouts a CONTROLTEMPLATES je vidˇet na obrázku 6.5. V pˇrípadˇe adresáˇre CONTROLTEMPLATES se automaticky nevytvoˇril ani podadresáˇr pro naše komponenty. Pokud bychom nebyli opatrní a název kolidoval s už existujícím souborem, byl by existující soubor po nasazení pˇrepsán. V pˇrípadˇe využití tohoto návrhu struktury je vhodné pˇridat navíc vlastní podadresáˇr.
Obrázek 6.5: Struktura projektu automaticky vytvoˇrena Visual Studiem. Druhou možností je nechat si vytvoˇrit jen jednu mapovanou složku TEMPLATES a do ní si následnˇe pˇridat potˇrebné adresáˇre svépomocí. Tento návrh struktury je vidˇet na obrázku 6.6. Funkˇcnost celého rˇ ešení bude stále stejná. V pˇrípadˇe potˇreby je pak možné 60
6. N ÁVRH A IMPLEMENTACE sbalit celý podstrom adresáˇre TEMPLATES a projekt je následnˇe pˇrehlednˇejší. Právˇe tento pˇrístup byl použit pˇri vývoji.
Obrázek 6.6: Struktura projektu s hlavním adresáˇrem TEMPLATES. Dle návrhu byla vytvoˇrena webová cˇ ást pro uživatelskou konfiguraci. V konfiguraˇcním seznamu SyncConfig bylo pomocí aplikace SharePoint Designer tˇreba nahradit standardní webovou cˇ ást ListFormWebPart za právˇe námi vytvoˇrenou webovou cˇ ást ConfigEditor, a to jak ve formuláˇri pro novou položku (NewForm.aspx), tak ve formuláˇri pro editaci (EditForm.aspx). Formuláˇr pro zobrazení položky (DisplayForm.aspx) byl zachován. Dále byla vytvoˇrena synchronní událost pro automatické plnˇení sloupce Title. Hodnota tohoto sloupce je nastavována textem v podobˇe SYNCXXXXXX, kde XXXXXX je nahrazeno cˇ íselným identifikátorem záznamu, napˇríklad SYNC00038. ˇ Souˇcástí tohoto projektu je také úloha cˇ asovaˇce. Casovaˇ c pro platformu SharePoint se definuje jako tˇrída, která je dˇedˇena z tˇrídy SPJobDefinition. Abychom nemuseli pro každou naplánovanou úlohu vytváˇret vlastní cˇ asovaˇc, byl použit cˇ asovaˇc pouze jeden, který na základˇe definované konfigurace spouští jednotlivé synchronizaˇcní úkoly. Použití tohoto návrhu usnadnilo následnˇe i konfiguraci v Centrální administraci. Konfigurace cˇ asovaˇce se provádí v seznamu TimerJob. U každého takto nakonfigurovaného záznamu se uchovává informace o posledním spuštˇení. Pokud tedy na tomto 61
6. N ÁVRH A IMPLEMENTACE seznamu nastavíme verzování, zajistíme si tím uchovávání historie jednotlivých spouštˇení a úprav konfigurací. Pro nainstalování úlohy bylo využito možnosti události FeatureActivated, která se spustí po aktivaci funkce. Pˇri pˇrípadné deaktivaci se úloha opˇet odebere. Samostatnou stránkou, která byla v rámci tohoto projektu vytvorˇ ena, je webové rozhraní pro zobrazování informací logovaných aplikací. V rámci stránky jsou zobrazeny zaznamenané stavy aplikace, které je možné pomocí formuláˇre ve vrchní cˇ ásti stránky filtrovat. Pro filtrování lze využít zadání cˇ asového intervalu, z kterého budou záznamy zobrazeny, název logu, úroven, ˇ uživatelské jméno, zprávu, nebo celou vlastní podmínku. Toto rozhraní je omezeno pro použití pouze administrátorem webu. Poslední cˇ ástí projektu je webová služba. Tato webová služba umožnuje ˇ spustit synchronizaci i z pˇrípadných dalších systému˚ bˇežících mimo SharePoint farmu. Spouštˇecˇ em synchronizace tedy nemusí být pouze naplánovaná událost, ale lze ji vyvolat i z externího systému.
6.2.4 Projekt Tests Projekt Tests obsahuje sadu testovacích tˇríd. Nejedná se o standardní projekt vytvoˇrený z testovací šablony Unit Tests, ale o konzolovou aplikaci. Visual Studio 2010 neumožnuje ˇ vytvoˇrit testovací projekt pro .NET verze 3.5, která je potˇrebná pro platformu SharePoint. Toto omezení bylo sice pro Visual Studio 2010 SP1 odstranˇeno a manuální úpravou testovacího projektu bylo možné verzi .NET zmˇenit, ale s nˇekolika omezeními. Jedno z omezení je ale právˇe ve spojení s testováním projektu pro SharePoint. Pro testovací projekt pro .NET 3.5 není možné vybrat x64 platformu [14]. Na základˇe tˇechto omezení a potˇreby jen nˇekolika testu˚ pro zjištˇení hodnot po synchronizaci byla vytvoˇrena konzolová aplikace. Tato aplikace postupnˇe spouští testy a porovnává, zda jsou data po synchronizaci v oˇcekávané podobˇe. Byly vytvoˇreny detailní testy pro každý typ sloupce ze SharePointu a základní typy pro databázi. V rámci testu˚ byly testovány tyto typy synchronizace: 62
6. N ÁVRH A IMPLEMENTACE •
Zdroj SharePoint, cíl SharePoint
•
Zdroj SharePoint, cíl databáze
•
Zdroj databáze, cíl databáze
•
Zdroj databáze, cíl SharePoint
6.2.5 Projekt Utils Jak již název napovídá, projekt obsahuje zejména užiteˇcné tˇrídy a metody usnadnující ˇ specifické cˇ innosti, které nejsou dostupné v rámci standardní .NET funkcionality, nebo rozšiˇrují nˇekteré jeho tˇrídy. Projekt Utils byl vytvoˇren z toho duvodu, ˚ aby tato rozšíˇrení bylo možné použít ve všech dalších projektech a aby nehrozily cyklické reference mezi projekty. Veškerý obecný kód, který muže ˚ být využit v rámci všech projektu, ˚ byl vytvoˇren zde. CustomLogger Pro logování byla využita univerzální knihovna log4net. V aplikaci se ale tato knihovna nepoužívá pˇrímo. Pro logování byla vytvoˇrena tˇrída CustomLogger, díky které je zajištˇena pˇrípadná snadná zmˇena logovací knihovny. Dále máme možnost pˇri využití vlastní tˇrídy doimplementovat vlastní metody, které budou nezávisle na konfiguraci ukládat informace o chybách i do pˇrípadného jiného úložištˇe chyb. Konfigurace loggeru by mˇela být uložena v lokaci specifikované pomocí systémové promˇenné SPLog. V pˇrípadˇe, že promˇenná nebude nalezena, zkusí se vyhledat konfigurace v podadresáˇri Log v doˇcasném adresáˇri získaném pomocí Path.GetTempPath(). Pokud není konfigurace nalezena ani zde, použije se výchozí nastavení uložené v aplikaci – logování pomocí RollingFileAppender do doˇcasného adresáˇre. Ten je definován pomocí standardní systémové promˇenné TEMP. Výstupní formát záznamu˚ se definuje v konfiguraci pomoci elementu PatternLayout s množstvím již pˇreddefinovaných vzoru˚ (napˇríklad úrovenˇ logování, vlákno, zpráva, výjimka nebo datum). 63
6. N ÁVRH A IMPLEMENTACE Mimo standardních vzoru˚ lze definovat i vlastní. Bylo implementováno rozšíˇrení h2oprocessid, které umožnuje ˇ zaznamenávat i cˇ íslo procesu, v rámci kterého záznam vznikl: 1 2 3 4
// ziska cislo procesu string procesid = System.Diagnostics.Process.GetCurrentProcess().Id. ToString(); // prida property h2oprocessid a nastavi cislo procesu log4net.GlobalContext.Properties["h2oprocessid"] = processid;
Toto rozšíˇrení je možné následnˇe využít ve formátovacím rˇ etˇezci záznamu pomocí vzoru %property{h2oprocessid}. Standardnˇe je v rámci projektu pro logování nastaven jako úložištˇe databáze Microsoft SQL Server. Toto úložištˇe informací bylo zvoleno zejména pro jeho snadné prohledávání a rychlý pˇrístup. Nevýhodou tohoto rˇ ešení je ale nutnost mít nainstalovaný SQL server. V pˇrípadˇe vytváˇrení rozšíˇrení pro SharePoint je tato nevýhoda eliminována již existující instalací SQL serveru právˇe pro platformu SharePoint. Pro eliminaci možných nebezpeˇcí je doporuˇceno vytvoˇrit pro tento úˇcel vlastní databázi a uživatele a následnˇe uživateli pˇridat jen minimální potˇrebná oprávnˇení pro zápis do této databáze. Extensions V rámci projektu Utils vznikla i sada ruzných ˚ rozšiˇrujících metod pro existující tˇrídy tak, aby se ještˇe více zvýšila efektivita jejich používání. Framework .NET (jazyk C# od verze 3.0) umožnuje ˇ snadno vytváˇret rozšiˇrující metody pomocí statických metod ve statických tˇrídách. Snadno tak mužeme ˚ implementovat cˇ asto se opakující bloky kódu, které jsou vázány na nˇekterý typ. Napˇríklad metoda pro bezpeˇcné oznaˇcení volby v rozbalovacím menu muže ˚ vypadat takto: 1 2 3 4 5 6 7 8 9 10 11 12
public static class DropDownListExtensions { public static void SafetySelect(this DropDownList control, string value) { ListItem x = control.Items.FindByValue(value); if (x != null) { control.ClearSelection(); x.Selected = true; } } }
64
6. N ÁVRH A IMPLEMENTACE 6.2.6 Projekt PowerShell V rámci rˇ ešení vznikl i projekt PowerShell. Tento projekt je zde zejména z duvodu ˚ uchování veškerého kódu vzniklého v rámci projektu. Jelikož jsou tyto skripty obsaženy v rámci projektu, je možné je z vývojového prostˇredí ukládat na server obstarávající ukládání a verzování. Jedná se zejména o skripty uvedené zde jako pˇríklady usnadnuˇ jící cˇ innosti, ale i skripty vytváˇrející struktury seznamu˚ pro testování.
6.3 Monitoring Pro zaznamenávání stavu˚ aplikace je dostupný aplikaˇcní log. Toto rˇ ešení je dobré proto, že v pˇrípadˇe problému je možné dohledat, kdy a co se stalo. Duležité ˚ však je také upozornování ˇ na nesprávný stav aplikace. Pro upozornˇení na nekorektní stavy aplikace bylo využito možnosti napojení monitorovacího nástroje Nagios na standardní log systému Windows, do kterého aplikace loguje kritické chyby. Kritickými chybami se rozumí zejména chyby pˇri synchronizaci. Pro monitorování logu událostí Windows bylo tˇreba na server nainstalovat pouze NSClient++. Ten je na serveru spuštˇen jako služba, která umožní systému Nagios poskytnout požadované zprávy o stavu systému. Veškerá další konfigurace, jako je nastavení upozornˇení na chyby, nebo pˇrípadné další akce jsou rˇ ešeny standardními postupy v rámci systému Nagios. Monitorování korektního stavu a pˇrípadné upozornˇení uživatele je rˇ ešeno pomocí seznamu v SharePointu, do kterého se zapisují zacˇ átky a konce synchronizace. Na tomto seznamu si muže ˚ uživatel následnˇe nastavit vlastní filtr a nad tímto filtrem pak nastavit upozornování. ˇ Upozornˇení lze posílat pˇri každém pˇridání nové položky, ale i jako denní shrnutí událostí.
65
7 Závˇer V pˇredložené práci byl nejprve popsán a analyzován problém sdílení dat mezi platformou SharePoint a externími systémy. Pro nˇekteré pˇrípady ale nemusí být žádná standardní možnost pro vyˇrešení požadavku na výmˇenu dat dostateˇcná. Také zde byly popsány další vlastnosti, jaké by mˇel mít systém umožnující ˇ efektivní správu dat. Jedná se zejména o automatické plánování spouštˇení výmˇeny dat a sledování stavu celého systému. V další cˇ ásti práce byly nejprve popsány možnosti pro pˇrístup k datum ˚ uloženým v platformˇe SharePoint. Dále byla analyzována vybraná existující rˇ ešení, jejich možnosti a princip fungování. Na základˇe tˇechto zjištˇení byly popsány jejich výhody a nevýhody. Z poznatku˚ o existujících rˇ ešeních bylo provedeno srovnání výkonnosti jednotlivých možností pˇrístupu k datum ˚ uložených v SharePointu. Také zde byly rozebrány možnosti úpravy standardního vzhledu a chování celého systému vlastními rozšíˇreními. Následnˇe byl vytvoˇren návrh jednotlivých cˇ ástí celého rˇ ešení tak, aby co nejvíce odpovídal požadavkum ˚ stanoveným pˇri popisu problému a jeho analýze. Na základˇe tohoto návrhu vznikla samotná implementace. Výsledkem je tedy obecný rozšiˇritelný systém umožnující ˇ automatickou výmˇenu dat. Veškerou konfiguraci je možné snadno provádˇet skrze webové rozhraní, navíc velmi podobné ostatním cˇ innostem v rámci platformy SharePoint. Tuto možnost nenabízel žádný analyzovaný existující produkt. Celý systém je navíc snadno rozšiˇritelný o další poskytovatele dat. Všechny cíle práce tedy byly splnˇeny. Po samotné implementaci byl systém nasazen do reálného prostˇredí, kde byl otestován. Aktuálnˇe se využívá hlavnˇe pro výmˇenu dat mezi jednotlivými seznamy, kde našel velmi rychle své využití. Tato funkce nebyla dosud nabízena žádným dostupným rˇ ešením. Aplikace byla navržena velmi obecnˇe a je tedy možné ji v budoucnu dále rozšiˇrovat. Další možností pro rozšíˇrení je pˇridání i jiných poskytovatelu˚ dat. Pˇríkladem užiteˇcného poskytovatele dat muže ˚ být import a export dat do CSV souboru nebo Excelu. Poskytovatelé nejsou tedy omezeni zamˇerˇ ením jen na relaˇcní databáze. S ros-
66
ˇ 7. Z ÁV ER
toucím poˇctem naplánovaných úloh by také mohlo být zajímavé pˇridat do synchronizaˇcní logiky cˇ ítaˇce pro sledování výkonu.
67
Literatura [1] ANTOINE, J. Sync framework - choose your primary keys type carefully. [online]. [cit. 2012-10-08]. URL http://blog.lexique-du-net.com/index.php?po st/2010/03/05/Sync-framework-choose-your-prim ary-keys-type-carefully [2] COZYROC. COZYROC SSIS+ 1.6 Library. [online]. [cit. 2012-0504]. URL http://www.cozyroc.com/products [3] FRICKE, G. SSIS VS2010 project type | Microsoft Connect. [online]. [cit. 2012-05-21]. URL https://connect.microsoft.com/SQLServer/fee dback/details/508552/ssis-vs2010-project-type [4] GLASER, A. Storing Data in SharePoint - Web Applications, Server, Server Farm. [online]. [cit. 2012-05-02]. URL http://sharepoint-tutorial.net/post/2012/ 08/10/storing-data-sharepoint-web-applications .aspx [5] Gurock Software. .NET Logging Tools and Libraries. [online]. [cit. 2012-12-03]. URL http://www.dotnetlogging.com [6] HAMILTON, B. Programming SQL Server 2005. Sebastopol, Calif.: O’Reilly, první vydání, c2006, ISBN 05-960-0479-6, 571 s. ˇ CURA, ˇ [7] CIN J. Microsoft Sync Framework - Synchronizace databází (1) | Vyvojar.cz. 2007, [online]. [cit. 2012-10-07]. URL http://www.vyvojar.cz/Articles/573-microso ft-sync-framework-synchronizace-databazi-1.a spx [8] KAISTHA, K. Directory Structure In The 12 Hive. [online]. [cit. 2012-06-23]. URL http://www.pointsharepoint.com/2008/08/dire ctory-structure-in-12-hive.html 68
L ITERATURA [9] KEUTMANN, C. WSPBuilder (SharePoint WSP tool). [online]. [cit. 2012-09-18]. URL http://wspbuilder.codeplex.com [10] LAMB, R. SharePoint Dispose Checker Tool. [online]. [cit. 2012-08-03]. URL http://archive.msdn.microsoft.com/SPDispose Check [11] Layer 2. Business Data List Connector (BDLC) for SharePoint Data Integration. [online]. [cit. 2012-10-25]. URL http://www.layer2.de/en/products/Pages/Sha rePoint-Business-Data-List-Connector.aspx [12] LEE, T., MITSCHKE, K., SCHILL, M. E., aj. Windows Powershell 2.0 Bible. Indianapolis, IN: John Wiley & Sons, první vydání, 2011, ISBN 978-1-118-02198-9, 656 s. [13] Microsoft. CodePlex: Microsoft SQL Server Community Samples: Integration Services. [online]. [cit. 2012-12-03]. URL http://sqlsrvintegrationsrv.codeplex.com/r eleases/view/17652 [14] Microsoft. How to: Configure Unit Tests to Target .NET Framework 3.5. [online]. [cit. 2012-08-12]. URL http://msdn.microsoft.com/en-us/library/gg 601487%28v=vs.100%29.aspx [15] Microsoft. How to: Create a Console Application. [online]. [cit. 2012-05-28]. URL http://msdn.microsoft.com/en-us/library/ms 438026.aspx [16] Microsoft. Introducing the Windows PowerShell ISE. [online]. [cit. 2012-08-28]. URL http://technet.microsoft.com/en-us/library/ dd315244.aspx [17] Microsoft. Introduction to Microsoft Sync Framework. [online]. [cit. 2012-10-05]. 69
L ITERATURA URL b821992
http://msdn.microsoft.com/en-us/sync/b
[18] Microsoft. Microsoft SharePoint 2010. [online]. [cit. 2012-05-02]. URL http://sharepoint.microsoft.com/cs-cz/buy/ Pages/Editions-Comparison.aspx [19] Microsoft. Microsoft SharePoint 2010. [online]. [cit. 2012-09-20]. URL http://sharepoint.microsoft.com/en-us/buy/ pages/licensing-details.aspx [20] Microsoft. Query Schema. [online]. [cit. 2012-08-14]. URL http://msdn.microsoft.com/en-us/library/ms 467521.aspx [21] Microsoft. SQL Server Integration Services. [online]. [cit. 201205-02]. URL http://msdn.microsoft.com/en-us/library/ms 141026%28v=sql.105%29.aspx [22] Microsoft. Strong-Named Assemblies. [online]. [cit. 2012-11-06]. URL http://msdn.microsoft.com/en-us/library/wd 40t7ad(v=vs.90).aspx [23] Microsoft. SyncToy 2.1. [online]. [cit. 2012-10-13]. URL http://www.microsoft.com/en-us/download/det ails.aspx?id=15155 [24] Microsoft. Technet: Topologies for SharePoint Server 2010: Model. [online]. [cit. 2012-05-02]. URL http://technet.microsoft.com/en-us/library/ cc263044.aspx [25] Microsoft. Visual Studio 2010. [online]. [cit. 2012-12-14]. URL http://msdn.microsoft.com/en-us/library/dd 831853%28v=vs.100%29.aspx [26] Microsoft. Windows PowerShell. [online]. [cit. 2012-09-20]. URL http://technet.microsoft.com/en-us/library/ bb978526.aspx 70
L ITERATURA [27] Microsoft. Windows PowerShell Basics. [online]. [cit. 2012-0828]. URL http://technet.microsoft.com/en-us/library/ dd347730.aspx [28] Nagios Enterprises. Nagios — About Nagios. [online]. [cit. 201207-17]. URL http://www.nagios.org/about [29] PortSwigger. Burp Suite. [online]. [cit. 2012-04-24]. URL http://portswigger.net/burp/ [30] Pragmatic Works. Increase SSIS Performance & Productivity With Task Factory. [online]. [cit. 2012-05-02]. URL http://pragmaticworks.com/Products/Business -Intelligence/TaskFactory/Features.aspx#TSShare pointSource R [31] RUBENAU, M., CEARLEY, S. Oracle WebCenter Sites. Oracle, October 2012, [online]. [cit. 2012-07-17]. URL http://docs.oracle.com/cd/E29495_01/do c.1111/webcenter_sites_11gr1_bp1_configuring _supporting_software.pdf
[32] SCALA, G. S. Command Line Parser Library. [online]. [cit. 201212-14]. URL http://commandline.codeplex.com/ [33] SHAH, D. Sharepoint Hierarchy and its Features Scope. [online]. [cit. 2012-04-28]. URL http://kalashnikovtechnoblogs.blogspot.cz/ 2011/04/sharepoint-hierarchy-and-its-feature s.html [34] Simego. Simego Limited — Because Integration is Complicated Enought. [online]. [cit. 2012-04-22]. URL http://www.simego.com [35] SmartBear Software. SoapUI — The Home of Functional Testing. [online]. [cit. 2012-06-12]. URL http://www.soapui.org/ 71
L ITERATURA [36] SQL Lion. SSIS Programming Basic | SQL Lion. [online]. [cit. 2012-05-23]. URL http://www.sqllion.com/2009/05/ssis-progra mming-basic/ [37] U2U. U2U CAML Query Builder for SharePoint 2003 and SharePoint 2007 (Windows Version). [online]. [cit. 2012-08-16]. URL http://www.u2u.be/res/tools/camlquerybuild er.aspx [38] WHITE, E., Microsoft. Using the SharePoint Foundation 2010 Managed Client Object Model. 2009, [online]. [cit. 2012-07-13]. URL http://msdn.microsoft.com/en-us/library/ee 857094.aspx [39] Wikipedia. .NET Framework — Wikipedia, The Free Encyclopedia. [online]. [cit. 2012-04-15]. URL http://en.wikipedia.org/wiki/.NET_Framework
72
A Seznam zkratek ADO.NET ActiveX Data Objects .NET ASP.NET Active Server Pages .NET CAML Collaborative Application Markup Language CLI Common Language Infrastructure, Command-line interface CLR Common Language Runtime CMS Content Management System CSV Comma-separated values DDL Dynamic-link library DMS Document Management System HTTP Hypertext Transfer Protocol HTTPS Hypertext Transfer Protocol Secure IDE Integrated Development Environment IIS Internet Information Services JSF JavaServer Faces JSON JavaScript Object Notation MSIL Microsoft Intermediate Language MS SQL Microsoft SQL Server ODBC Open Database Connectivity OleDB Object Linking and Embedding Database PHP PHP: Hypertext Preprocessor REST Representational State Transfer 73
A. S EZNAM ZKRATEK SNKey Strong Name Key SSIS SQL Server Integration Services SOA Service Oriented Architecture SOAP Simple Object Access Protocol SQL Structured Query Language URI Uniform Resource Identifier URL Uniform Resource Locator WSDL Web Services Description Language WSP Windows Solution Package XML Extensible Markup Language
74
B Seznam pojmu˚ Application pool fond aplikací v IIS Assembly sestavení, programová jednotka s metadaty Connection string pˇripojovací rˇ etˇezec k databázi Content type typ obsahu seznamu nebo dokumentové knihovny Document library dokumentová knihovna (speciální typ seznamu) Event Log protokol událostí Event receiver událost v SharePointu Farm farma, servery obsahující instalace SharePointu zapojeny do spoleˇcné konfigurace Feature funkce obsahující rozšíˇrení pro SharePoint Field type typ sloupce, který uchovává hodnotu List seznam, uchovává položky jednoho nebo více typu˚ obsahu Managed code rˇ ízený kód v .NET Master page šablona stránek v ASP.NET Pipeline roura, pˇredává výstup pˇríkazu na vstup dalšího pˇríkazu Provider poskytovatel (dat) Resource file soubor obsahující zdroje (pˇreklady jazyku, ˚ obrázky, atd.) Ribbon menu pás karet, forma navigace Safe control bezpeˇcná komponenta, v ASP.NET urˇcena pomocí silného názvu Shell interpret pˇríkazu˚ 75
B. S EZNAM POJM U˚ Site collection kolekce webu˚ Site column sloupec webu Solution rˇ ešení v SharePointu, muže ˚ obsahovat nˇekolik funkcí Task scheduler plánovaˇc úloh Timer Job services úlohy cˇ asovaˇce v SharePointu starající se o spouštˇení úloh Unmanaged code neˇrízený kód v .NET Web application webová aplikace, obsahuje kolekce webu˚ Workflow pracovní postup
76
C Elektronické pˇrílohy Soubor diplomova_prace.zip obsahuje: bin Složka obsahující zkompilované aplikace doc Složka se struˇcnou dokumentací user Uživatelská dokumentace prog Programová dokumentace src Složka se zdrojovými kódy SPLoadX Projekt se zdrojovými kódy rˇ ešení H2O.SPLoadX SPLoadX.Provider.CSV Projekt se zdrojovými kódy CSV provideru PerformanceTest Zdrojové kódy testu˚ pˇrístupu˚ k datum ˚ v SharePointu templates Složka s exporty šablon
77