Každoroční vývojářská konference o technologiích firmy Microsoft se letos konala ve španělské Barceloně. Pro návštěvníky bylo připraveno jedenáct přednáškových sálů, ve kterých probíhaly paralelní prezentace. Dále zde byly sekce Hands On Labs, Ask The Expert, Microsoft Products and Resources a samozřejmě výstavní plochy pro prezentaci jednotlivých firem.

Mně jako vývojáře zajímaly především trendy a vlastnosti nově ohlášených serverových produktů SQL Server Yukon a BizTalk Server 2004, pojďme se proto podívat na některé zajímavé ohlášené funkce těchto produktů.

BizTalk 2004

Nová verze tohoto serverového produktu, jak již jméno napovídá, se objeví až v polovině příštího roku. Na TechEdu byla ovšem k dispozici beta verze, na základě které se již dá odhadovat, co nového nám přinese. Zjednodušeně řečeno pro ty z vás, kteří s Biztalkem zatím nepřišli do styku, jedná se o „doručovací“ server, který čeká na zprávy přijímané pomocí různých protokolů a stanovišť (například souborů v adresáři, FTP, HTTP, WebService atd.). Poté, co zprávu obdrží, provede vnitřní zpracování přijatého dokumentu pomocí plánu nazývaného Orchestration a výslednou zprávu předá cílové lokaci. Docela hezky vystihuje průběh dokumentu systémem následující obrázek:

schéma zpracování dokumentu (náhled)
schéma zpracování dokumentu (plná velikost)

Vzhledem k tomu, že s BizTalkem 2002 pracuji, měl jsem možnost posoudit ty nejzásadnější výhody nové verze. Důležité je, že vytváření orchestration modelů je nyní plně integrováno do Visual Studia .NET. Integrace ovšem nekončí pouze u možnosti vytvářet projekty pro BizTalk, studio bude umožňovat debugování průchodu zprávy systémem včetně krokování, sledování hodnot a podobně. Kosmetickou změnou pak je přejmenování channels na pipelines.

BizTalk se poněkud přeorientoval ze staršího formátu pro definici zpráv XDR na schémata (XSD), která určitě znáte z datasetů. Co je ovšem velice zajímavé, tento formát bude také nativně podporován v InfoPathu, novém nástroji z řady Office. Ten má do budoucna působit v podstatě jako klient pro BizTalk server. InfoPath umožňuje editaci XML v jednoduché formulářové podobě, což bude určitě velice zajímavé pro větší firmy, kde se dosud používají standardní „papírové“ procesy nebo posílání wordovských dokumentů. Bohužel na moji otázku, zda InfoPath podporuje integraci s jazyky .NET, odpověděli zástupci Microsoftu záporně – je tu sice pořád skriptování pomocí VBScriptu a možnost volat webové služby, ovšem od nového produktu bych čekal lepší podporu pro vývojáře na platformě .NET.

Pro zlepšení škálovatelnosti je BizTalk 2004 navržen jako bezestavový server. Veškerá data jsou uložena v SQL databázi. To umožňuje výstavbu failover clusterů založených na SQL serverech, jakož i load-balancing pro více BizTalk Serverů.

SQL Server Yukon

Osobně jsem se nejvíce těšil na uvedení prvních informací o připravované nové verzi SQL Serveru. Hned první novinka skutečně stojí za to – v Yukonu budete moci vytvořit jakýsi SQL wrapper na libovolnou metodu své třídy napsanou v .NETu. Tu pak můžete volat přímo z SQL dotazu, jako byste volali uloženou proceduru nebo uživatelskou funkci.

Při vytváření takového „SQL wrapperu“ načte Yukon celou assembly v binární podobě do SQL serveru, metody se tedy nevolají na externí knihovně. Výhodou má být větší rychlost a hlavně tento přístup umožňuje replikace databází, zálohy a obnovování dohromady s určitou verzí dané assembly. Není mi ale jasné, a nebylo to ani součástí přednášky, zda se bude muset assembly ručně registrovat do SQL serveru při každé rekompilaci. To bychom se dostali zpátky na architekturální úroveň COMu a jeho registrací. Osobně si ale myslím, že Microsoft bude mít tento problém vyřešen, pouze ji nezahrnul do úvodní seznamovací přednášky.

Pro .NET kód určený pro běh v SQL serveru bude k dispozici nový namespace System.Data.Sql.SqlServer, který nabídne třídy pracující přímo s instancí SQL serveru, v němž aplikace poběží. Odpadnou tedy síťové komunikační protokoly, což má přinést řádový nárůst výkonu. V metodě volané z .NET kódu na SQL serveru bude možné získávat aktuální příkaz (Command), spojení (Connection) a transakci, pod kterou je daná metoda volána. SQL Server bude mít plnou kontrolu nad takovou aplikací – ta bude dostávat přidělenou paměť a systémové prostředky od něj, nikoliv od operačního systému.

Další vylepšení spočívá v dokonalejší podpoře XML. Vzniknul nový datový typ XML, který je možno indexovat a v SQL dotazech s ním pracovat pomocí standardů XPATH a XQUERY. Vzpomenuta byla také podpora schémat XSD, konkrétní příklad ale uveden nebyl. (Když jsme už u těch nových datových typů, přidány byly navíc Date a Time, ale hlavně bude možné vytvářet datové typy přímo v .NET.)

Pokud programujete větší podnikové aplikace v .NET, určitě jste se setkali s problémem mapování relačních dat do objektových struktur. Dědičnost může v tomto procesu nadělat skutečnou paseku. Spousta času je v současnosti při vývoji takových aplikací věnována vývoji databázové vrstvy, která vytváří bussines objekty. Ačkoli se tento proces dá do jisté míry automatizovat pomocí různých generátorů kódu, není zatím znám způsob optimálního řešení. Do nové verze SQL Serveru však má být zahrnut projekt s názvem ObjectSpaces, který se nyní nachází v preview stadiu. Ten by měl umožňovat persistenci libovolných objektů do databáze, což by řešilo uvedený problém.

Úplně samostatnou kapitolou je kompletně přepracované IDE pro vývoj a administraci SQL Serveru, jehož vzhled je odvozen od Visual Studia .NET. Součástí Yukonu bude také rozsáhlá podpora bussines inteligence a OLAP dolování dat v reálném čase. Zájemcům o podrobnější informace mohu doporučit produkt Microsoft SQL Server Reporting Services, nacházející se momentálně v beta verzi, který by mohl naznačit směr vývoje v této oblasti.

AOP

Jako třešničku nakonec jsem si nechal pojem „Aspect Oriented Programming“. Do této velice zajímavé a mladé discipliny se vkládalo v poslední době hodně nadějí. Sám jsem se nějaký čas o AOP zajímal a proto jsem si nemohl nechat ujít přednášku věnovanou tomuto tématu.

Ve zkratce se dá říct, že AOP je o odchytávání volání metod (call interception). Tento jednoduchý koncept umožňuje velice efektivní implementaci infrastrukturních úkolů, jakými jsou například sjednocené logování, autentikace, autorizace, transakční management a další. Uvedu příklad použití:

public class MojeTrida
{
  [Statistika]
  [Logovani]
  [OsetreniChyb]
  [Autorizace(„Administrator“)]
  public void NecoDelam()
  {
    // jenom cisty bussines kod, odlehceny od vsech
    // volani do infrastruktury.
  }
}

Jak krásné by to bylo, kdyby se daly jen pomocí atributů a následného odchycení volání metody NecoDelam() separovat infrastrukturní úkoly od samotného jádra bussines logiky.

Koncept skutečně krásný, implementace ovšem složitá. Hlavním důvodem je, že .NET CLR nepodporuje call interception nativně. Zbývají v podstatě dvě cesty, jak implementovat AOP v .NETu. První využívá třídy System.ContextBoundObject – pokud derivujete svou třídu od této třídy, vytvoří CLR oddělený kontext pro existenci instance. Na základě toho se již dají volání metod odchytávat. Ovšem, řekněme si na rovinu, komu by se chtělo odvozovat hierarchii svých objektů od dalších mezistupňů. Druhou cestou by bylo vytvoření preprocesoru pro kompilátor, který by odchytávání volání rozkládal do normálních volání metod. Tato cesta je popsaná například v článku AOP Support for C#.

Bohužel musím říci, že čas pro praktické nasazení AOP ještě nenadešel. Nicméně již nyní se dá velice dobře využít metadat při programování pomocí atributů – ti z vás, kteří programují COM+ nebo webové služby, se již s atributy určitě setkali.

Co dodat?

Z celého TechEdu jsem získal pocit, že se Microsoftu konečně daří plnit vizi .NET Server Family – integrace .NET framework ale i vývojových nástrojů pro Visual Studio .NET skutečně pokročila a znatelný byl také přechod do bussines inteligence nástrojů a integrace do Office. Uvidíme, kam povede další vývoj…

Další zdroje

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět