View
721
Download
4
Category
Preview:
Citation preview
Nie tylko C# Ekosystem Microsoft dla programistów
Kim jestem
● Nazywam się Hubert Taler (@htaler)
● Ukończyłem Uniwersytet Szczeciński (WE)
● Od 1998 roku zawodowo pracuję jako programista
● Od 2012 roku w BLStream jako SSE
● blstream.com
Agenda
● Historia .NET i IDE od Microsoftu
● Historia C# jako próby stworzenia języka od początku obiektowego
● Stan teraźniejszy: komponenty, funkcje, struktura frameworku, ekosystem
● PRZERWA
● Zmiany w C# 6, nowe funkcje frameworku,
● Warsztat pracy programisty C#
● Pułapki i niespodzianki w czasie codziennej pracy programisty
TROCHĘ HISTORII
Rok 1997
Początki .NET
● W 1997 roku zaczyna się Project Lightning / Project 42
● Inna proponowana nazwa: COM Object Runtime (COR) - stąd mscorlib.dll
● Nazwa kodowa loadera: fusion (stąd: fuslogvw.exe)
● C# wywodzi się z “Project Cool” - miał być implementacją Javy?!
● Najważniejsze komponenty: CLR i C# na początku
● Colusa: Language neutral OmniVM (Omniware)
● OmniVM uruchamiało C, C++, VB i (podobno) Java
● Sun: wymyśliliśmy maszynę wirtualną!
● Microsoft: nieprawda!
C# i jego początki
● Architekt C#: Anders Hejlsberg, oficjalnie 1998
● Próba stworzenia języka od podstaw obiektowego
● Model PME: properties, methods, events
● Zintegrowana dokumentacja, atrybuty (components hosts)
● Wcześniejsze próby: J++, J#, Visual Basic
● Rzeczy które były załatwiane konwencją lub wzorcem w innych językach
tutaj są wbudowane
● Pierwsza edycja: 1.0, 2002, Visual Studio .NET
C# Evolution
- Pierwsze wydanie (2002)
- 2.0: Generics, Partial, Anonymous methods, Nullables, getter/setter
accessibility, statics (2003)
- 3.0: Implicitly typed local variables (var), auto properties, lambda
expressions, object and collection initializers, partial classes (2007)
- 4.0: optional parameters, generic covariance (2010)
- 5.0: async, caller info attribute (2012)
- 6.0: b. dużo zmian (2015)
- 7.0: w formie propozycji, budowa listy funkcji do dodania
JAK TO WYGLĄDA TERAZ
Co dostaniemy teraz? Framework
.NET Framework – podstawowe cechy
• Common Language Infrastructure
• Biblioteki (BCL, FCL) [System.*, Microsoft.*]
• Assemblies
• .NET Core (cross platform, open source)
• Interoperability
• Niezależność od języka
• Portowalność (Mono, .NET Micro Framework, Portable.NET (GNU))
• Memory Management, garbage collector
Co dostaniemy teraz? Narzędzia developera
• Visual Studio Community 2015
–Expression Blend
• Azure (w tym VM)
• .NET Framework / Core / Visual Studio Code
• SQL Server Express
• Visual Studio Online
• Kod źródłowy, projekty Open Source, Roslyn
Dlaczego warto?
● Windows Store
● Windows App Studio
● Analityka i inne w Azure
● Próbujemy za darmo
● WCF Web API
● Integrated tests
● Community
● Projekty open source
● Integracja z innymi językami i środowiskami
.NET 2015, C# 6.0
Co nowego w .NET 2015?
● ASP.NET 5
● ADO.NET – always encrypted
● 64-bitowy kompilator just-in-time
● Usprawnienia w Assembly loaderze
● Dużo zmian w klasach bazowych
● Nowa klasa AppContext
● Task dziedziczy Culture i UICulture
● Wbudowana klasa do Event Logu
● Zmiany w WPF, WCF
● .NET Native
C# 6.0 – w stronę lepszego kodu
● Using static
● Fajne, ale uważajcie!
● Operator nameof
● String interpolation
● Null conditional operator
● Structs constructors
● Better auto-properties, expression body (one line implementation)
● Dictionary initializer
● Exception improvements (await in catch, exception filters)
C# 6.0 LIVE Text
JAK ZROBIĆ ŻEBY ZAROBIĆ I SIĘ
NIE NAROBIĆ
Tips & Tricks
● Nie mamy już pieniędzy, pospiesz się
● Garbage in – garbage out
● Loguj działania aplikacji i użytkownika
● Lepiej być suchym niż mokrym (DRY zamiast WET)
● Prototypuj aby zmniejszać ryzyko
● Nie płacą ci za kodowanie tylko za dostarczanie funkcjonalności
Pułapki w pracy programisty – czego unikać, o
czym pamiętać
• Gettery zmieniające dane (getter Heisenberga)
• Niespodzianki serializacji i deserializacji
• Incrementing null w int?
• Statyczne konstruktory robią lock, uruchamiają się dla każdego typu generycznego
• Dziwności case
• Model eventów
• Kiedy nazwy są mylące (Add() w Datetime, ToLower() w String)
• Testowalny kod (przykład)
PUŁAPKI C# LIVE
Źródła informacji
• Książki (C# Illustrated, .NET Gotchas)
• StackOverflow
• MSDN
Recommended