To grunde til at Microsoft nu frigiver .Net som open source

29. juni 2016 kl. 13:3111
Microsoft har nu frigivet version 1.0 af .Net Core og ASP.Net Core og bringer dermed udviklersiden på linje med den kommercielle softwareforretning.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

Microsofts applikationsplatform og framework .Net er nu klar i den første officielle open source-udgave.

Det betyder, at .Net-platformen kan installeres på blandt andet Linux og Mac OS X og i princippet kan bruges til at udvikle applikationer, der kan afvikles på andre styresystemer end Microsofts Windows.

Det er da også den primære grund til, at det er interessant for Microsoft at gøre .Net til open source.

Microsoft har på det seneste har givet slip på princippet om, at for eksempel Windows og Office skulle hjælpe hinanden, så Office var en eksklusiv applikation på Windows Phone. Nu findes Office til både Android og iOS.

Artiklen fortsætter efter annoncen

Dermed forventer Microsoft at kunne styrke Office over for potentielle konkurrenter, som kunne udnytte Offices fravær på andre populære styresystemer til at undergrave Offices dominans.

Omvendt er Windows også mindre truet af andre styresystemer, med mindre der dukker et populært Office-alternativ op til eksempelvis Mac OS X 10, som ikke findes til Windows.

Forhindrer at udviklingen smutter over på andre platforme

Det er samme princip, der ligger bag åbningen af .Net Core. Microsoft styrker applikationsudvikling på .Net og i Windows ved at forhindre, at udviklingen i stedet foregår på platforme, der kun findes til eksempelvis Linux.

Linux er mere populært end Windows til servere, og Microsoft kan næppe vende den udvikling. Det samme gælder det Linux-baserede Android. Åbningen af .Net beskytter altså Windows ved at give mulighed for at udvikle applikationer på Windows, som kan køre på mange platforme.

Artiklen fortsætter efter annoncen

Det er også værd at bemærke, at Microsoft har frigivet en version til Docker-containere. Der er altså tale om en platform beregnet til en virkelighed, hvor cloud og spredning over styresystemer dominerer, snarere end fortidens Windows-dominerede verden.

Der er flere ting, man skal bemærke ved .Net Core. Selvom der er tale om version 1.0, så er det ikke ensbetydende med en komplet udgave af hele .Net-frameworket fra Windows.

Eksempelvis er applikationsmodellen WPF ikke understøttet af .Net Core. Det vil sige, at man ikke kan tage en ældre Windows-applikation bygget efter WPF og afvikle den på Linux med .Net Core.

WPF benytter visse Windows-teknologier så som DirectX, der ikke er en del af .Net Core. Det er dog ikke længere Microsofts anbefaling at udvikle nye applikationer efter WPF.

Artiklen fortsætter efter annoncen

Det er således den nye udgave af .Net-platformen, som også er kendt fra Microsofts Windows Universal Apps. Derfor er det heller ikke alle API'er fra .Net-universet, der er med, men kun dem fra .Net Standard Library.

Understøtter alene C

Lige nu er det også kun programmeringssproget C#, der er understøttet. Visual Basic og F# er dog på vej i .Net Core version 1.1, der er sat til at blive frigivet inden årets udgang.

Selvom der er tale om en platform, der kører på tværs af flere styresystemer, så er der stadig visse dele, der er specifikke for de enkelte styresystemer. Det er dog 90 procent, der er ens.

Det betyder, at indmaden i den underliggende platforme er lidt forskellig på de forskellige styresystemer, fordi der eksempelvis er en registreringsdatabase i Windows, men ikke i Unix.

Den anden del af Microsofts åbning af platformen er ASP.Net Core, som først og fremmest skal give udviklerne værktøjer til at udnytte Microsofts Azure-cloudtjenester til at udvikle eksempelvis webapplikationer.

Den manglende brik lige nu for udviklere kan være Microsofts fuldblods-IDE, Visual Studio, som stadig kun findes til Windows. Microsoft har ganske vist frigivet Visual Studio Code til andre styresystemer, men det er en noget mere simpel editor end Visual Studio.

Hvis man til gengæld udvikler på Windows-platformen får man nu bedre mulighed for at bruge C# og det meste af .Net-platformen til applikationer, der skal kunne afvikles på andre styresystemer.

11 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
11
30. juni 2016 kl. 15:28

begge er afhængige af et mellemlag (IL og JVM) som både reducere performance men også kræver en del mere ressourcer af serveren end compiled static binaries.

Mellemlag i sig selv er ikke nødvendigvis ressourcekrævende. Ressourceforbruget for .NET og JVM skyldes mere, at de understøtter en masse dynamisk snask såsom reflection, som per default kan forekomme hvor som helst. En virtuel maskine, som gennem f.eks. et statisk typesystem kan udelukke dynamisk opførsel og dynamiske test, kan sagtens være ressourcevenlig på køretid.

Alternativt en lavniveau virtuel maskine, som ikke kan garantere mod usikker opførsel, men antager, at de compilere, der har genereret koden, ikke laver snask. Med en sådan vil du dog næppe køre kode fra usikre kilder.

10
30. juni 2016 kl. 13:16

Problemmet er bare at både Ms .Net core og dens nærmeste udforder Java. begge er afhængige af et mellemlag (IL og JVM) som både reducere performance men også kræver en del mere ressourcer af serveren end compiled static binaries.

Det er ikke korrekt, at VM-baserede sprog generelt er langsommere end Go; se fx The Computer Language Benchmarks Game . Det har også under alle omstændigheder kun betydning for beregningstunge applikationer, for sprogets performance gør ikke den store forskel, hvis man alligevel venter på I/O.

Men ja, VM'erne bruger normalt mere hukommelse end native binaries. Om det er et problem og om det i givet fald opvejes af de fordele, som det giver at køre på en VM, er afhængigt af scenariet, man arbejder med.

9
30. juni 2016 kl. 12:07

.net core er faktisk bare en vidreudvikling af mono samarbejdet. Men .Net Core er mest målrettet imod Cloud services (derfor ingen WPF). Mere specific så har microsoft brug for en .net version som kan køres i Docker containers ders er linux/amd64.

Problemmet er bare at både Ms .Net core og dens nærmeste udforder Java. begge er afhængige af et mellemlag (IL og JVM) som både reducere performance men også kræver en del mere ressourcer af serveren end compiled static binaries.

Så i forbindelse med Cloud løsninger vil jeg foreslå google "Go" is sted for.

7
30. juni 2016 kl. 10:03

Mono er en open-source implementering af .NET til bl.a. Linux og MacOS, og de fleste biblioteksfunktioner til .NET er implementeret i MONO. F.eks. er der understøttele af F# bibliotekterne.

Hvilken fordel vil man på Linux have ved at bruge Microsofts open-source udgave af .NET frem for Mono, specielt hvis man vil bruge F#?

6
29. juni 2016 kl. 18:20

Mig bekendt er desktop delen af .net ikke med i Linux versionen af .net, og det er nok også derfor at WPF ikke er med da WPF er designet til desktop programmer. Personligt ville det da være godt hvis også desktop delen endte i Linux versionen, således at man også kan lave almindelige programmer i .net til Linux, men det er nok mere ønsketænkning.

5
29. juni 2016 kl. 17:20

Det ligner en journalistisk stramning at Microsoft ikke længere anbefaler at man anvender WPF. Det eksisterende .NET framework ophører ikke med at eksistere blot fordi der nu kommer et nyt krydsplatform framework som er målrettet mod udvikling af services (herunder websites) og konsol-applikationer, og WPF er den teknologi Microsoft tilbyder til at udvikle "fulde" Windows applikationer både på Windows 10, men også på ældre versioner af Windows.

Det er rigtigt at man kan udvikle UWP-applikationer med .NET Core, men UWP kræver stadig Windows. For krydsplatformsapplikationer er der Xamarin.Forms som også kan køre på .NET Core og som giver mulighed for at lave apps til fx iOS, Android og også UWP.

Hvis man skal drage en parallel kan UWP apps sammenligned med iOS apps med den forskel at de kan afvikles på Windows 10 (iOS apps kan ikke afvikles på MacOS). Og for at fortsætte parallellen så kan WPF sammenlignes med Cocoa på MacOS.

4
29. juni 2016 kl. 15:14

Men i praksis: Ikke alle API'er er med ovre. Dvs. programmerne kan ikke flyttes alligevel medmindre man fra første dag aktivt tester på andre platforme.

De frigiver det som open source. Ved ikke hvilke restriktioner der er på det, men det giver jo communities mulighed for at lave en platform med niveau.

Det vil især være i Amazons interesse at smide resourcer efter en stærk Linux implementation hvis de så kan trække cloud kunder fra Azure.

2
29. juni 2016 kl. 14:43

Det kan lidt tyde på samme strategi, som da de i sin tid havde med at bastardisere .NET: At give dem, der vælger .NET et kort de kan melde ud til dem, der er bekymrede for vendor lock-in: Nej, .NET kan køre på aldre platforme også.

Men i praksis: Ikke alle API'er er med ovre. Dvs. programmerne kan ikke flyttes alligevel medmindre man fra første dag aktivt tester på andre platforme.

Og når, udviklerne kun sidder på Windows, som åbentbart er Microsofts plan: Det endelige produkt kører simpelthen ikke så godt på de andre platforme. For at andre platforme er understøttede, skal udviklerne i det daglige også arbejde på disse, ellers kommer der for mange "hovsaer" til sidst under releasetest. Og så bliver de ikke rettet - det er for dyrt så sent i processen. Typisk må man også klare sig med dårligere performance på andre platforme, da udviklerne ikke lige får kigget på optimeringer på andre platforme end sin egen.

Alt i alt: Klog stategi fra Microsoft.

1
29. juni 2016 kl. 13:46

WPF benytter visse Windows-teknologier så som DirectX, der ikke er en del af .Net Core. Det er dog ikke længere Microsofts anbefaling at udvikle nye applikationer efter WPF.

Hvis Microsoft ikke anbefaler WPF hvad anbefaler de så?