Visual Basic .NETV Listopadu roku 2000 se objevila první betaverze nového Visual Studia. Díky technologiím, na kterých staví, sebou přináší zcela nový pohled na vývoj pro platformu Windows (a nejen pro ni). S novou verzí Visual Studia, které dostalo přívlastek .NET (čti dot net), přišla i sedmá verze Visual Basicu. Balík nových vývojářských nástrojů navazuje právě na novou platformu Microsoftu označovanou jako .NET, která rozvíjí a rozšiřuje principy Windows DNA. Cílem této iniciativy je nabídnout vývojářům prostředky pro vývoj síťových řešení, která nejen že by byla snadno spravovatelná, škálovatelná atd., ale která by umožňovala integraci s novými nebo již existujícími aplikacemi. Díky tomu, že jsou pro tento účel použity veřejné standardy SOAP a BizTalk postavené na XML, je možná snadná integrace s aplikacemi na zcela odlišných platformách. Infrastruktura platformy .NET je postavena na standardu XML. Pomocí něj chce Microsoft dosáhnout standardizace přenosu dat a komunikace mezi aplikacemi na odlišných platformách a tím sjednotit přístup uživatelů ke službám. Pokud bude služba i uživatelův prohlížeč podporovat XML a standardy na něm postavené, bude možná jejich komunikace ať už poběží na čemkoliv. To samozřejmě není omezeno pouze na komunikaci uživatele se službou. Stejně bude možná komunikace mezi dvěma aplikacemi, což najde uplatnění především při integraci a vytváření řešení typu B2B. ![]()
Orchestration – Technologie pro jednoduchou a rychlou správu a návrh procesů vaší aplikace. Pro realizaci této vrstvy nabízí Microsoft BizTalk Server 2000. S pomocí vizuálního nástroje BizTalk Orchestration můžete přehledně měnit obchodní procesy a uspořádávat jednotlivé komponenty a vazby vašeho webového řešení. .NET FrameworkTento prvek platformy .NET znamená zcela nový přístup k vytváření aplikací. Zjednodušuje a sjednocuje přístup různých programovacích jazyků k dostupným technologiím, počínaje uživatelským rozhraním přes vytváření vláken až po technologie pro přístup k datům. .NET Framework zastřešuje všechny technologie a služby dostupné v systému. ![]() Základním kamenem je Common Language Runtime (dále jen CLR) a základní knihovna tříd. Toto můžeme přirovnat k runtime knihovnám pro Visual Basic, Java virtual machine nebo knihovně MFC. Všechny tyto zapouzdřují určité schopnosti a služby, které jsou pak využívány programem napsaným v příslušném programovacím jazyku. CLR nabízí konzistentní programovací model, který jednotným způsobem nabízí aplikační služby pomocí obecného objektově orientovaného programovacího modelu a ne jako dnes, kdy jsou schopnosti OS zpřístupňovány buď pomocí funkcí z DLL knihoven nebo pomocí COM objektů. Všechny jazyky, které využívají tento model podporují stejné rysy, a to ty, které nabízí CLR. Zajímavým rysem této technologie je možnost integrace několika jazyků v jedné aplikaci. K tomu, aby toto mohlo fungovat je nutné mít pro daný jazyk kompilátor, který vyhovuje Microsoft Common Language Specification (CLS). Takový kompilátor úzce spolupracuje s .NET CLR a vytváří tzv. řízený kód (managed code). Microsoft poskytuje kompilátory řízeného kódu pro C++ s rozšířením pro řízený kód (Managed Extensions for C++), Visual Basic, C# a JScript. Jedině s pomocí C++ je možno vytvářet neřízený kód (unmanaged code). S ostatními dodávanými kompilátory neřízený kód nebude možno vytvářet, a tím pádem jej bez CLR nelze spouštět. Samozřejmě je možné na základě CLS vytvořit kompilátory řízeného kódu pro další jazyky. ![]() Na další novinku narazíte při kompilaci vašeho řízeného kódu do podoby EXE nebo DLL. Především pro ty, kteří se radovali ze zavedení kompilace do nativního kódu u Visual Basicu 6, to bude nepříjemné překvapení. P-Code se vrátil, ale ve zcela nové podobě. Kompilátory pro CLR negenerují strojový kód pro x86 nebo jiný typ procesoru, nýbrž kód MSIL, což je zkratka pro Microsoft Intermediate Language. Jedná se o binární kód s objektovými rysy. Vygenerovaný soubor s kódem MSIL se nazývá Portable executable (PE). Ten mimo vygenerovaný kód obsahuje i metadata, která jste dříve mohli uvádět typových knihovnách a kompilátor vždy vygeneruje úplné informace o všech třídách v souboru. Celý tento koncept lze připodobnit k Javě. Microsoft se tímto snaží vytvořit naprosto univerzální platformu, kde bude možné pomocí libovolného programovacího jazyka vytvářet aplikace pro libovolnou platformu. K tomu bude potřeba dvou věcí, a to kompilátoru pro CLR, který bude generovat MSIL kód a dále potom .NET CLR pro příslušnou platformu. Z pohledu Microsoftu to bude mít význam především při vývoji aplikací pro 64 bitové Windows a Windows CE, které nepracují na procesorech x86. Je-li aplikace spuštěna je zavolán CLR stroj, který se postará o překlad programu do nativního kódu procesoru. Kdyby se měl kód přeložit najednou, poté by sice běžel rychle, ale samotná kompilace by zabrala příliš mnoho času, a proto jsou jednotlivé metody překládány až poté co jsou zavolány. K tomu slouží JIT (Just in time) kompilátor. Tento způsob má ovšem blíže k interpretru než ke kompilátoru, což se podepisuje na rychlosti. Přesněji řečeno se jedná o určitý mezistupeň. Je-li program spuštěn jsou natažena metadata a ke každému přístupovému bodu (metodě, vlastnosti) připojen odkaz na začátek jeho kódu. Když je metoda zavolána, CLR stroj se postará o překlad MSIL kódu metody do nativního kódu a odkaz do MSIL kódu je nahrazen adresou zkompilovaného kódu. Při dalším volání už se metoda opětovně nepřekládá a je použito již zkompilovaného kódu v paměti. Rychlost programu se tak s časem jeho běhu zvyšuje, samozřejmě jen do doby než je zkompilován celý kód programu. K čemuž ovšem nemusí nikdy dojít. JIT kompilátor dokáže běžet ve dvou módech. Při běžném módu je výsledný nativní kód zoptimalizován, což je ovšem náročnější jak na čas tak i paměť. Proto je nabízen i ekonomický mód vhodný pro přenosná zařízení, který přímo nahrazuje MSIL kód přímo nativním kódem bez jakékoliv optimalizace. Jistě každého napadne, že kdyby se kód zkompilovaný při běhu programu uložil, bylo by možné aplikaci spouštět stále rychleji až do fáze kdy bude zkompilována celá. Pro tento účel hodlá Microsoft nabízet nástroj preJit.exe. Zde si ovšem musíme popsat ještě některé pojmy, které MS zavedl v souvislosti s distribucí aplikace. Základním pojmem je Assembly. Tento pojem v praxi představuje jeden nebo více souborů, které se vytvoří při kompilaci programu. Bude záležet na vás, zdali vše bude v jednom souboru nebo jestli každou třídu umístíte do separátního souboru. Z jiného pohledu je Assembly kolekcí dat a tříd, z nichž každá má svou verzi a jméno. Celá Assembly je pak popsána v manifestu, který obsahuje všechny potřebné informace a soubory které do ní patří. Assembly tak obsahuje svůj vlastní popis, a tak není třeba jí registrovat jak tomu bylo dříve. Toto je také základ techniky, kterou hodlá MS předcházet situaci, která je výstižně označována jako DLL Hell. Nyní se však vraťme k preJIT kompilátoru. Ten bude schopen vzít zkompilovat celou Assembly a výsledný nativní kód uložit. Při dalším spuštění bude docházet k přímému spuštění nativního kódu. Takto zkompilovanou aplikaci nebude možné distribuovat. Visual Studio .NETNové Visual Studio (VS) jak už jeho přívlastek napovídá, staví na nových technologiích přicházejících s platformou .NET. Můžeme ho také popsat jako nadstavbu nad .NET Framework, která nabízí vizuální nástroje, které zjednodušují vývoj, ladění a distribuci aplikací pro Framework. Stejně jako u .NET Framework je velký důraz kladen na vývoj aplikací pro Web. Dopředu vám mohu říci, že oproti VS 6.0 se toho změnilo velmi mnoho. Jednou z očekávaných změn jsou i nároky na hardware počítače. A ty jsou vskutku nemalé, a to i přesto, že MS uvádí, že nároky betaverze jsou vyšší než budou u verze finální.
Minimální konfigurace – PII 450MHz, 128 MB RAM, rozlišení 800x600, 256 barev, 1 GB místa na disku a mechanika CD První, na pohled viditelnou změnou je vývojové prostředí (IDE). Vzniklo kombinací všech vývojových prostředí z předchozího VS, doplněného o množství nových rysů. Všechny programovací jazyky z VS budou mít stejné IDE. Když se u předchozích verzích mluvilo o Visual Basicu, nebyl myšlen jen jazyk, ale i celé vývojové prostředí se vším všudy co k němu patřilo. U VS .NET je již mezi programovacím jazykem a IDE jasná hranice. Tím si vývojáři, kteří programují ve více jazycích ve VS, ušetří problémy s přecházením z jednoho jazyku na druhý, protože prostředí bude stále stejné. Navíc bude možné v jednom projektu použít několik programovacích jazyků najednou. Představte si, že napíšete třídu v C++, a tu zdědíte třeba v Basicu. Přitom se vše bude nacházet v jednom projektu. Další vylepšení IDE spočívají v jeho plné nastavitelnosti. Novým prvkem, který je znám především z grafických programů je automaticky se skovávající okna. Když je nepoužíváte zmenší se okno na nejmenší možnou velikost, čímž šetří cenný prostor, který vám obrazovka nabízí. Přímo je podporováno i více monitorů. Dále bylo vylepšeno ovládání oken, a to pomocí záložek a tlačítek vpřed a zpět. Do VS bylo přidáno množství nástrojů, které jsou buď zcela nové nebo nahrazují stávající: Strat Page je HTML stránka, která slouží pro nastavování preferencí pro vývojové prostředí a jako vývojářská centrála. Z této stránky máte přístup k novinkám, diskusím, článkům a informacím nacházejícím se v MSDN Online. Solution Explorer nahrazuje Project Explorer. Je v něm možné hierarchicky zobrazovat projekty a jejich součásti. Toolbox nabízí v závislosti na otevřeném návrháři dostupné prvky. Pomocí něj můžete navrhovat uživatelské rozhraní jak pro klasické aplikace Windows, webové aplikace nebo třeba stránky HTML. Server Explorer je novým nástrojem, který umožňuje používat a manipulovat se zdroji na libovolném počítači. Takto se můžete připojovat k databázím, službám a dalším zdrojům, ke kterým máte oprávnění přistupovat. Dynamic Help je okno, které automaticky nabízí nápovědu k právě prováděnému úkolu. Vyberete-li například nějakou položku v IDE nebo označíte příkaz v kódu, jsou v MSDN nalezeny příslušné informace, a ty zobrazeny v kategoriích nápověda, akce, různé a příklady. Document Windows umožňuje psát kód nejen kompilovatelných jazyků, ale i HTML a XML, a to s plnou podporu ze strany technologie IntelliSense. Ten zobrazí všechny dostupné parametry k příslušnému tagu a navíc barevně odlišuje části kódu. Command Window představuje příkazový řádek, pomocí kterého můžete provádět příkazy prostředí VS bez toho, že by jste museli využít ovládání pomocí nabídek či dialogů. Visual Studio Macros umožňuje návrhářům zaznamenat libovolnou posloupnost akcí, a ty potom opětovně vyvolat. Identický nástroj je znám například z Wordu nebo Excelu. Windows Forms DesignerSoučástí .NET Framework je Windows Froms, který představuje arzenál pro vytváření uživatelského rozhraní pro Windows. Windows Forms je objektově orientována a skládá se z kolekce tříd s celou škálou metod a vlastností, které v plné šíři využívají možností, které Windows nabízí. Věci, které jste museli mnohdy složitě řešit pomocí API funkcí, dnes vyřešíte nastavením jedné vlastnosti. Ve VS vytváříte uživatelské rozhraní pomocí návrháře, výsledkem však není proprietární formát jako tomu bylo u VB dříve, ale obyčejný kód v libovolném jazyce, pomocí kterého je možno vytvářet řízený kód. Z toho je zřejmé, že si vzhled formuláře můžeme vytvořit sami, napsáním jeho kódu. Ačkoli je i toto možné, je použití návrháře jistě přehlednější a jednodušší. Je vhodné zopakovat, že Windows Forms je záležitostí Frameworku a Windows Forms Designer (návrhář) je součástí VS, který pouze usnadňuje vytváření uživatelského rozhraní. Pokud máte nainstalovaný .NET Framework a chcete vytvořit aplikaci, a to včetně jeho uživatelského rozhraní, postačí vám k tomu například Notepad. Napíšete kompletní kód, zkompilujete a program je na světě. V případě jednodušších programů je toto skutečně možné, ale u něčeho většího by jste se tomuto měli raději vyhnout. Web Forms DesignerPodobně jako tomu bylo u Windows Forms je i Web Forms součástí .NET Framework. Návrhář (Designer) slouží pouze k jednoduššímu a přehlednějšímu návrhu. Stejně jako tomu je například u VB6, je oddělen vizuální návrh formuláře (HTML, XML atd.) od obslužného kódu. Tento postup velmi usnadňuje vývoj webových aplikací. Výsledek je pak zkompilován do spustitelného souboru, což podstatně urychluje jeho provádění. Výsledek je zpracováván na straně serveru a poté může být předáván například ve formě HTML 3.2, který dnes zvládne téměř každý prohlížeč nebo může být výsledek optimalizován pro konkrétní prohlížeč, a to včetně podpory mobilních zařízení a protokolu WAP. Web ServicesNa internet a služby na něm nabízené jsou kladeny stále větší požadavky. Pro tyto účely jsou vyvíjena a nasazována škálovatelná, spolehlivá a bezpečná řešení. Druhou stránkou věci je podpora pro vývojáře, kteří mají takováto řešení vytvářet. Pro tento účel existují specializované programovací jazyky, technologie a nástroje. .NET Framework nabízí možnost vyvíjet webové služby v libovolném programovacím jazyku. Tyto služby pak nabízejí své schopnosti pomocí otevřených standardů jako jsou XML a SOAP, a to bez rozdílu, zdali je poskytují jedné aplikaci na stejném počítači, nebo libovolnému počtu klientů přes internet. Vizuální databázové nástrojeVelký krok kupředu udělalo VS v podpoře pro databáze. Nově integrované nástroje pokrývají v celé šíři návrh a práci s databází. Aniž by jste opustili VS můžete pracovat s SQL Serverem nebo Oraclem. Stejně jako při vývoji aplikace, použijete Solution Manager pro zobrazení a správu všech částí databázového projektu, jako jsou skripty pro vytváření a modifikaci databáze, dotazy atd. Pro návrh databázového schématu slouží Database Designer. S jeho pomocí můžete nastavovat relace, přidávat, měnit a odebírat sloupce, tabulky, indexy atd. Dalším nástrojem je Query Designer, s jehož pomocí můžete vizuálně vytvářet dotazy. Script Editor vám poslouží k přímé práci s uloženými procedurami, triggery nebo libovolnými SQL skripty. Poslední zajímavou možností pro databáze SQL Server 6.5 a vyšší je možnost ladění uložených procedur přímo ve VS. Visual Basic .NETS úzkou provázaností VB s .NET Framework, přišlo i množství změn, které byly nutné aby VB vyhověl jeho požadavkům a aby byl schopen poskytnout všechny nabízené možnosti. I když ne všechny změny se budou všem líbit, byly mnohdy nutné z důvodu kompatibility, a stojí opravdu za to. Změny jsou ovšem někdy dost zásadní a nebude jednoduché jim přivyknout. Kdybych měl přechod na novou verzi přirovnat k některému předchozímu, byl by asi nejvýstižnější přechod mezi verzemi 3 (se starší verzemi nemám žádné zkušenosti) a 6. Změny se ovšem netýkají jen jazyka samotného, ale i celé funkční a objektové kostry, která nabízí množství objektů pro řešení nejrůznějších problémů. Následující výpis změn a novinek je pouze reprezentativní a nepopisuje bezezbytku všechny změny a novinky, jelikož by to přesahovalo zaměření článku. Nejvýraznějším pokrokem ve VB .NET jsou nové objektově orientované rysy. Byly tak vyslyšeny prosby většiny vývojářů, kteří po nich již dlouho toužili. Konstrukce, které jste mohli dříve nalézat například v C++ dnes můžete realizovat i v novém VB. Na druhou stranu některé konstrukce, jako GoSub/Return nebo DefInt, byly z VB odstraněny. Především absence dědičnosti byl často vytýkána. Proto byl VB označován jako komponentně orientovaný jazyk. Na prvním místě v nových rysech stojí bezesporu dědičnost. Přestože ji předchozí verze přímo nepodporovaly, bylo ji možno určitými způsoby realizovat. Tyto postupy však byly natolik pracné, že se jich využívalo spíše výjimečně. Dnes za použití klíčového slova Inherits je to otázka jednoho řádku kódu.
Public Class AnyClass
Nyní abychom zdědili třídu AnyClass použijeme v těle naší nové třídy frázi Inherits.
Public Class MyClass
Dědění však můžete zamezit nebo si jej vynutit, a to tehdy, uvedete-li v deklaraci třídy NotInheritrable (třídu nebude možné dědit) nebo MustInherit (nebude možné vytvořit instanci třídy, jediné možné použití je dědění). Třída MyClass zdědila kompletní funkčnost třídy MyClass, a tedy i metodu MySub. Budete-li si chtít metodu MySub v odvozené třídě obsloužit sami, můžete použít klíčového slova Overrides. To zajistí, že zděděná metoda bude ignorována a nahrazena vaší vlastní.
Public Overrides Sub MySub()
Tomu může děděná třída bránit pomocí klíčového slova NotOverridable uvedeného v hlavičce metody. Pomocí MustOverride si však obsluhu metody v odvozené třídě může vynutit. Přetěžování umožňuje vytvořit několik funkcí se stejným názvem, ale s rozdílnými parametry. A právě podle parametrů je pak určeno, která funkce má být zavolána. To je praktické ve chvíli, kdy provádíte stejnou operaci s různými datovými typy a s každým typem je uvnitř funkce zacházeno odlišným způsobem.
Overloads Sub MySub(Value As Short)
Metody a vlastnosti je možné deklarovat jako třídní s pomocí slova Shared. To znamená, že nepracují s konkrétní instancí, ale celou třídou. Chcete-li ji zavolat nemusíte pro tento účel vytvářet instanci, ale můžete ji volat skrze jméno typu.
Shared Sub MySub()
U tříd jsou nově podporovány i parametrizované konstruktory. New a Terminate nahrazují události Class_Initialize a Class_Terminate. V rozhraní třídy můžete zadat New s parametry, pomocí kterých pak můžete třídu libovolně inicializovat. Samozřejmě je možné i přetěžování.
Public Class MyClass
Změna nastala i u zápisu vlastností. Obě části vlastnosti se nacházejí vedle sebe uvnitř jedné deklarace. Hodnota předávaná do vlastnosti je přístupná v proměnné Value. Chcete-li, aby byla vlastnost implicitní použijte klíčového slova Default.
Private myVal As String
Pro deklaraci procedury pro obsluhu události je možné zvolit dva postupy. Buď můžete použít klasický způsob známý z VB 6, kdy jméno proměnné a název události je oddělen podtržítkem. Druhá možnost je deklarování vlastní procedury a na jejím konci za slovem Handles uvedete seznam dvojic proměnná.událost (z následujícího příkladu bude tento způsob jasnější). Takto lze centrálně obsluhovat několik událostí najednou.
Sub MyClick(ByVal sender As Object, ByVal e As System.EventArgs) _
Parametry funkcí a procedur byly ve VB 6 implicitně předávány odkazem. Takto předanou proměnnou bylo možné uvnitř funkce změnit. Ve VB .NET jsou parametry implicitně předávány hodnotou. Pro opuštění procedury je možné použít jak Exit Sub tak i příkazu Return. V případě, že tento příkaz použijeme ve funkci musíme mu v parametru zadat návratovou hodnotu. Do VB .NET byla doplněna konstrukce pro strukturovanou obsluhu výjimek Try ... Catch ... Finally. V části Try provádíte kód, ve kterém může nastat chyba. V případě, že chyba nastane pokračuje se v části Catch, v opačném případě v části Finally.
Sub MyException()
Velmi jednoduchá je práce s volnými vlákny. Ty umožňují nezávislé provádění libovolného úkolu. Již není nutné procházet jeden řádek kódu za druhým, ale je možné časově náročnější úkoly spustit nezávisle a přitom pokračovat v provádění hlavní větve kódu.
Sub MySub()
Podstatná změny nastaly v datových typech a prací s nimi. První z těchto změn je odstranění milovaného i nenáviděného typu Variant. Tento univerzální typ, jehož součástí byl i popis o typu proměnné, byl nahrazen typem Object a převzal veškerou jeho funkcionalitu. Podtyp Decimal se osamostatnil a již není závislý na typu Variant. Dalším typem, který prošel změnou je String. Nyní již není možné deklarovat řetězec s pevnou délkou. Změně se nevyhnuly ani celočíselné datové typy Integer a Long. 16-bitový typ se znaménkem nebude Integer, ale Short. Typ Integer narostl na 32 bitů a Long až na 64 bitů. Typ Date, který byl ve VB6 přenášen v typu Double a obsahoval i informaci o času (datum na prvních čytřech bajtech a čas na zbylých čtyřech) je nahrazen typem DateTime. Struktury, které se dříve deklarovaly pomocí Type ... End Type se nyní deklarují takto:
Structure MyStruct
Odlišná je i deklarace a práce s poli. Všechna pole budou začínat prvkem s indexem 0. To nebude možné změnit ani s pomocí fráze Option Base, která již nebude podporována. Při deklaraci pole se do závorky neuvádí horní mez, ale počet prvků. Počet dimenzí nebude možné pomocí ReDim měnit.
Dim a(10) ‘pole bude mít 10 prvků 0 až 9
Podstatných změn doznala i deklarace ostatních datových typů. Věcí, kterou se ušetří množství řádku kódu, je možnost inicializace proměnné již v deklarační části. A to jak proměnných jednoduchých typů tak i pole a objekty.
Dim i As Integer = 123
Deklarace několika proměnných za sebou a pak jejich jednorázové otypování ušetří velké množství psaní.
Dim a, b, c, d As Integer
U proměnných deklarovaných uvnitř procedur či funkcích závisí na tom, kde přesně jsou deklarovány. Dříve platilo, že ať byla deklarace napsána kdekoliv platila pro celou funkci či proceduru. Nyní již bude záležet i na tom, zdali se deklarace nenachází uvnitř bloku ukončeného pomocí End, Loop nebo Next. Proměnná deklarovaná v bloku nebude mimo něj přístupná.
Dim a, i As Long
Pozoruhodnou změnou je i rozlišování mezi operátory pro typ Boolean a pro bitové operace. Operátory And, Or, Xor, Not (Imp a Eqv nejsou dále podporovány) jsou výhradně určeny pro práci s proměnnými typu Bool. Pro bitové operace byly vytvořeny zcela nové operátory, které se odlišují pouze předponou Bit v názvu. Jsou to BitAnd, BitOr, BitXor a BitNot. Další nové operátory, na které jste mohli narazit například v jazyku C, jsou +=, -=, *= atd. Tyto do proměnné uvedené před operátorem uloží hodnotu, která se vypočte sčtením, odečtením, vynásobením atd. proměnné před operátorem a výrazu za operátorem.
‘výsledek obou řádků bude stejný
a *= b + 5
ZávěrNové (někdo by mohl říci, že pouze zdánlivě) technologie, které MS zastřešil pod platformou .NET, znamenají pokus vytvořit univerzální platformu. To jak se to povedlo můžete posoudit sami. Změny, které to sebou přineslo do VB nejsou zanedbatelné, a jazyk se tak posunul o třídu výše. Přechod na .NET nebude jak pro uživatele tak pro MS jednoduchý, ale myslím si, že je to krok správným směrem. Samozřejmě ne vše se bude každému líbit, a proto bych rád rozpoutal diskusi na téma „Co si myslíte o .NET a všem kolem něj„. Nejzajímavější názory a dotazy zde budou prezentovány (vbtipy@seznam.cz). |