SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Egy .NET fejlesztő élete a Node.js világában
Balássy György
ASP.NET/IIS MVP, ASPInsider
balassy.gyorgy@outlook.com
Blog: http://balassygyorgy.wordpress.com
2
.NET alapokon
Szeretjük
Sikeres szolgáltatások
3
Nem technológiai okokból
Nem ismerjük
Egyik új projektünknél
4
Nem technológiai okból
5
Nem technológiai okból
6
Programozási nyelv
7
C# JavaScript
CoffeeScript
TypeScript
* to JavaScript
8
Karbantartható kódbázis
9
Osztályok, szerelvények
Tervezési minták
Dokumentáció
Nagyvállalati architektúra
Modulok, csomagok
Mindent lehet
Forráskód
Mikroszerviz architektúra
10
Verziókezelő rendszer
11
TFS
Kliens-szerver
Exclusive checkout
Visual Studio integráció
Git (Stash)
DVCS
Gitflow workflow
Pull requests
Open source repo
12
Feladat futtatás
13
MSBuild
IDE varázslat
Deklaratív
Gulp
Manuális
Futtatható kód
Aktív közösség, sok csomag
14
Tesztelés
15
MSTest, MS Fakes
Teljes IDE támogatás
Mindenféle teszthez
Azure-ban igen, máshol?
Mocha + Istanbul + Sinon
Önálló megoldások,
akár együtt is működésre
bírhatók
16
Csomagkezelés
17
NuGet
40.332 csomag
Eredet?
NPM
172.042 csomag
Github
Node Security Project
18
Fejlesztőeszköz
19
Visual Studio
Mindent egy helyről
Kiváló debug
Node.js Tools for VS
WebStorm
Webhez egészen jó
Van debug
Beépített támogatás
20
Tényleg kell teljes IDE?
21
Visual Studio Code
IntelliSense (.tsd-ből is)
Git
Debug
Task runner
SublimeText,
Brackets,
Notepad++
Syntax highlighting
Pattern matching
Find in files
22
23
Statikus kódelemzés
24
FxCop
IDE támogatás
Build része
Roslyn
JSLint, JSHint, ESLint
WebStorm alkalmazza
Gulp task
Közös szabálykészlet
25
Build szerver
26
TFS, Visual Studio Online
Teljes ALM szolgáltatás
.NET-re kiváló
TeamCity
Csak build
Nagyon rugalmas (Gulp)
Gitflow workflow
Docker
27
Adatbázis
28
MS SQL Server, MySQL
Kényelmes, gyors
Elérhető as a service
Sok tapasztalat
Cassandra, Couchbase,
DynamoDB
Eventual consistency
Hosszabb fejlesztési idő
29
Melyik a jobb?
30
Van-e jobb?
31
Van-e bármi Node.js-ben, amit
.NET-ben nem tudnánk megoldani?
32
Balássy György
E-mail: balassy.gyorgy@outlook.com
Blog: http://balassygyorgy.wordpress.com
Twitter: http://twitter.com/gyorgybalassy
http://slideshare.net/balassy

Weitere ähnliche Inhalte

Andere mochten auch

Docker Budapest meetup 2016.02.09.
Docker Budapest meetup 2016.02.09.Docker Budapest meetup 2016.02.09.
Docker Budapest meetup 2016.02.09.Zsolt Molnar
 
That’s not your var – JavaScript best practices for C# developers
That’s not your var – JavaScript best practices for C# developersThat’s not your var – JavaScript best practices for C# developers
That’s not your var – JavaScript best practices for C# developersGyörgy Balássy
 
Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethica...
Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethica...Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethica...
Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethica...György Balássy
 
Enterprise Developer Meetup bevezető (2015.01.28.)
Enterprise Developer Meetup bevezető (2015.01.28.)Enterprise Developer Meetup bevezető (2015.01.28.)
Enterprise Developer Meetup bevezető (2015.01.28.)György Balássy
 
IIS 7.5 webszerver újdonságok
IIS 7.5 webszerver újdonságokIIS 7.5 webszerver újdonságok
IIS 7.5 webszerver újdonságokGyörgy Balássy
 
TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?
TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?
TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?György Balássy
 
Prototípus-fejlesztés 3D nyomtatással (Balássy György és Takács Péter)
Prototípus-fejlesztés 3D nyomtatással (Balássy György és Takács Péter)Prototípus-fejlesztés 3D nyomtatással (Balássy György és Takács Péter)
Prototípus-fejlesztés 3D nyomtatással (Balássy György és Takács Péter)György Balássy
 
Docker: automation for the rest of us
Docker: automation for the rest of usDocker: automation for the rest of us
Docker: automation for the rest of usJérôme Petazzoni
 
Orchestration for the rest of us
Orchestration for the rest of usOrchestration for the rest of us
Orchestration for the rest of usJérôme Petazzoni
 
Docker networking basics & coupling with Software Defined Networks
Docker networking basics & coupling with Software Defined NetworksDocker networking basics & coupling with Software Defined Networks
Docker networking basics & coupling with Software Defined NetworksAdrien Blind
 

Andere mochten auch (16)

Docker Budapest meetup 2016.02.09.
Docker Budapest meetup 2016.02.09.Docker Budapest meetup 2016.02.09.
Docker Budapest meetup 2016.02.09.
 
ASP.NET Server Core-on
ASP.NET Server Core-onASP.NET Server Core-on
ASP.NET Server Core-on
 
That’s not your var – JavaScript best practices for C# developers
That’s not your var – JavaScript best practices for C# developersThat’s not your var – JavaScript best practices for C# developers
That’s not your var – JavaScript best practices for C# developers
 
TypeScript Today
TypeScript TodayTypeScript Today
TypeScript Today
 
Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethica...
Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethica...Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethica...
Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethica...
 
.NOT, avagy .NET vNext
.NOT, avagy .NET vNext.NOT, avagy .NET vNext
.NOT, avagy .NET vNext
 
TIAD 2016 : IBM Blockchain Point of view
TIAD 2016 : IBM Blockchain Point of viewTIAD 2016 : IBM Blockchain Point of view
TIAD 2016 : IBM Blockchain Point of view
 
TIAD 2016 - Beyond windowsautomation
TIAD 2016 - Beyond windowsautomation TIAD 2016 - Beyond windowsautomation
TIAD 2016 - Beyond windowsautomation
 
Tiad - Docker: Automation for the rest of us
Tiad - Docker: Automation for the rest of usTiad - Docker: Automation for the rest of us
Tiad - Docker: Automation for the rest of us
 
Enterprise Developer Meetup bevezető (2015.01.28.)
Enterprise Developer Meetup bevezető (2015.01.28.)Enterprise Developer Meetup bevezető (2015.01.28.)
Enterprise Developer Meetup bevezető (2015.01.28.)
 
IIS 7.5 webszerver újdonságok
IIS 7.5 webszerver újdonságokIIS 7.5 webszerver újdonságok
IIS 7.5 webszerver újdonságok
 
TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?
TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?
TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?
 
Prototípus-fejlesztés 3D nyomtatással (Balássy György és Takács Péter)
Prototípus-fejlesztés 3D nyomtatással (Balássy György és Takács Péter)Prototípus-fejlesztés 3D nyomtatással (Balássy György és Takács Péter)
Prototípus-fejlesztés 3D nyomtatással (Balássy György és Takács Péter)
 
Docker: automation for the rest of us
Docker: automation for the rest of usDocker: automation for the rest of us
Docker: automation for the rest of us
 
Orchestration for the rest of us
Orchestration for the rest of usOrchestration for the rest of us
Orchestration for the rest of us
 
Docker networking basics & coupling with Software Defined Networks
Docker networking basics & coupling with Software Defined NetworksDocker networking basics & coupling with Software Defined Networks
Docker networking basics & coupling with Software Defined Networks
 

Ähnlich wie Egy .NET fejlesztő élete a Node.js világában

Life and Death of Apache Maven (HU)
Life and Death of Apache Maven (HU)Life and Death of Apache Maven (HU)
Life and Death of Apache Maven (HU)Tamas Cservenak
 
BME - Szakdolgozat (2014)
BME - Szakdolgozat (2014)BME - Szakdolgozat (2014)
BME - Szakdolgozat (2014)Csaba Szabó
 
Virtuális Platformváltás validált környezetben
Virtuális Platformváltás validált környezetbenVirtuális Platformváltás validált környezetben
Virtuális Platformváltás validált környezetbengazdagf
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenKrisztián Gyula Tóth
 
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...Gáspár Nagy
 
[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia UniversityZoltan Iszlai
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztésOpen Academy
 
Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddalthesnufkin
 
Mágikus Magento - Bevezetés a Magento világába
Mágikus Magento - Bevezetés a Magento világábaMágikus Magento - Bevezetés a Magento világába
Mágikus Magento - Bevezetés a Magento világábaJános Ács
 
Gitflow vs. Trunk based development
Gitflow vs. Trunk based development Gitflow vs. Trunk based development
Gitflow vs. Trunk based development István Marhefka
 
Kotlin Multiplatform: Ilyen minek van?
Kotlin Multiplatform: Ilyen minek van?Kotlin Multiplatform: Ilyen minek van?
Kotlin Multiplatform: Ilyen minek van?Mito
 
Univerzalis Entitas Kezeles - Laravel
Univerzalis Entitas Kezeles - LaravelUniverzalis Entitas Kezeles - Laravel
Univerzalis Entitas Kezeles - LaravelPeter Perger
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Attila Balogh-Biró
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Attila Balogh-Biró
 
StreamProxy - University of Pannonia
StreamProxy - University of PannoniaStreamProxy - University of Pannonia
StreamProxy - University of PannoniaBálint Szekeres
 
HTML5 esettanulmányok
HTML5 esettanulmányokHTML5 esettanulmányok
HTML5 esettanulmányokZoltán Dávid
 
Tóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelTóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelInformatikai Intézet
 

Ähnlich wie Egy .NET fejlesztő élete a Node.js világában (20)

Life and Death of Apache Maven (HU)
Life and Death of Apache Maven (HU)Life and Death of Apache Maven (HU)
Life and Death of Apache Maven (HU)
 
BME - Szakdolgozat (2014)
BME - Szakdolgozat (2014)BME - Szakdolgozat (2014)
BME - Szakdolgozat (2014)
 
Virtuális Platformváltás validált környezetben
Virtuális Platformváltás validált környezetbenVirtuális Platformváltás validált környezetben
Virtuális Platformváltás validált környezetben
 
Szoftver tesztelés
Szoftver tesztelésSzoftver tesztelés
Szoftver tesztelés
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
 
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
 
[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
 
Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddal
 
Mágikus Magento - Bevezetés a Magento világába
Mágikus Magento - Bevezetés a Magento világábaMágikus Magento - Bevezetés a Magento világába
Mágikus Magento - Bevezetés a Magento világába
 
Gitflow vs. Trunk based development
Gitflow vs. Trunk based development Gitflow vs. Trunk based development
Gitflow vs. Trunk based development
 
Kotlin Multiplatform: Ilyen minek van?
Kotlin Multiplatform: Ilyen minek van?Kotlin Multiplatform: Ilyen minek van?
Kotlin Multiplatform: Ilyen minek van?
 
Univerzalis Entitas Kezeles - Laravel
Univerzalis Entitas Kezeles - LaravelUniverzalis Entitas Kezeles - Laravel
Univerzalis Entitas Kezeles - Laravel
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
StreamProxy - University of Pannonia
StreamProxy - University of PannoniaStreamProxy - University of Pannonia
StreamProxy - University of Pannonia
 
A Mozilla nem csak Firefox
A Mozilla nem csak FirefoxA Mozilla nem csak Firefox
A Mozilla nem csak Firefox
 
Alumni Release Process
Alumni Release ProcessAlumni Release Process
Alumni Release Process
 
HTML5 esettanulmányok
HTML5 esettanulmányokHTML5 esettanulmányok
HTML5 esettanulmányok
 
Tóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelTóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésével
 

Egy .NET fejlesztő élete a Node.js világában

Hinweis der Redaktion

  1. Sikeres felhő szolgáltatások  egyedi igények Komoly .NET-es tapasztalat Elégedettek vagyunk a .NET-tel
  2. Sikeres felhő szolgáltatások  egyedi igények Komoly .NET-es tapasztalat Elégedettek vagyunk a .NET-tel
  3. JavaScript / CoffeeScript / TypeScript: - Egyik sem C#, nagyon másfajta gondolkodást igényel - Bonyolítják a build folyamatot (transpiler) - Van-e hozzájuk IDE támogatás
  4. Hogyan strukturáljuk a kódunkat, hogy karbantartható legyen?
  5. Class  module: - Elkezdtünk osztályokat definiálni, mikor a legtöbb esetben nincs rájuk szükség (vs WebAPI data access) - Szinte csak statikus tagokkal dolgozunk, kevés állapotot tárol a kód Tervezési minták - Gyakorlatilag nincsenek - Vannak tipikus "fordulatok", például callback, promise Dokumentáció - README - Lehetne JSDoc, de szinte egyáltalán nem használatos Microservice architektúra - Teljesítmény okokból is jó - Kisebb kódbázis - Jobb egységbe zárás - Önállóan tesztelhető, telepíthető - Számos probléma - Elosztott tranzakciók, inkonzisztens adatok - Függőségek, service availability - Release management, enterprise readiness
  6. Változáskezelés a forráskódban
  7. DVCS modell: - Van olyan csapat, amelyik most állt át Perforce-ról, vagy TFS-ről  nagyon új - A VS Git támogatása nem az igazi, nem tud mindent és a a GUI-n könnyű eltévedni Gitflow workflow: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow/ Pull requests - Automatikusan fordul és tesztelődik minden feature branch Code Review nélkül nem lehet merge-elni Akár más csapatok kódjába is (lehetőleg ne CoffeeScriptben vagy GO-ban legyen)
  8. MSBuild - IDE támogatás - Nem is kell közvetlenül írni - Nem is látjuk - Nem is értjük? (Ki tudja, mi az az MSBuild task? És ki írt már ilyet?) Gulp / Grunt - Kizárólag kézi munkával készül - IDE legfeljebb futtatni tudja - Könnyű futtatni bármilyen OS-en közvetlenül - Aktív közösség, sok csomag
  9. MSTest, MS Fakes - IDE támogatás - Unit, web test, load test - Felhő támogatás? Mocha, Istanbul, Sinon - Melyiket válasszuk? - Önálló package-ek, amik akár együtt is képesek működni
  10. Közös kérdések - Hol a forráskód, ki írta, ki használja, mennyire aktív? - Mennyire bízhatok meg benne? - Van-e benne security bug? És abban, amire hivatkozik?
  11. Artifactory
  12. Visual Studio - Mindent egyetlen eszközből - Mit használunk belőle? - Lassú - Kiváló debug támogatás NodeJS Tools for Visual Studio (NTVS) - Project fájl alapú - Még 1.0 verzió előtt próbáltuk Most már van benne TS, NPM, profiling és test framework támogatás is WebStorm - Teljesen más gyorsbillentyűk, mint VS-ben, nehéz volt megszokni - JS-hez jobb IntelliSense (VS csak biztosra megy, WebStorm többet felkínál) - Debug támogatás
  13. Nem elég egy editor? A Node.js fejlesztők tipikusan nem IDE-t, hanem editort használnak (SublimeText, Brackets) Tipikusan nyitva egyszerre: parancssor (gulp), WebStorm, Git Extensions, böngésző (Jira, Stash), MySQL Workbench
  14. VSCode - Lightos, nem IDE, hanem editor - Keveset tud, de azt nagyon jól, pedig még csak preview - IntelliSense (akár TS-ből is) - Git - Debugging - Task runner
  15. FxCop - IDE támogatás - Könnyen beépíthető a build folyamatba JSLint, JSHint, ESLint - Melyiket válasszuk? (Van TSLint és CoffeeLint is) - Minden team ugyanazt használja - Közös szabálykészlet kialakítása
  16. Igények - Rugalmasság (sokféle technológia) - Integráció más eszközeinkkel (Stash)
  17. TFS, VS Online - Teljes körű szolgáltatás egyetlen felületen: bug tracking, builds, deployment - Nagyon jó .NET-es projektekre TeamCity - Nehezebb megérteni - Nagyon rugalmas - Gulp taskokat is - Minden feature branchet fordítunk azonnal, Docker image-et építünk, futtatjuk a teszteket, szükség esetén telepítjük a Docker image-et több környezetbe, Git tag - Sajnos Jira-val nem integrálódik
  18. Kérdések - Sebesség - Adatmennyiség - Geo-redundancia Konzisztencia Önkiszolgáló üzemeltetés (DevOps)
  19. Microsoft SQL Server, MySQL - Nagyon kényelmes, gyors - Aktívan használjuk is Cassandra, Couchbase, DynamoDB - Próbálkozás a NoSQL világában - Valószínűleg teljesítmény és adatméret miatt hosszú távon indokolt lehet - Eventual consistency-re kell tervezni (redundáns adattárolás, dirty read) - Hosszabb fejlesztési idő
  20. Tanulási görbe - Gyorsan össze lehet dobni valamit minimális JavaScript ismerettel - Nincs egyetlen ijesztően nagy library -> van sok (nagyon sok) kicsi - Prototípus készítésére jó (?)