Prosím o obecnou radu zkušené vývojáře (C#, JS)

Prosím o obecnou radu zkušené vývojáře (C#, JS)
« kdy: 23. 01. 2024, 23:44:08 »
Ahoj, prosím poraďte jaké technologie zvolit pro můj projekt. (.NET MAUI nebo JS nebo oba dohromady + jak pořešit databázi?)
Jakž takž ovládám C#.NET (základ, OOP a ADO.NET, zatím ještě ne ASP.NET) a mám základ v JS. Nicméně vše je naučeno z kurzů, nemám žádnou praxi a nevím tedy jaké technologie se používají pro vývoj mobilních aplikací, přesněji zda se kombinují dva různé jazyky či se vybere jeden a s tím se dělá vše. Chci dělat mobilní appku, kde uživatelé budou moci vidět záznamy ostatních, ale bude možné ji používat i offline s následnou synchronizací hned jak se dostanou k internetu. Aplikace má být jakoby To-Do list formou hry, na to se hodí asi javascript, jen s pomocí C# asi takovou appku neudělám že (minimálně tak, aby to nějak vypadalo)? Nebo dá se celá appka udělat jen za pomocí Javascriptu (asi Reactu?) a použití .NETu je zde zbytečné? Či se vyloženě hodí JS použít pro frontend a na backend použít MAUI (bývalý Xamarin) od .NETu? A jaká technologie se používá pro sdílené ukládání uživatelských dat, používat ADO.NET a dělat kvůli tomu MS SQL server mi přijde padlé na hlavu.
Ráda se naučím nové technologie, ale nechci se učit něco, co se v praxi nakonec nepoužívá, proto tato otázka :) Chci udělat vlastní projekt, který pak bude sloužit i jako ukázka na pohovorech že něco reálně umím udělat.

Předem dík za ujasnění, mějte se mnou prosím trpělivost, děkuji  :)


alex6bbc

  • *****
  • 1 673
    • Zobrazit profil
    • E-mail
Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #1 kdy: 24. 01. 2024, 07:43:18 »
c# pouzivam v praci ale jen pro desktopovou aplikaci s c++.
kdyz jsem si hral s androidem tak jsem to radsi delal v jave a kotlinu.

ale v diskuzi probiraji xamarin a maui:

https://www.reddit.com/r/csharp/comments/mmrgnv/net_maui_vs_native_android_development/

Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #2 kdy: 24. 01. 2024, 08:14:25 »
Předesílám, že jsem backend vývojář a tudíž se v mobilních aplikacích ani frontendu zas tak moc neorientuju.
Ale ta otázka mi zní trochu divně - opravdu chceš dělat mobilní aplikaci ve smyslu "instalovatelná věc stažená z Google Play / App Store), nebo spíš webovou aplikaci, která poběží i na mobilu? Protože opravdový mobilní aplikace se myslím většinou nepíšou ani v Javascriptu, ani v .NET, ale spíš v Kotlinu (Android) nebo Swiftu (iOS). Asi existujou i nějaký způsoby, jak na to použít .NET, ale bude to spíš vzácnost.

Jinak pokud má mít aplikace nějaké sdílení mezi uživateli, tak se nevyhneš provozování vlastního serveru a na něm klidně můžeš použít .NET.

oss

  • ***
  • 246
    • Zobrazit profil
    • E-mail
Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #3 kdy: 24. 01. 2024, 08:40:55 »
Mam pocit, ze to mas dost dopletene MAUI na bakcned?
MAUI je frondend technologia, v ktorej sa da robit mobilna aplikacia.

Dalsia vec, co mas zle je ADO.NET a MS SQL Server, ADO.NET vie pracovat s akukolvek databazou, nie len s nim.

naj skor si pozri na nejake uz existujuce projekty.

A ked chces spravit nejaku mobilnu Apku co sheruje data medzi pouzivatelmi tak asi takto:

Mobilna aplikacia (MAUI - ziaden JS) -(REST)-> ASP.NET Core + swagger + Entity framework Core (alebo ADO.NET ak sa chces naucit SQL) -> Lubovolna databaza

Mozes REST vymenit za gRPC, graphQL, alebo OData.

Webova aplikacia (Blazor Wasm - ziaden JS) -(Rest)-> ASP.NET Core ...

Webova apka (Blazor Server), EF core-> Databaza

alebo

Webova aplikacia s JS -(REST)->  ASP.NET Core ...

Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #4 kdy: 24. 01. 2024, 08:43:20 »
mobilne apky, to je cesta do pekla. Musim tam brat do uvahy milion veci, ako napr. rozne velkosti displeja, rozne verzie android, ci ho ma vertikalne, alebo horizontalne...
Preto robim backend :)
ak chces offline apku, tak js urcite nie, bud .net, ale ta apka bude mat 20-30MB, alebo nastrojom priamo na to urcenym - java a android studio.
Synchronizacia so servrom - pozor na to, ze to musi byt sifrovane.
ja mam par mobilnych app v .net, ale to su skor len take cisto pre moje domace pouzitie, takze tam nejak neriesim bezpecnost a velkost.
Co sa tyka miesania jazykov, bezne sa to robi, ale rozdelene na logicke casti. Napr. front-end je web (js+php), servisna je .net, ktora moze komunikovat s mikroservismi napisanymi napr. v pythone, databaza...


Don.J

Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #5 kdy: 24. 01. 2024, 09:17:41 »
Předně, u desktop/mobilních app neexistuje frontend a backend, ale prezentační vrstva (UI), aplikační vrstva (BI), případně další vrstvy jako datová vrstva, která může být dále dělená, atd. ... viz. https://cs.wikipedia.org/wiki/V%C3%ADcevrstv%C3%A1_architektura
MSSQL se jako DB v mobilních aplikacích nepoužívá.

Pokud chceš dělat "To-Do" se synchronizací mezi zařízeními, budeš potřebovat celý projekt roztrhnout na 2 "aplikace".

1) Mobilní
- UI se definuje v Xaml/xml.
- Business logika potom v C# když chceš použít .NET - Tedy Xamarin / MAUI
- DB se používá SQLite - SQL/případně nějaká lehká abstrakce nad, Entity Framework Core je v tomto případě výkonnostní vražda.

2) Server - místo, které zná vše a slouží pro výměnu dat mezi ostatními
- možná Frontend? - jestli není zbytečný, max. můžeš nechat swagger generovat popis API
- backend API - C# - s tímto API se bude spojovat mobilní apka a vyměňovat si data.
- aplikační vrstva - C#
- datová vrstva DB MSSQL/PostgreSQL/Maria Db/My SQL .... čisté SQL+DataTable / EF Core atd.

Jinak co se týče programovacích jazyků, s 1 jazykem si nikdy nevystačíš. Vždy je potřeba umět "základní" jazyk (např. C#, Kotlin, Java, PHP, Python, Rust, atd. atd.), a alespoň základně SQL, Html, JavaScript. Dál je potřeba vědět co je to Xml, Json (případně Bson), API, webové API.
V každé firmě kam potom nastoupíš si tě více či méně "usměrní" do jejich technologických kolejí.

oss

  • ***
  • 246
    • Zobrazit profil
    • E-mail
Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #6 kdy: 24. 01. 2024, 09:58:49 »
ak chces offline apku, tak js urcite nie, bud .net, ale ta apka bude mat 20-30MB, alebo nastrojom priamo na to urcenym

Ja by som len podotkol, ze tych 20-30MB je este OK. Dnesne realne mobilene aplikacie maju tak 10-110MB a to ide o aplikaciu, co ma jedno tlacidlo a dva riadky textu (napr. mobilny token k internetovemu bankovnictvu).

- DB se používá SQLite - SQL/případně nějaká lehká abstrakce nad, Entity Framework Core je v tomto případě výkonnostní vražda.

Ja som pri EF core nikdy nemal problemy ani na razzberry pi Zero, co je ovela menej vykonne ako bezny mobil. Naozapak EF core pridava Sqlite vela featura vlastnosti, v cistom SQL som pri Sqlite vzdy bojoval s tym, ze vsteko je string.

Don.J

Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #7 kdy: 24. 01. 2024, 10:34:54 »
Ja som pri EF core nikdy nemal problemy ani na razzberry pi Zero, co je ovela menej vykonne ako bezny mobil. Naozapak EF core pridava Sqlite vela featura vlastnosti, v cistom SQL som pri Sqlite vzdy bojoval s tym, ze vsteko je string.

No, jestli jsi bojoval s tím, že všechno je string, tak to by dost vysvětlovalo. Ono totiž není vše string, ale má to i další typy. Viz. https://www.sqlite.org/lang.html a https://learn.microsoft.com/en-us/dotnet/api/microsoft.data.sqlite?view=msdata-sqlite-7.0.0

U EF-C pokud máš jednoduché struktury a malé množství dat, tak se to moc neprojeví, ale při složitějších strukturách je pak hodně znát úbytek výkonu na RPi2Z i "běžném" mobilu.

Dnes mi přijde velký trend nejen u pokusů o programátory, že na jednoduché banální věci tahají spoustu různých nepotřebných knihoven a frameworků, které zbytečně žerou paměť i výkon. Vím, výkonu je dost, ale proč s ním proboha mrhat?

oss

  • ***
  • 246
    • Zobrazit profil
    • E-mail
Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #8 kdy: 24. 01. 2024, 12:25:39 »
Tak technicky ma Sqlite string, blob a integer (ktory je ale interne reprezentovany ako string), protom aj tie operacie tomu zodpovedaju. Ja som neskutocne bojoval pri ADO.NET s datumami a casmi. A prave tieto veci ma EF vyriesnne.

Citace
U EF-C pokud máš jednoduché struktury a malé množství dat, tak se to moc neprojeví, ale při složitějších strukturách je pak hodně znát úbytek výkonu na RPi2Z i "běžném" mobilu.
Od  .Net 6 s tym zat kay rozdiel nie je, a uz vobec nie po "dotnet ef optimise". Navyse v mobilnej aplikacii sai nebude ukladat zlozitu datovu strukturu, ktora +100 tabuliek.

Citace
Dnes mi přijde velký trend nejen u pokusů o programátory, že na jednoduché banální věci tahají spoustu různých nepotřebných knihoven a frameworků, které zbytečně žerou paměť i výkon. Vím, výkonu je dost, ale proč s ním proboha mrhat?

V tomto uplne suhlasim, dokonca mam rad SQL-ko a rad ho pisem, rad pisem vykone aplikacie.
No myslim, ze v pripade ukazkovej aplikacie na pohovor je to asi fuk (pokial nechve preukazat pokrocilu znalost SQL).

Mlocik97

  • *****
  • 901
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #9 kdy: 24. 01. 2024, 15:10:12 »
mobilne apky, to je cesta do pekla. Musim tam brat do uvahy milion veci, ako napr. rozne velkosti displeja, rozne verzie android, ci ho ma vertikalne, alebo horizontalne...
Preto robim backend :)
ak chces offline apku, tak js urcite nie, bud .net, ale ta apka bude mat 20-30MB, alebo nastrojom priamo na to urcenym - java a android studio.
Synchronizacia so servrom - pozor na to, ze to musi byt sifrovane.
ja mam par mobilnych app v .net, ale to su skor len take cisto pre moje domace pouzitie, takze tam nejak neriesim bezpecnost a velkost.
Co sa tyka miesania jazykov, bezne sa to robi, ale rozdelene na logicke casti. Napr. front-end je web (js+php), servisna je .net, ktora moze komunikovat s mikroservismi napisanymi napr. v pythone, databaza...

Asi máš zlú skúsenosť s veľkosťou u JS díky Electron aplikáciám... ale tomu tak fakt nie je, a i v JS je možné vytvoriť veľmi drobné a kvalitné aplikácie. Sú tu lepšie toolkity, ako Tauri, NativeScript, či NeutralinoJS... inak vieš o tom že existuje aj experimentálny kompilér z JS do machine kódu, bez VM, GC, a podobne? Vyložene to vygeneruje pár kB executable.

U vývoja mobilných app by som šiel cestou NativeScriptu s VueJS alebo Svelte úplne v pohode.
Prípadne môže ísť cestou Ionicu, ale to už bude aplikácia väčšia. VueJS in Ionic

Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #10 kdy: 24. 01. 2024, 15:16:03 »
U vývoja mobilných app by som šiel cestou NativeScriptu s VueJS alebo Svelte úplne v pohode.
Prípadne môže ísť cestou Ionicu, ale to už bude aplikácia väčšia. VueJS in Ionic
Aneb když znám jenom kladivo, všechno vypadá jako hřebík...
Proč by proboha začátečník měl psát mobilní aplikaci v Javascriptu? To si jenom přidá jednu komplikační vrstvu navíc a nijak si nepomůže (nesnaž se prosím argumentovat tím, že je to "jednodušší" nebo tak něco - je to jednoduchý pro tebe, protože to znáš, ale pro začátečníka fakt ne)

Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #11 kdy: 24. 01. 2024, 17:01:58 »
mobilne apky, to je cesta do pekla. Musim tam brat do uvahy milion veci, ako napr. rozne velkosti displeja, rozne verzie android, ci ho ma vertikalne, alebo horizontalne...
Preto robim backend :)
ak chces offline apku, tak js urcite nie, bud .net, ale ta apka bude mat 20-30MB, alebo nastrojom priamo na to urcenym - java a android studio.
Synchronizacia so servrom - pozor na to, ze to musi byt sifrovane.
ja mam par mobilnych app v .net, ale to su skor len take cisto pre moje domace pouzitie, takze tam nejak neriesim bezpecnost a velkost.
Co sa tyka miesania jazykov, bezne sa to robi, ale rozdelene na logicke casti. Napr. front-end je web (js+php), servisna je .net, ktora moze komunikovat s mikroservismi napisanymi napr. v pythone, databaza...

Asi máš zlú skúsenosť s veľkosťou u JS díky Electron aplikáciám... ale tomu tak fakt nie je, a i v JS je možné vytvoriť veľmi drobné a kvalitné aplikácie. Sú tu lepšie toolkity, ako Tauri, NativeScript, či NeutralinoJS... inak vieš o tom že existuje aj experimentálny kompilér z JS do machine kódu, bez VM, GC, a podobne? Vyložene to vygeneruje pár kB executable.

U vývoja mobilných app by som šiel cestou NativeScriptu s VueJS alebo Svelte úplne v pohode.
Prípadne môže ísť cestou Ionicu, ale to už bude aplikácia väčšia. VueJS in Ionic

pre boha ziadne javascriptove sprostosti na mobilnu aplikaciu. TO ze nejaka experimentalna sprostost dokaze vygenerovat par kB executable? Pre aku aplikaciu? Pre nejaku blbost co nacita z textaku par riadkov a zapise ich naspat a ma doslova 100 riadkov maximalne? Realne aplikacie maju tisice az desattisice riadkov kodu (a to ako minimum) a x zavislosti na inych knizniciach (dalsie desiatky tisic riadkov kodu, uz zkompilovanych) aby sme nemuseli ako programatory do umoru pisat to iste znovu a znovu. Potom chcem vydiet ako to vygeneruje par kilobajtov.

Velkost execka je nepodstatna, to ci ma aplikacia na nejakom google alebo apple store 50 alebo 150MB dnes nehra rolu. Pri dnesnych rychlostiach internetu (a obrovskych datovych tarifoch) a vykonnosti zariadeni to je doslova nedpostatny rozdiel.

Co je ale dolezite je mat podporu technologiu. Tie experimentalne javascriptove kniznice su casto krat udrziavane par ludmi a ich zivostnost sa dokaze zo dna na den ukoncit. Ked chce niekto pisat aplikaciu na mobil, tak v pripade androidu je to bud Java, Kotlin alebo MAUI (Xamarin uz nepouzivajte, microsoft ho pomaly ale isto prestava podporovat, ak uz aj dokonca neukoncil podporu, nie som si isty). Ako to je v pripade applu neviem povedat co tam je pouzivane.

Suhlasim so snugarom, to ze mas mlocik rad javascript neznamena ze ho musis nanutit kazdemu aj do situacii kam absolutne nepatri. To je ako keby som kazdemu povedal ze najlepsie rodinne auto je Tatra 813, pretoze mam na nu uchylku.

Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #12 kdy: 24. 01. 2024, 19:07:29 »
Psaní mobilních aplikací není ani tak o jazycích ale o systémových frameworcích daných platforem.

Nejlíp uděláš když je napíšeš v nativně podporovaném prostředí: Android Studio (Kotlin) pro Android a Xcode (Swift) pro iOS. Na vývoj iOS aplikace potřebuješ Mac, jestli ho nemáš tak začnu Androidem.

S MAUI zkušenost nemám, ale Xamarin je zastaralý už nepodporovaný moloch.

Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #13 kdy: 29. 01. 2024, 01:18:32 »
Děkuji všem za rady, i dohady mezi vámi mi moc pomohly :D Překvapil mě náhled na javascript pro mobilní aplikace, čekala jsem že je preferovanější před MAUI, ale zřejmě jsem se mýlila. Upotřebím co jsem se v diskuzi dozvěděla :)

oss

  • ***
  • 246
    • Zobrazit profil
    • E-mail
Re:Prosím o obecnou radu zkušené vývojáře (C#, JS)
« Odpověď #14 kdy: 29. 01. 2024, 07:39:46 »
Preferovanejsi je pre ludi, ktori nic ine nevedia.