kompetanseguiden
Hva er .Net?
Hva er .Net – og hvor kan du lære det? I denne artikkelen får du en rask introduksjon til hva .Net er og hvordan det brukes, mens du i verktøyet øverst kan finne ut hvor og hvordan du kan lære det – basert på dine egne kriterier for læringen.
Tilbake til kompetanseguidens hovedside
.Net er en utviklingsplattform fra Microsoft, som blant annet inneholder rammeverkene .Net og .Net Core, og er nært knyttet til språk som C#, F# og Visual Basic.
Vi har bedt Marit Hellestø, som er utvikler og fagansvarlig i Knowit Experience, og Dean Von Schoultz, ansatt i Noroff Accelerate og foreleser for Experis Academy, om å fortelle litt mer om .Net.
Hva er det overordnede bruksområdet for .Net i 2020?Hellestø:
.Net er et veldig vidt begrep. Noen tenker på språkene C#, VB eller F#, og noen tenker på .Net Framework. For min del tenker jeg som regel på .Net Core når jeg hører .Net, et rammeverk som passer veldig fint til backend-tjenester av forskjellig slag – om det er en mikroservice som spinner i skyen, eller om det er backend til en CMS.
Von Schoultz:
.Net er en plattform for flere utviklingsrammeverk. Nemlig .Net, .Net Core og Xamarin. Det støtter språk som C#, F# og Visual Basic. Med dette kan applikasjoner skrives for blant annet web, desktop, gaming, mobil og maskinlæring. Det brukes i stor utstrekning for forretningsapplikasjoner på Windows.
Likevel innebærer lanseringen av .Net Core i 2016 en administrert versjon av .Net med åpen kildekode, som kan brukes på tvers av flere plattformer, flere utviklingsalternativer og større applikasjonsrekkevidde for .Net-utviklere.
Hva er fordelen med .Net?Hellestø:Man blir tilbudt mye funksjonalitet. Mellom Azure, .Net Framework og .Net Core kan man utvikle skikkelig avanserte systemer. I min erfaring programmerer man ofte i C#, som er et behagelig språk. Nå når .Net Core har blitt mer stabilt, har man også mulighet til å utvikle i et rammeverk som er mer fleksibelt og enklere å oppdatere enn tidligere .Net-rammeverk.
Von Schoultz:
En av de iøynefallende egenskapene til .Net er at det styres av Microsoft, en gigantisk organisasjon. Dette er i seg selv attraktivt av flere grunner.
For det første har virksomheter en tendens til å bruke teknologi med god og offisiell støtte. Dette betyr at .Net-applikasjoner sannsynligvis vil eksistere i lang tid, og man vil ikke kaste bort tid når man lærer seg å arbeide med rammeverket.
For det andre er støtten og dokumentasjonen sentralisert. Microsoft har utmerket dokumentasjon og sporer problemer på en klar og effektiv måte. Dette betyr at det er enklere å holde tritt med rammeverket enn med andre språk og rammeverk med åpen kildekode.
For det tredje har det å ha én virksomhet som støtter et utviklingsrammeverk ført til mange funksjoner for fininnstilling og livskvalitet som bidrar til en reduksjon i utviklingstid.
Lanseringen av .Net Core åpnet opp .Net for mer utvikling på tvers av plattformer. Dessuten har Microsoft i økende grad blitt mer åpen for å ta i bruk biblioteker med åpen kildekode. Dette innebærer kanskje at .Net blir tatt i bruk i større utstrekning i fremtiden.
Det vanlige .Net-basebiblioteket (.Net-standarden) betyr at .Net-funksjoner er språkuavhengige. Dette betyr at flere språk kan brukes til å bygge applikasjoner i .Net, samtidig som man fremdeles har tilgang til vanlige programmeringsfunksjoner for å gjøre utviklingslivssykluser enklere. Denne gjenbruken av koder er utrolig attraktiv for utviklere.
.Net er basert på objektorientert programmering, som er designet for å være en mer intuitiv måte å samhandle og skrive koder på. Dette er spesielt relevant og nyttig ut fra et pedagogisk perspektiv. Visual Studio er flaggskipet for integrert utviklingsmiljø for .Net, og er godt raffinert og etablert. Det å ha tilgang til et sofistikert, eller i det minste et stabilt, utviklingsmiljø er helt avgjørende. Spesielt for nye utviklere.
Det å investere tid og energi i å lære seg rammeverket vil svært sannsynlig være en god investering
Enkel distribusjon og vedlikehold. .Net tilbyr flere verktøy for kontinuerlig integrasjon og distribusjon. Det omfavner også viktig teknologi for eksterne utviklere, slik som Git og Docker. En annen fordel er Microsofts økte integrasjon med teknologi med åpen kildekode.
.Net har et stort og stadig voksende samfunn. .Net brukes i stor utstrekning blant erfarne utviklere, som tilbyr et stort nettverk av fagfeller. .Net er godt etablert og derfor pålitelig og stabilt. Det å investere tid og energi i å lære seg rammeverket vil svært sannsynlig være en god investering.
Hva er ulempene eller begrensningene?Hellestø:
I eldre .Net-prosjekter treffer man gjerne rammeverk som kan være tidkrevende og vanskelig å vedlikeholde. I tillegg så har man ofte en tendens til å ta i bruk alt .Net har å tilby, slik at man havner i en .Net-boble, i stedet for å plukke litt fra overalt, som for så vidt kan være både positivt og negativt.
Von Schoultz:
En av de uheldige ulempene ved å gjøre utvikling enklere gjennom verktøy og funksjoner, er at det kan skape scenarioer der utviklere bruker kraftige rutinerammeverk for å støtte opp eller generere koder som de ikke forstår fullt ut. Dette kan føre til virkelige problemer senere i
programvareutviklingen og distribusjonslivssyklusen.
Det å knytte seg til .Net innebærer at leverandører låser seg. Det levnes lite eller ikke noe rom for å bruke tjenester og support utenom det som tilbys av Microsoft. Dette fører til kostnader knyttet til lisensiering, ressurser og support.
.Nets nylige lansering og betydelige promotering av .Net Core vil sannsynligvis tvinge programvareingeniører til å flytte tidligere .Net-basert programvare til .Net Core. Rammeverkflytting kan ta tid og være dyrt dersom det ikke gjøres korrekt.
Hva er typisk for .Net, og hvilke teknologier brukes vanligvis for å oppnå det?Hellestø:
Man kan utvikle det meste, men det kommer godt til rette som ved utvikling av mer backend-tjenester, og gjerne i bruk sammen med Azure skytjenester.
Von Schoultz:
.Net brukes ofte i nettbaserte tjenester og skrivebordsprogramvare, i tillegg til skybasert support.
ASP.Net og ASP.Net Core tilbyr nettjenester i form av nettapplikasjoner/nettsteder og web-API-er. Windows Forms, WPF og UWP tilbyr alternativene for skrivebordsprogramvare.
Datapersistens, kontinuerlig integrasjon og vertskap for disse applikasjonene støttes deretter av Azures mange skytjenester.
Hva er velkjente eksempler på populære programmer, nettsteder eller funksjoner som er utviklet med .Net?Hellestø:Stackoverflow, Identityserver, Azure, Episerver, Umbraco, Fjordkraft +++
Von Schoultz:
Det å ha et rikt og variert utvalg av utviklingsalternativer under én autoritet gjør .Net spesielt attraktivt blant virksomheter. På grunn av dette er mange av de monolittiske programvareapplikasjonene eller tjenestene som er bygd inn i .NET, ikke åpne for allmennheten.
Likevel er Visual Studio, Skype, Internet Explorer, MS Office, Colectica og Pinta eksempler på populære programmer som er utviklet eller skrevet i C# eller C++, og noe av dette er bygd på .Net.
.Nets nylige anskaffelse av Xamarin for mobilutvikling på tvers av plattformer, demonstrerer enkelte populære applikasjoner som Vanderlane og OLO.
Hvilke teknologier eller verktøy er det viktig å mestre for å utnytte potensialet i .Net? Hellestø:
Et spørsmål som er avhengig av hvilke av .Net-rammeverkene man bruker, for eldre applikasjoner kan man være ganske låst inn mot å bruke Visual Studio, men med .Net Core, f.eks., kan man jobbe i mye mer lettvektsverktøy som Visual Studio Code eller Jetbrains Rider.
Ikke overraskende er det lett å pushe .Net-prosjekter ut i Azure, gjerne fra Azure Devops, om man vil gjøre det ekstra lettvint.
Von Schoultz:Det avhenger virkelig av typen av applikasjon eller programvare man forsøker å utvikle. Det korte Fullstack-kurset som vi arrangerer, fokuserer først og fremst på webapplikasjoner. Spesifikt bruken av C# med ASP.Net Core. Innenfor dette området vil teknologiene og forståelsen av dem som er avgjørende for å kunne dra nytte av .Net, være:
- OOP i C#
- Entity Framework
- Restful Web APIs
- ASP.Net Core MVC
Hva er vanskelighetsnivået og læringskurven? Hvilke forkunnskaper er det en eventuelt en fordel å ha?Hellestø:
Læringskurven er egentlig ganske lav så lenge man har litt forståelse for OO. Det tar ikke lang tid før man kan de grunnleggende konseptene og kan være produktiv i C#. I tillegg så er det veldig mye utover det grunnleggende som gjør at det også passer for de mer viderekomne.
Von Schoultz:
Den abstrakte eller laterale tenkningen som programmering krever, kan være det mest utfordrende aspektet. Dersom noen har en tilbøyelighet til dette, er programmering utrolig tilfredsstillende, og den kreative logikken som kreves, kan være svært meningsfull. Dette gjør etter min mening programmerings-pedagogikk rik, lagdelt og fascinerende.
Når vi ser bort fra elementær programmering, har ikke .Net en spesielt bratt læringskurve. Samfunnet er stort, noe som innebærer tonnevis med støtte og gode online-ressurser. En person med teknisk bakgrunn eller en eller annen form for erfaring med programmering kan definitivt begynne å dra nytte av .Net på en betydelig måte i løpet av bare noen få uker.
Likevel er det viktig at de forstår hvor grensene går for hva .Net gjør for en utvikler, og hvilke aspekter som krever input fra eksperter eller videre erfaring før man kan bruke det i et virkelig forretningsscenario. .Net er enkelt å navigere, men krever et helt liv å utforske.
Kan du si noe om utviklingen og forhistorien til .Net? Hellestø:
Har ikke jobbet så mye selv i eldre versjoner av rammeverkene som tilbys under paraplyen .Net, men vet at man tradisjonelt sett har vært veldig opptatt av tilbakekompabilitet. I .Net Core har man kastet dette mindsettet til en viss grad på sjøen, og går heller nå for å pushe utviklingen fremover med å ikke nødvendigvis være alltid tilbakekompatibel. Som er gøy om man ønsker å jobbe med det siste nye.
Von Schoultz:.Net har en innholdsrik og interessant historie. Uten å gå inn på unødvendige detaljer, er .Net fundamentalt sett basert på å løse tre ambisiøse og interessante problemer som Microsoft sto overfor på midten og slutten av 1990-tallet.
På den tiden var internett virkelig i ferd med å vinne innpass i verden, spredningen økte stadig raskere, og PC-er var umulige å unngå. Disse problemene skrev seg fra flere juridiske problemer under den offisielle monopoliseringen av Windows.
Det første var kjøretidsproblemet. Microsoft hadde utviklet flere programmeringsspråk som for det meste hadde sin egen kjøretidsstruktur. Disse måtte samordnes slik at de delte en
kjøretid.
Det andre problemet var å utvikle en grunnleggende klasse av biblioteker som også kunne brukes på tvers av programmene.
Det tredje problemet var å bringe objektorientert programmering til webutvikling.
Forsøket på å løse disse problemene dannet grunnlaget for .Net slik vi kjenner det i dag. .Net Common Language Runtime, .Net-standarden og ASP.Net ble etablert i forsøket på å løse disse problemene.
Hvilke råd kan du gi til en som ønsker å lære seg .Net?Hellestø:
Prøv ut all the things. Og ikke vær for biased når du tenker på Microsoft-teknologier. Mye gøy man kan leke seg med i .Net-verdenen, fra .Net Core til skytjenester og Azure functions.
Von Schoultz:
Finn noen som har erfaring med .Net som du kan ha en samtale med. Når en som ikke er fortrolig med rammeverket går på nett for å prøve å finne ut hvor man skal starte, fører det ofte til mer forvirring.
Det finnes så mange nettbaserte ressurser for .Net at det kan være overveldende. Etter min mening kan man i en samtale få noen med erfaring til å gi en det riktige rådet for å sette ens alternativer i kontekst. Spesielt siden .Net tilbyr så mange alternativer.
Alternativer for spill, mobilapper, skrivebordsapper og nettbaserte apper på flere språk kan gjøre det vanskelig å avgjøre hvor man skal starte. Dersom det ikke er et alternativ, kan man vurdere korte kurs eller følge kanaler for opplæring av utviklere.