Gopas and Microsoft Teched Praha 2004

17. září 2004

Od 13. září do 17. září se koná v Praze konference Gopas and Microsoft TechEd 2004 na které přednášeny nejzajímavější prezentace z konference Microsoft TechEd 2004 v Amsterodamu. Tento článek je průběžně aktualizován – přináší aktuální zprávy o průběhu konference několikrát za den! (Poslední aktualizace 17. 9. 2004 11:10.)

Den první – zaostřeno na bezpečnost.

Jako rozjezd do týdne nabitého přednáškami měli účastníci TechEdu umožněn volný přístup na seminář Microsoft TechNet Podzim 2004. Protože prezentace z tohoto dne se víceméně netýkají vývoje webových aplikací uvedu pouze krátké informace.

ISA Server 2004

V prezentaci byla představena nová verze Microsoft Internet Security And Acceleration Serveru 2004. Jedná se o aplikační firewall, VPN a proxy server. Bližší informace najdete na stránkách věnovaných ISA Server 2004.

Windows XP Service Pack 2

Dlouho očekávaný SP 2 na Windows XP je již nějakou dobu ve verzi anglické a minulý týden byla uvolněna česká verze. Domácím uživatelům, kterým bych ostatně doporučoval okamžitou instalaci service packu, již nic nebrání si tento service pack nainstalovat. Kromě zcela přepracovaného firewallu obsahuje service pack například možnost blokování nebezpečných příloh v emailu (Outlook Express) či sledování nainstalovaných doplňků do Internet Exploreru (viz obrázek).

Jiná situace je u firemních uživatelů, kteří používají velké množství různých aplikací. Jelikož SP2 zásadním způsobem mění charakter a možnosti zabezpečení prostřední Windows XP (např. je zakázáno spousta věcí, které byly v minulosti povoleny) nemohu firemním uživatelům „bezhlavou“ instalaci service packu doporučit. U těchto uživatelů bych, stejně jako Microsoft, doporučil zahájit testovaní na reprezentativním vzorku uživatelů a po úspěšném dokončení testů zahájit instalaci na všechny firemní počítače. Pro ty uživatelé, kteří s instalací SP2 váhají jedna informace na závěr další patche, které budou pravděpodně následovat budou vyžadovat již nainstalovaný SP2.

Den druhý – TechEd konečně začíná

SQL Server 2005

SQL Server 2005 je v současnosti k dispozici v betaverzi 2, očekává se betaverze 3 a konečné uvedení na trh je planované ve druhé polovině roku 2005.

Správa SQL serveru se provádí pomocí grafického rozhraní SQL Server Management Studio což je vlastně nástupce Enterprise Mangeru a Query Analyzeru. Zahrnuje jednotné prostředí pro

    SQL Server

  • Analysis Services
  • Data Transformations Sevices (DTS)
  • Reporting Services
  • XQuery
  • Database Tuning Advisor – nastupce Index Tuning Wizardu

SQL 2005 obsahuje i nový SQLiMail, který používá standardní SMTP a není nutno tedy instalovat MAPI Outlooku či dokonce celý Outlook jako tomu bylo v předchozích verzích SQL, kde jste buď museli nainstalovat Outlook nebo použít techniku popsanou v článku Odesílání emailů z SQL serveru pomocí CDONTS.NewMail Celý SQLiMail nyní běží jako oddělený proces a je podporován na clusteru.

Z dalších novinek si dovolím jmenovat možnost používat v SQL .NET Framework, nativní podporu XML, či psát web služby aniž by k tomu bylo potřeba IIS. A to je jen velice malý zlomek novinek,které bude obsahovat SQL Server 2005. Více najdete na stránce věnované právě SQL Serveru 2005

Novinky v CLR 2.0

Novinek v CLR je hodně a není v mých silách je popsat všechny a tak jen pár:

Možnost používat CLR v SQL dotazech

Jistě mi dáte za pravdu, že napsat nějakou funkci v T-SQL je poněkud náročné (někdy i tak, že z toho dost bolí ruce od klávesnice) a přitom víte, že třeba v C# či VB.NET je to řešení na pár řádků. Jak jsem zmínil již ráno v SQL lze používat .NET funkcionalitu a nyní vám názorně ukážu jak si ušetříte práci. Na obrázcích vidíte srovnávení velikosti kódu při použití T-SQL a a při použití .NET funkcionality v SQL 2005 – je to poněkud velký rozdíl, že ano?


A takovýchto příkladu, kdy ušetříte nejen svojí vlastní práci, ale výkon serveru se najde celá řada.

CLR bezpečnost

Představte si, že máte vytvořenou aplikaci, ale nějak už nevíte jaká práva aplikace potřebuje (ostatně ji zcela určitě vyvíjíte na stroji, kde se hlásíte jako Administrátor). Doposud to byl problém, ale s aplikací Permission Calculator máte po starostech a víte jaká minimální práva aplikace potřebuje pro svůj bezproblémový běh

DriveInfo

Pokud jste v předcházejících verzích postrádali třídu, která by umožnila přístup k informacím o diskových jednotkách tak v CLR 2.0 ji konečně máte, a není tedy nutno informace, zjištovat složitě přes VMI.

Novinek je samozřejmně mnohem více a kdybych je zde měl všechny popisovat tak tím strávím celou konferenci, která končí v pátek, zájemce po podrobnější informace odkazuji proto na stránky věnované .NET Frameworku, kde najdete řadu informací včetně možnosti si .NET Framework stáhnout (ovšem zatím jen beta1).

Chyby při programovaní v C#

Velice zajímavá přednáška na které byly prezentovány ukázky různých problematických kódů s vysvětlením jakou chybu, která by mohla za určitých podmínek způsobit zpomalení nebo dokonce zhroucení aplikace.

Z hlavních bodů vybírám:

  • Nepoužívejte blok try-catch tam kde to není bezpodmínečně nutné
  • Při předávání vyjímek dál nepoužívejte throw e (vygeneruje novou vyjímku a informace o té původní se ztratí), ale pouze throw
  • Nepoužívejte explicitně volání GC.Collect() – systém ví lépe kdy může uvolnit pamět
  • Nepředpokládejte, že výčet (enums) je konečný v době kdy píšete aplikaci
  • Stejtně tak nepředpokládejte, že nikdy nebudete měnit kód který napíšete
  • Nepoužívejte lock(this) (za určitých situaci – v jiném vlánkě někdo zamkne celou metodu se aplikace zhroutí), ale zamykejte prïvátní proměnné

Více tipů a triků na optimalizaci a odstranění potencionálních chyb najdete v MSDN v článku Improving .NET Application Performance and Scalability.

Případně si můžete i stáhnout nástroj – FXCop, který vám kód „prohlédne“ a upozorní na potencionální chyby

Den třetí – T-SQL, ASP.NET a ti druzí

SQL 2005- rozšíření T-SQL

Možnosti T-SQL jsou v SQL 2005 velice rozšířeny a nelze je zde postihnout zcela všechny a proto opět vybírám pár nejzajímavějších a dále pak odkáži na zdroje kde se těmto novinkám věnují podrobně.

Novinka která určitě stojí za zmínku jsou DDL Triggery. Jedná se o triggery, které jsou schopné fungovat jak nad celou databází tak i na celým serverem a ochytávají události které způsobí DDL (Data Definition Language) – například vytvoření ale i třeba dropnutí tabulky a mnoho dalších událostí. Pokud tedy chcete zamezit například něchtěnému dropnutí jakékoliv tabulky použijete následující kód

CREATE TRIGGER prevent_drop_table ON DATABASE FOR DROP_TABLE
AS
RAISERROR (‚Nelze dropnout tabulku‘,10,1)
ROLLBACK

Pokud si chcete o DDL Triggerech přečíst více doporučuji článek T-SQL Enhancements in SQL Server 2005 – DDL Triggers.

Určitě nám všem v T-SQL chyběla rozumná možnost jak ošetřit chybové stavy a zachytávat vyjímky. Proto byla přidána možnost používat blok TRY/CATCH. Pomocí této kostrukce lze ošetřit teméř všechy chybové stavy ovšem kromě těch fatálních (severity > 20)

Zásadní způsobem byla rozšířena funkce TOP, která má nyní parametr, který již nemusí být konstanta a tak lze klidně napsat něco takovéhleho:

—declare 3 variables
DECLARE @a INT
DECLARE @b INT
DECLARE @c INT
—set values
SET @a = 10
SET @b = 5
SELECT @c = @a/@b
—use the calculated expression
SELECT TOP(@c)* FROM toptest
—insert some more data in toptest
INSERT INTO toptest VALUES(‚Niels6‘)
INSERT INTO toptest VALUES(‚Niels7‘)
INSERT INTO toptest VALUES(‚Niels8‘)
—use a SELECT statement as expression
—this should return 5 rows
SELECT TOP(SELECT COUNT(*) FROM toptest2) *
FROM toptest

Nově se dá TOP používat nejen u SELECTu, ale i u dotazu typu INSERT, UPDATE a DELETE

Další cenné informace o rozšíření T-SQL T-SQL Enhancements in SQL Server 2005

SpaceInvaders v CRL 2.0

Dopoledne jsem slíbil nějakou malou perličku a tak plním slib a perlička je tu. Řada z vás pamatuje jestě éru osmibitů a hru SpaceInvaders.

Asi se budete divit, proč v článku z TechEdu uvádím informace o nějaké hře a to ještě s příšenou grafikou. Je to proto, že jsou zde velice dobře využity možnosti CLR 2.0 tracing aplikace (loguje se veškerá činnost jak uživatele tak reakce apliakce). Navíc si povšimněte, že se jedná o „konzolovou aplikaci“ a jsou zde bez jakýchkoliv problémů barevné pohybující se objekty. Každopádně zdrojové kódy, které si můžete samozřejmně stáhnout budou pro vás dost dobrým zdrojem pro studium a inspiraci. Pouze jen připomínám, že k odskoušení potřebujete dotNET Framework 2.0, jehož beta je ke stažení.

Zvyšování výkonu ASP.NET aplikací

Na výkon aplikace je třeba myslet v každém kroku vývoje aplikace a testování výkonu by mělo být prováděno pruběžně během celého vývoje. Pokud si však myslíte, že výkon aplikace otestujete tak, že v prohlížeci načte stránku a pak „mačkáte F5 jako o život“, pak vězte, že vám to není moc platné. Veškeré testovaní je potřeba provádět stressově a plně automaticky a nejlépe ještě z více míst. Pokud vlastníte VS.NET Enterprise pak máte k dispozici aplikaci, která se jmenuje Microsoft Application Center Test Tool. Jak aplikace vypadá a náznak výsledku jednoho testu vidíte na obrázku.

Pokud však tento komerční produkt nevlastníte nezoufejte. Microsoft dal k dispozici aplikaci Microsoft Web Application Stress Tool, kterou si můžete stáhnout a případně se podívat na její dokumentaci a tutorialy. Vždy spouštějte stresové testování na jiném stroji než běží testovaná aplikace.

Jedna z mnoha věcí, která dokáže velmi negativně ovlivnit výkon aplikace je špatný způsob práce s pamětí (alokace velkého množství zbytečné paměti, chybná prace s řetezci apod.). Pokud chcete vědět co se během provozu aplikace děje v paměti pak zcela jistě využijete CLR Profiler.

Tento nástroj je na stránkách Microsoftu zdarma ke stažení a to včetně zdrojových kód. Jen upozorním na drobnost při použití této aplikace – běh vaší aplikace se po dobu analýzy zpomalí cca 100x, takže je to skutečně jen na otestování během ladění a nikoliv na trvalý provoz na ostré aplikaci.

Možností jak testovat a ladit výkon aplikace je celá řada a tak vás opět odkážu na pár článků u Microsoftu

Den čtvrtý – DTS, C# a WinForm

SQL 2005 Data Transformation Services

DTS je nástroj pro extrakci, transformaci a uložení dat (přenos dat v heterogením prostředí). Možnosti DTS v SQL 2005 jsou o proti předchozím verzím značně rozšířeny. Nyní je striktně oddělen tok programu a tok dat.

Vývoj DTS balíčků se provádí v prostředí Business Inteligence Development Studia, jehož vzhled a ovládání vychází z nám všem důvěrně známeho Visual Studia .NET. Tento nástroj umožnuje na jednom místě vývoj pro

  • Analysis Services
  • Reporting Services
  • Data Transformation

Při transformaci dat, můžete data načítat z různých zdrojů současně, stejně tak můžete data ukládat do více cílů. Pokud potřebujete přidat nějaký sloupec, sloučit několik tabulek či provést nějakou agregaci – ani to není žadný problém. Jak může vypadat Data Flow pro jednoduchý případ vidíte na obrázku.

Pokud se nějaká již načtená data potřebují ve více krocích nejsou znovu načítána či kopírována, ale použijí se stále ty samá (viz obrázek – Task Mulicast).

Pokud nyní potřebujete v DTS udělat nějaký cykl nemusíte si u pomáhat praktikami, které hraničili s hackováním spouštěče úloh. Samozřejmostí je možnost ladění jednotlivých tasků včetně jejich zakázání či povolení. Více informací o DTS v SQL 2005 najdete na stránkách věnovaných tomuto produktu.

Asynchronní programování Windows Forms

Tvorba desktop aplikací nepatří do náplně Intervalu, ale jelikož tohle je reportáž z TechEdu a tato velmi kvalitní přednáška tu zazněla myslím si, že aspoň nějaké informace musím přinést. Pokud píšete aplikaci, kde nějaká činnost trvá delší dobu (obecně se 1s považuje za dobu, která uživateli trvá než přijde na to, že aplikace z jeho „nic“ nědělá), měli by jste každou takovouto činnost volat v separátním vlákně. Jenže tu nastává úskalí. Uživatele je třeba informovat o průběhu akce (například aktualizovat ProgressBar). Při změnách User Interface (UI) je třeba dodržet pravidlo, že UI může být modifikován pouze z vklákna ve které byl vytvořen. Nedodržení tohoto pravidla vede k pádu aplikace.

V CLR 2.0 jsou již obsaženz třídy, které toto pravidlo dodržují a není se tedy nutno o nic starat. Jenže CLR 2.0 je stále v betaverzi a pokud to samé potřebujeme dělat v CLR 1.1 jsme postaveni před poněkud těžký úkol a to sice poctivě si hlídat jestli změnu ktreou chceme dělat můžeme provést z vlákna kde se právě nacházíme nebo musíme použít delegáta, který změnu udělá ze správného vlákna. Bohužel při tomto postupu je pak jakákoliv změna formuláře prací na dlouhé zimní večery.

Naštěstí však existuje řešení, které dokáže v CLR 1.0 využívat stejnou funkcionalitu jaká je v CLR 2.0, stačí si pouze stáhnout potřebné třídy , prostudovat a zapracovat do své aplikace. Funkčnost je stejná jako v CLR 2.0 a již se nemusíte o nic starat.

Visual Studio 2005 C# – rozšíření IDE

Vývojáří Microsoftu vyslyšeli nářky vývojářů a připravili řadu funkcí, které jim zpříjemní vývoj a úpravy aplikací ve Visual Studiu 2005. Vylepšní se dají shrnout do 4 skupin :

  • Porozumnění kódu
    • Class Designer – umí zobrazit diagram závislostí jednotlivých tříd
    • Object Test Banch – umožní otestovat co která třída umí aniž by jste museli napsat řádek kódu
    • Find All References – najde všechny reference objektu v projektu
  • Psaní kódu
    • Snippet support – umožnuje používat šablony kódu – a to i svoje vlastní – definuje se v XML
    • Rich Formating – umí zformátovat celý kód podle daných pravidel
    • Obalení kódu jiným kódem (např try/catch či REGION apod.)
    • Automatické vygenerovaní metod – do těla metody dá vygenerovaní vyjímky „není implementováno“ – vývojář si tělo doplní později
  • Modifikace kódu
    • Rename – přejmenování metody, třídy či vlastnosti se projeví v celém projektu – není třeba ručně editovat
    • Přidávání, odebírání či přeskupení parametrů – provede v celém kódu – není třeba nic ručně editovat
  • Ladění kódu
    • Intellisense in Watch
    • Zobrazuje potřebné informace a ne uplně všechno jako doposud
    • Dlouhé texty, datasety apod zobrazuje na požádaní v extra okně – přehledně

Pokud si chcete Visual Studio 2005 či další výjářské produkty zkusit, máte možnost si je na stránce Visual Studio 2005 Express Beta Products stáhnout.

Den pátý – zaměřeno na SQL

Bezpečnost v SQL 2005

SQL Server 2005 přináší nové postupy pro zajištění bezpečnosti přístupu k serveru a objektům, tj. autentizaci i autorizaci – jsou zavedeny změny v SQL loginu:

  • CHECK_POLICY – na daný login se bude uplatňovat Win politika hesel (např zamčení loginu)
  • CHECH_EXPIRATION – vypršení platnosti hesla
  • MUST_CHANGE – uživatel musí při prvním přihlášení změnit heslo

Je zde dána možnost definovat kontext pro provádění uživatelských modulů (EXECUTE AS):

  • Lze zajistit provádění příkazů uvnitř modulu pod určitým uživatelem
  • Uplatňuje se i na DDL a dynamicky spouštěné dotazy

EXECUTE AS { CALLER | SELF | OWNER | ‚user_name‘ }

  • EXECUTE AS CALLER
    • Modul běží pod účtem uživatele, který ho spustil
    • Defaultní nastavení
    • Založené na ownership chain (tj. pouze DML)
    • Funkčnost kompatibilní s SQL 2000
  • EXECUTE AS ‚UserName‘ (‚LoginName‘)
    • Modul běží pod zadaným uživatelem
    • Nutné právo

      CREATE PROCEDURE

      a

      IMPERSONATE

  • EXECUTE AS SELF
    • Modul běží pod účtem uživatele, který vykonal příka

      CREATE/ALTER

    • účet musí být jeden uživatel, nikoliv skupina nebo role
    • Vlastník je uživatel, nebo vlastník schéma
  • EXECUTE AS OWNER
    • Owner je explicitní vlastník modulu, nebo vlastník schéma
    • účet musí být jeden uživatel, nikoliv skupina nebo role
    • Práva se automaticky mapují na nové uživatele

Příklad použití EXECUTE AS

CREATE PROCEDURE TruncateMyTable WITH EXECUTE AS SELF AS TRUNCATE TABLE MyDB..MyTable;

Podronější informace získáte v článku Security in SQL Server 2005

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

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

Předchozí článek Calendar control v ASP.NET
Další článek bedrichov
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *