Nie tylko C# - Ekosystem Microsoft dla programistów

25
Nie tylko C# Ekosystem Microsoft dla programistów

Transcript of Nie tylko C# - Ekosystem Microsoft dla programistów

Page 1: Nie tylko C# - Ekosystem Microsoft dla programistów

Nie tylko C# Ekosystem Microsoft dla programistów

Page 2: 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

Page 3: Nie tylko C# - Ekosystem Microsoft dla programistów

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

Page 4: Nie tylko C# - Ekosystem Microsoft dla programistów

TROCHĘ HISTORII

Page 5: Nie tylko C# - Ekosystem Microsoft dla programistów

Rok 1997

Page 6: Nie tylko C# - Ekosystem Microsoft dla programistów
Page 7: Nie tylko C# - Ekosystem Microsoft dla programistów

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!

Page 8: Nie tylko C# - Ekosystem Microsoft dla programistów

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

Page 9: Nie tylko C# - Ekosystem Microsoft dla programistów

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

Page 10: Nie tylko C# - Ekosystem Microsoft dla programistów
Page 11: Nie tylko C# - Ekosystem Microsoft dla programistów

JAK TO WYGLĄDA TERAZ

Page 12: Nie tylko C# - Ekosystem Microsoft dla programistów

Co dostaniemy teraz? Framework

Page 13: Nie tylko C# - Ekosystem Microsoft dla programistów

.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

Page 14: Nie tylko C# - Ekosystem Microsoft dla programistów

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

Page 15: Nie tylko C# - Ekosystem Microsoft dla programistów

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

Page 16: Nie tylko C# - Ekosystem Microsoft dla programistów

.NET 2015, C# 6.0

Page 17: Nie tylko C# - Ekosystem Microsoft dla programistów

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

Page 18: Nie tylko C# - Ekosystem Microsoft dla programistów

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)

Page 19: Nie tylko C# - Ekosystem Microsoft dla programistów

C# 6.0 LIVE Text

Page 20: Nie tylko C# - Ekosystem Microsoft dla programistów

JAK ZROBIĆ ŻEBY ZAROBIĆ I SIĘ

NIE NAROBIĆ

Page 21: Nie tylko C# - Ekosystem Microsoft dla programistów

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

Page 22: Nie tylko C# - Ekosystem Microsoft dla programistów

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)

Page 23: Nie tylko C# - Ekosystem Microsoft dla programistów

PUŁAPKI C# LIVE

Page 24: Nie tylko C# - Ekosystem Microsoft dla programistów

Źródła informacji

• Książki (C# Illustrated, .NET Gotchas)

• StackOverflow

• MSDN

Page 25: Nie tylko C# - Ekosystem Microsoft dla programistów

Hubert Taler

Senior Software Engineer

[email protected]

Thank

you!