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

Illustration:
Microsoft har nu frigivet version 1.0 af .Net Core og ASP.Net Core og bringer dermed udviklersiden på linje med den kommercielle softwareforretning.

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.

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.

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.

Læs også: Microsoft open sourcer endnu mere .NET

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.

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.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (11)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Jørn Wildt

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å?

  • 1
  • 0
#2 Esben Nielsen

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.

  • 0
  • 3
#4 Martin Kristiansen

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.

  • 0
  • 1
#5 Martin Liversage

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
  • 0
#6 Ivo Santos

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.

  • 1
  • 0
#7 Torben Mogensen Blogger

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#?

  • 1
  • 0
#8 Jonas Høgh

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#?

Til de fleste opgaver vil Mono nok være mere egnet end .Net core i de kommende år. Men på længere sigt vil samarbejdet mellem MS og de eksiterende Mono bidragsydere forhåbenligt betyde, at core bliver både mere kompatibelt og feature-komplet end Mono har været.

  • 2
  • 0
#9 Jan Petersen

.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.

  • 0
  • 1
#10 Mikkel Lauritsen

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.

  • 2
  • 0
#11 Torben Mogensen Blogger

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.

  • 1
  • 0
Log ind eller Opret konto for at kommentere