OREA Hotel Voroněž I Brno 5. – Twitter hashtag: #cztechdays
Top Hotel Praha 7. – Twitter hashtag: #cztechdays
Michael Juřek, Architect Evangelist Štěpán Bechynský, Developer Evangelist VS 11 – novinky pro vývojáře Twitter hashtag: #cztechdays
.NET framework a jazyky Vylepšení IDE Vývoj webových aplikací Zjednodušené UI pro TFS orientované na úlohy Verzování kódu Unit testy Code Clone Agenda
Historie.NET frameworku Verze na stejném řádku mají stejný runtime.NET 4.5 při instalaci nahrazuje.NET 4 Dřívější rozdělení na Client + Extended se mění na jednu instalaci Full
Inkrementální vylepšení ve všech technologiích: Základní třídy ASP.NET (více dále) WF WCF WPF Entity Framework Inovace v jazycích – podpora pro asynchronní volání.NET Framework 4.5
Získávají rostoucí popularitu, neboť: Umožňují snáze využít dostupná jádra procesoru V klientských aplikacích zabraňují „zamrznutí“ aplikace během obsluhy událostí (v Metro aplikacích povinné) V serverových aplikacích zvyšují škálovatelnost, brání vyčerpání threadů Asynchronní volání jsou v.NET frameworku od verze 1.0… … ale jsou neintuitivní a vedou k těžko čitelnému kódu Async/await v C# a VB.NET nabízí snadná asynchronní volání Asynchronní volání
private void button1_Click(object sender, RoutedEventArgs e) { WebClient wc = new WebClient(); string content = wc.DownloadString( new Uri(" this.label1.Text = content.Length; } Synchronní volání
private async void button1_Click(object sender, RoutedEventArgs e) { WebClient wc = new WebClient(); string content = await wc.DownloadStringTaskAsync( new Uri(" this.label1.Text = content.Length; } Asynchronní volání
.NET framework 4.5 je nadmnožinou verze 4.0 Zcela bezproblémový přechod zaručen Pro.NET framework 4.5 lze vyvíjet pouze ve VS 11 Pro.NET framework 4.0 a nižší lze vyvíjet ve VS 2010 i 11 Stejný formát souborů (.sln,.csproj), žádný upgrade Možnost paralelního běhu VS 11 a předchozích verzí Přechod na verzi 4.5
.NET framework a jazyky Vylepšení IDE Vývoj webových aplikací Zjednodušené UI pro TFS orientované na úlohy Verzování kódu Unit testy Code Clone Agenda
Čistší design – méně barev, méně bižuterie, čisté tvary Zjednodušené panely nástrojů = více místa pro kód Na základě telemetrických měření ve VS2010 Kdo někdy kopíroval kód pomocí tlačítek Copy/Paste? Nové okno Solution Exploreru s více funkcemi Hledání všude: Menu, nalezené chyby, solution explorer, reference, … Lepší práce s otevřenými soubory – pinování, preview, … V jednoduchosti je krása
DEMO Prostředí VS 11
.NET framework a jazyky Vylepšení IDE Vývoj webových aplikací Zjednodušené UI pro TFS orientované na úlohy Verzování kódu Unit testy Code Clone Agenda
VS 2010 CSS 2.1, žádný JavaScript, žádné HTML 5 VS 2010 SP1 Základní elementy v HTML 5 (header, video, section, …) VS 2010 SP1 + Web Standards Update CSS 3.0 properties, všechny HTML 5 elementy, částečně EcmaScript5 (geolocation, DOM storage, selectors) VS 11 100% CSS 3.0, 100% HTML 5, 100% EcmaScript 5, aktualizované ASP.NET (Web Forms i MVC) Podpora web standardů
HTML Automatická detekce DOCTYPE Inteligentnější editor – např. změna uzavíracího tagu CSS Komentáře, odsazování Editor barev JavaScript Komentáře, odsazování Lepší IntelliSense Využití NuGet pro závislosti na známých JavaScript knihovnách Page Inspector – serverový i klientský pohled současně Vylepšená práce s kódem
Možnost asynchronního provádění operací Výrazné zvýšení škálovatelnosti, minimální úprava kódu Univerzální poskytovatelé Membership/Profile/Role/Session Závislost na Entity Frameworku, nikoliv na SQL Serveru Optimalizace rychlosti načítání stránek: Minimalizace a slučování statických souborů (.js,.css) Inkrementální upload (> 2 GB) Jemnější kontrola nad validací stránek Podpora pro anotace dat ( Address, CreditCard, …) Novinky v ASP.NET runtime
Podpora HTML5 Nové šablony projektu s adaptací na šířku/schopnosti zařízení WebForms 2.0 podpora pro TextBox ( , Number, …) Validace na úrovni vstupního prvku (TextBox.AllowHtml) Podpora pro typy/IntelliSense při data-bindingu Model Binding – metody v kódu stránky pro práci s daty Podpora anotací dat a deklarativních parametrů metod Validace bez in-line JavaScriptu Vylepšený editor v režimu Source Podpora pro události a vizuální designéry Extrakce fragmentu stránky do User Controlu Novinky v ASP.NET Web Forms
DEMO Novinky pro webové vývojáře
.NET framework a jazyky Vylepšení IDE Vývoj webových aplikací Zjednodušené UI pro TFS orientované na úlohy Verzování kódu Unit testy Code Clone Agenda
Team Explorer je se svojí stromovou strukturou příliš nepřehledný Je obtížné najít to, co hledám Neposkytuje vodítko pro pracovní postupy Je snadné se ztratit, např. založit pracovní položku v jiném týmovém projektu Není podpora pro paralelní práci na více úlohách: Shelveset řeší jenom část problému Slyšeli jsme…
Orientované na úlohu a kontext Vždy pracuji s jediným týmovým projektem Vylepšená uživatelská zkušenost: Nemodální, asynchronní, „líné“ provádění akcí Domovská stránka projektu jako rozcestník My Work jako kompas Specializované stránky pro každý subsystém: Zdrojové kódy, pracovní položky, buildy, reporty dokumenty Fulltextové hledání v pracovních položkách Nové uživatelské rozhraní
Vybudována nad funkčností Shelve/Unshelve Umožňuje: Dočasně sbalit a odsunout nedodělanou práci Uložit aktuální nastavení prostředí Udělat jinou práci (např. opravit urgentní chybu) Obnovit předchozí kontext (změny jsou automaticky sloučeny) Pokračovat v předchozí práci Funkce přepínání kontextu
DEMO Nové uživatelské rozhraní Přepínání kontextu
.NET framework a jazyky Vylepšení IDE Vývoj webových aplikací Zjednodušené UI pro TFS orientované na úlohy Verzování kódu Unit testy Code Clone Agenda
Najděte 12 rozdílů …
Existující nástroj pro porovnávání a slučování verzí je zastaralý Existující nástroj postrádá integraci do prostředí Jediný způsob vizualizace nevyhovuje všem lidem a všem situacím Musíme kupovat nástroje třetích stran Množství konfliktů při paralelním vývoji je příliš velké Slyšeli jsme…
Integrovaný do prostředí Visual Studia Různé typy pohledů na kód Vertikální/horizontální rozdělení Integrace okna do Visual Studia: IntelliSense, zvýrazňování syntaxe, Undo, … Navíc: zlepšená inteligence při řešení konfliktů Větší procento konfliktů vyřešeno automaticky Nový rozdílový nástroj
Subversion funguje lépe v offline režimu Neotravuje s chybovými hlášeními Mohu vidět poslední verzi a porovnat se s ní Mohu zrušit změny a vrátit se zpět TFS nefunguje ideálně v offline režimu Nepraktické přepínání online/offline Obtěžující read-only atributy souborů TFS se obtížně používá s neintegrovanými nástroji (např. TFS nezjistí vymazání souboru ve Windows Exploreru) Slyšeli jsme…
Subversion nefunguje lépe, ale funguje jinak TFS 2010 používá přístup Checkout-Modify-Commit Subversion používá princip Modify-Merge-Commit Modify/Merge/Commit nabízí větší flexibilitu… Snazší použití, zejména pro začátečníky Velmi dobrá offline zkušenost … výměnou za horší kontrolu Nelze sledovat kdo co dělá Lze zahájit operaci, kterou nepůjde dokončit (např. existuje zámek) Větší potenciál vzniku konfliktů Neškáluje dobře s velmi velkou bází souborů Realita je složitější
Local workspace (styl Subversion) Výborná funkce v offline režimu Komfortní a pohodlná práce Server workspace (styl TFS 2010) Extrémní škálovatelnost Dokonalá kontrola V obou případech nižší počet konfliktů a problémů Automaticky slučitelné změny sloučeny bez potvrzení Vylepšený algoritmus detekce změn Možnost volby v TFS 11
DEMO Porovnávání a slučování Práce v offline režimu
.NET framework a jazyky Vylepšení IDE Vývoj webových aplikací Zjednodušené UI pro TFS orientované na úlohy Verzování kódu Unit testy Code Clone Agenda
Unit testy jsou doporučenou praktikou napříč všemi moderními metodikami - pomáhají vývojářům, pomáhají kvalitě produktu Neměly by být vnímány jako „práce navíc“, ale… Unit testy ve VS jsou pomalé Uživatelské rozhraní není dobré Zaměřeno spíše na testery než na vývojáře Podpora ve VS pouze pro MSTest, co ostatní frameworky? Chceme unit testy i pro nativní kód Chcecme „oficiální“ mockovací framework od MS Slyšeli jsme…
Nová architektura
Nezávislé na testovacím frameworku: MSTest pro managed kód (C#, VB.NET) Možnost pro třetí strany – adaptéry (NUnit apod.) Kontinuální testování na pozadí po úspěšném buildu Redukce a přepracování uživatelského rozhraní: Unit Test Explorer – rychlé, přehledné UI zaměřené na vývojáře Code Coverage Results (nově i pro nativní kód) Integrovaný mockovací framework Fakes (dříve Moles) Unit testy s menší režií
DEMO Nové UI pro unit testy
.NET framework a jazyky Vylepšení IDE Vývoj webových aplikací Zjednodušené UI pro TFS orientované na úlohy Verzování kódu Unit testy Code Clone Agenda
Ideální kód: Využívá návrhové vzory Neobsahuje duplicity Každá chyba se v něm vyskytuje pouze jednou … neexistuje Reálný kód: Množení chyb metodou Copy/Paste Neslyšeli jsme, ale víme…
Hledá sémanticky (nikoliv pouze textově) podobné bloky kódu Nalezení duplicitního kódu v řešení Ideální cíle pro refactoring Při nalezení problému najde podobné bloky kódu Eliminace chyb namnožených kopírováním Code Clone
DEMO Code Clone
Zajistěte si nové Visual Studio formou existující MSDN subskripce: Zjednodušené UI orientované na úlohy Porovnávání verzí, slučování změn Přerušení práce Vývoj v offline režimu Analýza kódu Revize kódu Code Clone Závěrem