Cross-Platform Interface (Android, Windows, Linux & Mac OS)?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • RareAMV
  • Registratie: November 2012
  • Laatst online: 05-10 18:36
Met welk framework of taal is het mogelijk om een cross-platform interface te schrijven welke als native applicatie kan draaien op platformen zoals Android, Windows, Linux en Mac OS?
...

Momenteel werk ik aan een applicatie welke ik graag cross-platform wil laten draaien. Nu werk ik (op moment) met dotnet standard voor de back-end (welke als een losse library is opgezet) en een webinterface. Deze draaien binnen een electron app (ja, een dotnet back-end binnen electron, je las het goed :P ) voor desktop, en een Xamarin.Android webview app voor Android met dezelfde dotnet back-end als de desktop(Vandaar dotnet binnen electron).

Dit is voor mij nu momenteel het makkelijkst, gezien ik maar 2 code-bases heb die ik bij moet houden: een C# back-end welke als een cross-platform library opgezet is en een html/typescript/angular front-end welke d.m.v. van websockets met elkaar communiceren.

Nu is het zo dat de performance echter te wensen overlaat (bij b.v. grote lijsten), de bestandsgrote van electron belachelijk is (geinstalleerde footprint = > 200 mb) en ik het op moment een houtje touwtje verhaal vind. Daarom vroeg ik mij dus af of er andere mogelijkheden zijn om met zo'n min mogelijk verschillende code een cross-platform interface op te zetten (en het liefst binnen een .net omgeving) welke (soort van?) native kan draaien op de genoemde platformen.

...

Natuurlijk schiet Xamarin.Forms en Xamarin.Android meteen te binnen, maar naar mijn weten moeten er nog steeds twee verschillende interfaces geschreven worden voor Desktop en Android. Dit vermijd ik juist liever. Zijn er nog andere mogelijkheden? Mogelijk op C++ niveau (ik wil al een tijdje m'n back-end voor de lol overschrijven naar C++)? Java zou ook nog kunnen maar daar heb ik veel minder ervaring mee. Python is ook nog een mogelijkheid maar ik hou persoonlijk niet zo van de syntax. + Bij een andere taal moet ik alles herschrijven, wat ik ook liever vermijd.

...

Beste antwoord (via RareAMV op 19-09-2018 12:18)


  • diondokter
  • Registratie: Augustus 2011
  • Laatst online: 11:20

diondokter

Dum spiro, spero

Xamarin.Android en Xamarin.iOS zijn de Xamarin libraries voor beide platforms. Je kunt daarin dus voor dat specifieke platform een app bouwen.

Xamarin.Forms is daar weer bovenop gebouwd. Jij hoeft alleen in Forms te werken en Forms roept dan alle juiste platform api's aan. (Je kan ook zelf platform-specifieke code schrijven als dat nodig is)

Ik zou zeggen, probeer het even uit en deploy een Forms app op Android.
Tip: Wanneer je het project aanmaakt, selecteer de .Net Standard optie en niet de standaard Portable Library. Werkt veel beter IMO.

Alle reacties


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
.NET is niet bepaald een resource vriendelijk framework en cross-platform is Mono een redelijke poging.
Als ik jou was zou ik eerst daar iets anders voor kiezen.

Good read (aangezien je het over sockets en cross-platform hebt): https://blog.jonathanoliver.com/why-i-left-dot-net/

Met FLTK, Qt en wxWidgets kom je al een eind op weg (Qt ook op Android).
Zie: Wikipedia: List of widget toolkits

[ Voor 38% gewijzigd door DJMaze op 17-09-2018 12:14 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • diondokter
  • Registratie: Augustus 2011
  • Laatst online: 11:20

diondokter

Dum spiro, spero

Xamarin Forms werkt ook op Android!
Je kunt met Forms voor elk door Xamarin ondersteund platform de UI maken.

Acties:
  • 0 Henk 'm!

  • RareAMV
  • Registratie: November 2012
  • Laatst online: 05-10 18:36
diondokter schreef op maandag 17 september 2018 @ 13:58:
Xamarin Forms werkt ook op Android!
Je kunt met Forms voor elk door Xamarin ondersteund platform de UI maken.
Dat zou geweldig zijn! Wat is het verschil dan tussen Xamarin.Forms & Xamarin.Android ? Heeft dat te maken met gewoon de specifieke libraries voor de verschillende platformen maar niet zozeer met de gebruikte styling taal voor de interface? Of te wel, ondanks dat ik waarschijnlijk 2 projecten nodig heb voor Desktop & Android kan ik dan dezelfde code base gebruiken (op OS afhankelijke code na dan, zoals permissies & bestandsbeheer, etc)? Daarmee bedoel ik ook dat de interactie tussen c# en de interface voor een groot deel hetzelfde blijft over de verschillende platformen. Dus het wijzigen van een element, afbeeldignen laden en lijsten laden, etc?

Het klinkt lui, maar ik wil zo liefst mogelijk het verschil tussen de code base van de verschillende platformen zo klein mogelijk te houden zodat ik niet 2x hetzelfde hoef te realiseren voor verschillende platformen (zover dat mogelijk is natuurlijk).

Ik snap dat dit zelf te onderzoeken is trouwens, en dat zal ik ook zeker doen, maar soms is vragen sneller _/-\o_ .

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • diondokter
  • Registratie: Augustus 2011
  • Laatst online: 11:20

diondokter

Dum spiro, spero

Xamarin.Android en Xamarin.iOS zijn de Xamarin libraries voor beide platforms. Je kunt daarin dus voor dat specifieke platform een app bouwen.

Xamarin.Forms is daar weer bovenop gebouwd. Jij hoeft alleen in Forms te werken en Forms roept dan alle juiste platform api's aan. (Je kan ook zelf platform-specifieke code schrijven als dat nodig is)

Ik zou zeggen, probeer het even uit en deploy een Forms app op Android.
Tip: Wanneer je het project aanmaakt, selecteer de .Net Standard optie en niet de standaard Portable Library. Werkt veel beter IMO.

Acties:
  • 0 Henk 'm!

  • RareAMV
  • Registratie: November 2012
  • Laatst online: 05-10 18:36
DJMaze schreef op maandag 17 september 2018 @ 12:04:
.NET is niet bepaald een resource vriendelijk framework en cross-platform is Mono een redelijke poging.
Als ik jou was zou ik eerst daar iets anders voor kiezen.

Good read (aangezien je het over sockets en cross-platform hebt): https://blog.jonathanoliver.com/why-i-left-dot-net/

Met FLTK, Qt en wxWidgets kom je al een eind op weg (Qt ook op Android).
Zie: Wikipedia: List of widget toolkits
Inderdaad, interessante blog. Ik dacht dat mono overgenomen is door MS en opgenomen in Xamarin? En ik gebruik dotnet core + dotnet standard voor cross-platform libraries voor de back-end. Dus cross-platform out of the box (ik geloof overigens best dat er betere oplossingen zijn op dat gebied, ik heb lichtelijk zitten twijfelen om op nodejs over te stappen). + Ik heb een paar libraries zelf geschreven in .net standard welke ik bij een andere taal moet herschrijven (nouja, specifiek een enkele waar nog nauwelijks of geen oplossingen voor bestonden, de rest was puur leren dus die zou ik technisch gezien gewoon kunnen vervangen).

QT is inderdaad een mogelijkheid welke ik nog niet onderzocht heb, zal zeker er naar gaan kijken!

Acties:
  • 0 Henk 'm!

  • RareAMV
  • Registratie: November 2012
  • Laatst online: 05-10 18:36
diondokter schreef op maandag 17 september 2018 @ 14:55:
Xamarin.Android en Xamarin.iOS zijn de Xamarin libraries voor beide platforms. Je kunt daarin dus voor dat specifieke platform een app bouwen.

Xamarin.Forms is daar weer bovenop gebouwd. Jij hoeft alleen in Forms te werken en Forms roept dan alle juiste platform api's aan. (Je kan ook zelf platform-specifieke code schrijven als dat nodig is)

Ik zou zeggen, probeer het even uit en deploy een Forms app op Android.
Tip: Wanneer je het project aanmaakt, selecteer de .Net Standard optie en niet de standaard Portable Library. Werkt veel beter IMO.
Zal ik doen! En gelukkig heb ik al mijn zelf geschreven libraries al omgezet naar .net standard :) om deze reden.
Pagina: 1