Týdny s Office - nový model vývoje aplikací pro SharePoint 2013

SharePoint se už pár let vytrvale pod škraboškou Office 365 stěhuje do cloudu a s ním postupně přichází aplikace a řešení od ISV partnerů Microsoftu, které nabízejí zákazníkům další hodnotu a možnosti využití cloudového prostředí. První krůčky v podobě Sandboxed Solutions se ukázaly spíše jako přešlapování na místě, se SharePoint 2013 ale přichází technologie, která má potenciál rakety: Apps for SharePoint.

V BoldBricku se vývoji „appek“ pro SharePoint podle tohoto nového modelu vývoje věnujeme už řadu měsíců, a proto se s vámi chci podělit o náš pohled na věc, zkušenosti a postřehy, aby pro vás, ať už se pustíte do vývoje nebo Apps for SharePoint sledujete z pohledu IT provozu, tahle raketa byla přínosem a ne neřízenou petardou.

Jaký problém se tu vlastně řeší?

SharePoint sám o sobě je skvělý. Je to výborná aplikační platforma, která dokáže propojit uživatele, pomůže jim sdílet informace a spolupracovat. Důležitý faktor je, že pro většinu zákazníků jde skutečně o platformu, nad níž si nechávají stavět různé aplikace, ať už více či méně komplexní.

V on-premise instalacích není problém do SharePointu doprogramovat spoustu zajímavé funkcionality. V cloudovém prostředí Office 365 to ovšem tak snadné není, protože SharePoint Online je sdílený doslova desítkami tisíc zákazníků a bezpečnost a stabilita prostředí je v nejvyšším zájmu nejen uživatelů, ale i zejména samotného Microsoftu. Těžko si tak můžeme představit, že by bylo možné do cloudového SharePoint nasadit běžné on-premise řešení, které neprošlo žádným bezpečnostním auditem, jistě není dokonale odladěné, často třeba pracuje velmi svérázným způsobem s nejniternějšími vlastnostmi a funkcemi SharePointu a chová se doslova nesnášenlivě ke svému okolí. Zatímco v on-premise světě to může být naprosto v pořádku a žádoucí, v cloudu to nejde.

Apps for SharePoint přicházejí s novým modelem vývoje, který dovoluje postavit vlastní aplikaci tak, že běží mimo SharePoint — doslova a do písmene vedle něj. Taková aplikace je nejčastěji provozovaná v samostatné infrastruktuře (např. ve Windows Azure nebo v private cloud infrastruktuře zákazníka), může se ale stejně dobře jednat jen o „chytrý kus kódu“ v JavaScriptu běžící přímo v prohlížeči uživatele.

clip_image002

Aplikace používá pro komunikaci se SharePointem rozhraní, které se jmenuje Client-Side Object Model (CSOM) a je přístupné přes webové služby. Pro vývoj aplikace je možné použít standardní vývojové nástroje (Visual Studio 2012, C#) a nic nebrání tomu, aby aplikace využívala i další technologie mimo SharePoint. Pro provoz s Office 365 se přímo vybízí využít Windows Azure a jeho bohatou paletu funkcionalit a služeb.

Proč jsou Apps for SharePoint lepší než Sandboxed Solutions a v čem se liší?

Hlavním problémem Sandboxed Solutions, které přinesl SharePoint 2010, byla značná omezení možností vývojářů a komplikovanější vývojový proces. I zkušeným vývojářům trvalo dlouho naprogramovat relativně snadné úlohy, které bylo obtížné i odladit běžnými prostředky. Byla to daň za bezpečnost a stabilitu prostředí, tedy vlastnosti v prostředí data centra hostujícího instance pro tisíce zákazníků naprosto nezbytné. Byl to však také první krok k tomu, aby šlo i cloudový SharePoint rozšiřovat a své uživatele si jistě našel.

Koncepce Apps for SharePoint řeší problém bezpečnosti a stability SharePoint prostředí velmi elegantně a dá se říct, že velmi „cloudově“ — aplikace běží mimo prostředí SharePointu a interaguje s ním přes webové služby, takže nemůže nic omylem (nebo záměrně) snadno rozbít.

Z hlediska vývojáře nabízí nový model řádově vyšší flexibilitu, bohatší API a možnosti navrhnout technickou architekturu aplikace skutečně na míru řešenému problému. Architektura samotného SharePointu ovlivňuje architekturu vlastní aplikace podstatně méně. Přesto může být uživatelské rozhraní aplikace velmi těsně integrované do SharePoint a běžný uživatel nic nepozná. Ze svého pohledu pracuje s jedním uživatelským rozhraním, jednou sadou nástrojů.

Apps for SharePoint jsou vedle Sandboxed Solutions velký skok kupředu. Z architektonického pohledu je to přínos i pro podnikovou architekturu, kdy bude možné snadněji propojovat s prostředím SharePoint i komplexní webové aplikace, které vyžadují vlastní specifickou infrastrukturu. Vývojáři přitom získávají nové možnosti, jak propojit svět SharePointu, kterému dominuje zejména koncepce elegantně kombinující strukturovaná data a dokumenty, s běžnými podnikovými aplikacemi opírajícími se o relační databáze.

Dlužno dodat, že Sandboxed Solutions jsou v SharePoint 2013 sice stále podporované kvůli zpětné kompatibilitě, ale je to deprecated technologie. Není radno ji dále používat resp. stavět na ní nové projekty. Budoucnost, jak ji nyní vnímáme, patří pro řadu aplikací a scénářů jednoznačně Apps for SharePoint.

Co může a nemůže „appka“ pro SharePoint

Možnosti aplikací jsou dost rozsáhlé. Nejdříve se podívejme, jak se vlastně aplikace integruje do uživatelského rozhraní SharePoint a jak tedy může komunikovat s uživatelem:

clip_image003

Při konstrukci UI máte tři základní možnosti:

  • Immersive full page — aplikace běží v celé ploše okna prohlížeče. V horní části stránky je jen systémový pruh SharePointu, aby se uživatel měl jak vrátit zpět do běžného prostředí SharePointu.
  • App part — je to speciální druh web part, který zapouzdřuje uživatelské rozhraní aplikace. To je do webové stránky SharePointu vloženo pomocí IFRAME. App party mají jedno podstatné omezení: nemohou komunikovat s dalšími částmi rozhraní jako běžné web party.
  • UI custom actions — představují možnost, jak na ribbon nebo do kontextových menu doplnit vlastní akce, které spustí kód v aplikaci.

Druhým aspektem je samozřejmě rozsah dostupných funkcí v CSOM API. Od verze 2010 zažil CSOM dost podstatný rozvoj, takže nyní se pomocí něj dá realizovat většina běžných operací, které vývojář potřebuje se SharePointem provádět. K dispozici je například:

  • Manipulace s datovým modelem webu
  • Manipulace s kolekcemi webů a sub weby včetně zakládání
  • Práce s oprávněními, rolemi a uživateli
  • Práce s položkami listů
  • Práce s dokumenty včetně check-in, check-out a podobně
  • Registrace event handlerů
  • Koš (recycle bin)
  • Vytváření wiki stránek či příspěvků v diskusích
  • Přidávání a konfigurace web partů ve stránce
  • Práce s workflow scénáři
  • Přístup k Business Connectivity Services

Výčet by mohl pokračovat dál — vždyť jen PDF s technickou dokumentací protokolu, který za CSOM rozhraním stojí, má přes 700 stran. CSOM API je tedy skutečně bohaté, i když stále ještě neumí úplně nahradit SSOM (Server-Side Object Model), což ani není smyslem. Vlastnosti, jako je možnost registrovat event handlery z aplikací, ovšem velmi rozšiřují možnosti, co vše nové Apps for SharePoint můžou s SharePointem dělat a jaké vlastnosti nabídnout uživatelům.

Na závěr chci zdůraznit, že aplikace hostovaná v prostředí, které předepisuje vývojář, má de facto absolutní svobodu v tom, jaké zdroje využívá a jak je interně navržená. Takže i když třeba není možné jako součást aplikace do SharePointu nasadit vlastní timer job, nic nebrání tomu, aby aplikace plánovala zpracování na pozadí vlastními prostředky. To samé platí o ukládání dat — vývojáře technicky nic nenutí, aby data ukládat do SharePointu, stejně dobře může využít SQL či jiné úložiště.

Hybridní model: Cloudové aplikace a on-premise SharePoint

Otázka samozřejmě je, zda se vývojářům vyplatí zabývat se vývojem podle nového modelu, učit se CSOM rozhraní a jeho specifické odlišnosti od SSOM a dobrovolně přijmout omezení, které CSOM a nový model přirozeně má. Velkou výhodou, která může být při takovém rozhodování klíčová, není jen bezpečnost a stabilita prostředí, ale hlavně přenositelnost aplikací mezi cloudovým a on-premise SharePointem.

Administrátoři on-premise SharePoint 2013 mají k dispozici nástroje, pomocí kterých mohou kontrolovat nasazování aplikací a dokonce mohou nastavit, zda a případně i které aplikace z Office Store budou pro uživatele k dispozici. Můžete tak kombinovat výhody on-premise instalace a aplikací, které běží v cloudu či na vlastní infrastruktuře. Tak, jak budou v Office Store přibývat aplikace, se zároveň rozšiřují možnosti, jak snadno vlastní SharePoint prostředí rozšířit o nové funkce a pomůcky pro uživatele.

Hybridní model, kdy SharePoint běží v prostředí zákazníka za firewallem a současně používá aplikace z Office Store, ovšem vyžaduje netriviální bezpečnostní konfiguraci. K úspěšnému nastavení budete potřebovat PowerShell i dostatek času, abyste se prokousali všemi zákoutími tohoto procesu. Doporučuji pročíst si tento článek (dokument sps-2013-config-one-way-hybrid-environment.pdf ke stažení).

Publikování do SharePointu a do Office Store

Instalace aplikace do SharePointu je možná díky aplikačnímu balíčku, který obsahuje manifest v XML popisující aplikaci. V případě, že aplikaci vyvinete jen pro interní použití, stačí manifest zpřístupnit vaší SharePoint instalaci resp. aplikačnímu katalogu v něm a máte vyhráno.

Pokud se ale pustíte do vývoje aplikace určené pro Office Store, musíte s hotovou aplikací absolvovat registrační proces. Publikaci do Office Store v principu není sice nic těžkého, ale přeci jen vzhledem k novosti celého marketplace na vás může čekat pár překvapení. Proto publikaci věnujeme samostatný článek s praktickým průvodcem a radami jak na to.

Kam dál

Další články k tématu vývoje Apps for SharePoint na MSDN a TechNet (anglicky)

- Ondřej Tučný, BoldBrick