Permalänk
Medlem

.NET webutveckling idag?

Hej,

Jag har tidigare gjort en del websidor med ASP.NET Webforms och ASP.NET MVC, JQuery. Nu hade jag tänkt ta mig an ett nytt projekt och då det var par år sen jag jobbade med detta så efterfrågar jag nu lite vägledning.

Websidan ska innehålla användarregistrering, messageboard, planering, integrationer med andra system o.s.v.

Min tanke är att köra ASP.NET MVC och möjligen byta ut vissa mer avancerade client side kontroller mot Angular(eller liknande). Jag vill dock undvika tung clientside java kod så långt som det går av 3 anledningar ; 1. Det är en hög tröskel för att lära sig(har sen tidigare tittat på Ember och React som jag inte direkt gillade) 2. Alla sidor ska gå att indexera enkelt av sökmotorerna 3. URL ska alltid representera var man är så det är lätt att hitta tillbaka.

Projektet ska vara uppe och rullar relativt snabbt(par månader) och sen kan jag bygga på med mer avancerad teknik där det behövs.

Så vad bör jag titta på inledningsvis?

- Är det ASP.NET Core som gäller nu?
- Är Twitters Bootstrap good enout? Jag har en hel del erfarenhet av HTML\CSS och att producera grafik själv men i detta fallet vill jag ta in en grund som sedan går att modifiera. Det är också viktigt att sidan är responsive så att den fungerar bra på både en dator och en telefon.
- Entity Framework för att hantera data mellan databas och DAL, kan kanske denna även mappa mellan business objekt och databas objekt??
- NLog för att hantera all loggning till databas?
- Någon mening att köra full TDD för ett webprojekt som man vill komma igång snabbt med?

Visa signatur

CPU : AMD Ryzen 5 5600X Moderkort : ASUS ROG Strix B550-F GAMING Grafikkort :EVGA GeForce GTX 1080 Ti FTW3 iCX Gaming HDMI 3xDP 11GBMinne : Corsair 16GB Chassi :Fractal Design Define 7 Compact Nätdel : Corsair RM750x Skärm #1 : Asus VG349Q Ultrawide Skärm #2 : Acer X34 Ultrawide

Permalänk
Medlem
Skrivet av Neon:

Hej,

Jag har tidigare gjort en del websidor med ASP.NET Webforms och ASP.NET MVC, JQuery. Nu hade jag tänkt ta mig an ett nytt projekt och då det var par år sen jag jobbade med detta så efterfrågar jag nu lite vägledning.

Websidan ska innehålla användarregistrering, messageboard, planering, integrationer med andra system o.s.v.

Min tanke är att köra ASP.NET MVC och möjligen byta ut vissa mer avancerade client side kontroller mot Angular(eller liknande). Jag vill dock undvika tung clientside java kod så långt som det går av 3 anledningar ; 1. Det är en hög tröskel för att lära sig(har sen tidigare tittat på Ember och React som jag inte direkt gillade) 2. Alla sidor ska gå att indexera enkelt av sökmotorerna 3. URL ska alltid representera var man är så det är lätt att hitta tillbaka.

Projektet ska vara uppe och rullar relativt snabbt(par månader) och sen kan jag bygga på med mer avancerad teknik där det behövs.

Så vad bör jag titta på inledningsvis?

- Är det ASP.NET Core som gäller nu?
- Är Twitters Bootstrap good enout? Jag har en hel del erfarenhet av HTML\CSS och att producera grafik själv men i detta fallet vill jag ta in en grund som sedan går att modifiera. Det är också viktigt att sidan är responsive så att den fungerar bra på både en dator och en telefon.
- Entity Framework för att hantera data mellan databas och DAL, kan kanske denna även mappa mellan business objekt och databas objekt??
- NLog för att hantera all loggning till databas?
- Någon mening att köra full TDD för ett webprojekt som man vill komma igång snabbt med?

Skit i MVC, kör ASPNET Core fullt ut med angular(2), react eller motsvarande hippster-ramverk som är på tapeten just för minuten. Personligen skulle jag kolla in Vue.js ( https://vuejs.org/ ) eller Mithril ( https://mithril.js.org/ )

Bootstrap är väl industristandard men det finns säker bra alternativ också...

Personligen kör jag Serilog för loggning men det är väl smaksak.

TDD - skippa...

Edit: Angående Entity Framework, hur mycket hålla-i-handen-sql-stöd behöver du? Om du kan hantera databasoperationer med SP:ar istället så skulle jag rekommendera Dapper ( https://github.com/StackExchange/Dapper ). Extremt smidigt för scenarion med databaslogik.

Permalänk
Medlem

asp.net core är det som gäller på moderna bolag, angular 2 ser vissa bolag som bonus. Bootstrap är vanligast men kan du det ena torde inte det andra vara svårt att greppa vilket andra också borde förstå. EF för db's är vanlig, nhibernate också för den delen, bra att kunna. Ibland krävs stored procedures, sql, för mer prestandaoptimering men inte så många bolag behöver det dock meriterande att kunna.
Att skriva enhetstester med xunit är bra, lika så integrationstester, många ser det som meriterande.

Visa signatur

Intel Core i7 8700K, MSI GeForce GTX 1080 Ti 11GB Gaming X, Samsung 960 EVO 1TB, MSI Z370 GAMING M5, Corsair 32GB (4x8GB) DDR4 3200MHz CL16 Vengeance, EVGA Supernova G3 850W

INTEL CORE I7 3930K 3.20GHZ 12MB S-2011, FRACTAL DESIGN MIDITOWER DEFINE R3, CORSAIR HX 1050W, ASUS RAMPAGE IV FORMULA, Asus STRIX GTX970, CORSAIR 16GB DDR3 DOMINATOR QUAD 1866MHZ CL9 (4X4GB) Ljud: ASUS Xonar D2X/XDT 7.1 | Elac 5.1 +förstärkare | Cambridge dacmagic plus | Astro gaming A40 | Sennheiser HD 650
You ask me if I have a god complex? Let me tell you something, I am god!

Permalänk
Medlem

Om allt ska gå att indexera etc så får man väl stänga javascript helt och hållet? Dvs se till sidan fungerar som den ska med js avslaget och sen bara använda js till ögongodis och usability.

Visa signatur

"Say unto thine own heart, I am mine own redeemer"
Don't touch me when I'm crazy of that airplane glue

Permalänk

Ogillar din aversion mot client-side javascript, det är så man bygger moderna web-platser.
1. Det är ditt ansvar att hänga med i utvecklingen.
2. https://webmasters.googleblog.com/2014/10/updating-our-techni...
3. Stöds fullt ut av de flesta ramverk inklusive Angular.

Permalänk
Medlem

Där ser man, trodde inte google renderade sidorna. Men det var juh bra, då lärde jag mig nåt nytt

Visa signatur

"Say unto thine own heart, I am mine own redeemer"
Don't touch me when I'm crazy of that airplane glue

Permalänk
Medlem
Skrivet av SvenskFisk:

Ogillar din aversion mot client-side javascript, det är så man bygger moderna web-platser.
1. Det är ditt ansvar att hänga med i utvecklingen.
2. https://webmasters.googleblog.com/2014/10/updating-our-techni...
3. Stöds fullt ut av de flesta ramverk inklusive Angular.

Hade du läst posten så hade du troligen också sett att jag siktar på att använda Angular för de mer avancerade kontrollerna men hur mycket javascript man ska ha på klientsidan finns det inte vad jag vet någon given andel för.

Jag har jobbat med en del javascript tidigare ex ajax, jquery, react och såklart ren javascript. Har aldrig kommit överens med det, känns minst sagt primitivt och onödigt komplicerat vid felsökning, iallafall om man kommer från .NET. Men jag förstår att man är så illa tvungen när det gäller websidor, särskilt om det ska vara "modernt".

Ansvar? Utveckla.

När jag sist kollade upp det för några år sen var google ensam om att indexera javascript sidor och de lade dessutom minimal kraft på det jämfört med indexering av "vanliga" sidor.

Att ha en webapp har jag redan struket, gillar inte tanken med man inte kan kopiera URL för att komma tillbaka till exakt samma ställe. Visst man kan hålla på med URL rewrites men vem vill gör det, inte jag iallafall.

Men tack för ditt givande inlägg.

Visa signatur

CPU : AMD Ryzen 5 5600X Moderkort : ASUS ROG Strix B550-F GAMING Grafikkort :EVGA GeForce GTX 1080 Ti FTW3 iCX Gaming HDMI 3xDP 11GBMinne : Corsair 16GB Chassi :Fractal Design Define 7 Compact Nätdel : Corsair RM750x Skärm #1 : Asus VG349Q Ultrawide Skärm #2 : Acer X34 Ultrawide

Permalänk
Skrivet av Neon:

Jag har jobbat med en del javascript tidigare ex ajax, jquery, react och såklart ren javascript. Har aldrig kommit överens med det, känns minst sagt primitivt och onödigt komplicerat vid felsökning, iallafall om man kommer från .NET. Men jag förstår att man är så illa tvungen när det gäller websidor, särskilt om det ska vara "modernt".

Jag anser att det enda arkitektoniskt rätta är att ha antingen all eller ingen klientlogik i browsern. Mellanting som MVC blir bara otydligt.
En ren separation av lagren medför även andra fördelar. All client-side utveckling kan göras i en lämpligare miljö än visual studio och ditt backend blir en ren MVC core webapp med endast rest-api funktioner.

Ogillar du javascript så kan jag varmt rekommendera att utveckla angular med TypeScript som innehåller de bästa delarna av javascript och c#.

Skrivet av Neon:

Att ha en webapp har jag redan struket, gillar inte tanken med man inte kan kopiera URL för att komma tillbaka till exakt samma ställe. Visst man kan hålla på med URL rewrites men vem vill gör det, inte jag iallafall.

Angular innehåller stöd för detta, det är hur enkelt som helst.

Permalänk
Medlem
Skrivet av DarkBob:

Om allt ska gå att indexera etc så får man väl stänga javascript helt och hållet? Dvs se till sidan fungerar som den ska med js avslaget och sen bara använda js till ögongodis och usability.

Nja, man får se till så att javascriptet inte hämtar data som ska indexeras och som inte indexeras på annat vis. Vet ju att tidigare har det funnits frameworks som generera statisk HTML från javascript sidor som då använts enbart för indexering. Då var det dock metoden inte perfekt på något vis, det var ändå en hel del att underhålla och ha koll på.

Så för min del tänker jag att javascriptet är där för att förenkla och snygga till vissa moment ex med animationer och liknande. Ex om man lägger en post så behöver inte det indexeras utan då kan man köra javascript medan om man besöker en ny sida i ett forum så ska den inte komma via javascript.

Visa signatur

CPU : AMD Ryzen 5 5600X Moderkort : ASUS ROG Strix B550-F GAMING Grafikkort :EVGA GeForce GTX 1080 Ti FTW3 iCX Gaming HDMI 3xDP 11GBMinne : Corsair 16GB Chassi :Fractal Design Define 7 Compact Nätdel : Corsair RM750x Skärm #1 : Asus VG349Q Ultrawide Skärm #2 : Acer X34 Ultrawide

Permalänk
Medlem
Skrivet av SvenskFisk:

Jag anser att det enda arkitektoniskt rätta är att ha antingen all eller ingen klientlogik i browsern. Mellanting som MVC blir bara otydligt.
En ren separation av lagren medför även andra fördelar.

Som sagt, Indexering är fruktansvärt viktigt för websidor, det kan avgöra om en sida överlever eller inte. För en app i en telefon eller liknande är det en annan historia, där hade jag helt klart hållit med dig.

Om alla sökmotorer hade indexerat javascript sidor oavasätt hur de kodades så hade jag varit på tåget men så är inte fallet. Dessutom finns det inget fungerer, fungerar inte läge utan man får vackert vänta ganska lång tid innan man ser hur indexeringen verkligen blir för de olika sökmotorerna. Så med andra ord en massa extra jobb. Men vet du något här som jag missat får du gärna upplysa.

Separation är trevligt men var man ska dra gränsen är troligen främst en smaksak. Ex så har man valt att inte separera Angular 2 utan blanda javascript och HTML, är det okay, vissa tycker inte det är bra. För mig känns det ganska naturligt att man får en grund från servicen och att resten genereras på klienten med javascript.

Skrivet av SvenskFisk:

All client-side utveckling kan göras i en lämpligare miljö än visual studio och ditt backend blir en ren MVC core webapp med endast rest-api funktioner.

Intressant, vad är det för miljö du syftar till? Har för mig jag körde något verktyg för react men det hjälpte inte då jag aldrig kom överrens med frameworket.

Skrivet av SvenskFisk:

Ogillar du javascript så kan jag varmt rekommendera att utveckla angular med TypeScript som innehåller de bästa delarna av javascript och c#.
Angular innehåller stöd för detta, det är hur enkelt som helst.

Jo, tanken var att köra TypeScript. Just nu är jag dock lite fundersam om jag ska köra Angular 4 eller möjligen Aurelia som också verkar bra.

Sen är det tydligen ASP.NET Core 2.0 som gäller nu men det ska vara ganska lätt att updatera från ASP.NET Core 1.1.

Visa signatur

CPU : AMD Ryzen 5 5600X Moderkort : ASUS ROG Strix B550-F GAMING Grafikkort :EVGA GeForce GTX 1080 Ti FTW3 iCX Gaming HDMI 3xDP 11GBMinne : Corsair 16GB Chassi :Fractal Design Define 7 Compact Nätdel : Corsair RM750x Skärm #1 : Asus VG349Q Ultrawide Skärm #2 : Acer X34 Ultrawide

Permalänk
Medlem

Har läst på lite mer nu och även provat på Angular 4 lite.

Google webcrawlar söker igenom singelpage(javascript framewor) sidor men det görs i mycket mindre utsträckning än med vanliga multipage sidor. Dessutom är det en ganska komplicerad process så resultatet vet man egentligen inte förrns efter ett tag, man kan nog räkna med lite extra huvudbry. Min erfarenhet är att webspiders normalt inte läser igenom en hel site på ett bräde om det är en stor sida. Jag hade en med 80 000 sidor och det tog ganska lång tid(några månader) att få allt indexerat även när det var en multipage site.

Precis som tidigare kan man välja att installera extra komponent på servern(ex Universal) som renderar sidorna för webcrawlers men det krävs underhållning och kontroller så att resultatet blir som förväntat.

En annan nackdel med singelpage site är att första besöket på sidan kan bli ganska tungt vilket kan försämra upplevelsen för mobila användare. Vet dock inte hur stort problem detta är, antar att man kan dela upp sidan i värsta fall.

Det är alltså inte alls självklart att välja en singelpage site för en sida där indexering är viktig.

Min tanke med att köra multipage och kasta in javascript kontroller är därmed fortfarande intressant. Det tråkiga är dock att Angular 4 är tänkt för singlepage vilket tydligen ska göra det omständigt att använda det så som jag tänkt. React är mer passande och är också det nästa största frameworket men det har jag redan konstaterat att det inte är för mig.

Sen finns Aurelia och Vue men deras communitys är ganska små i jämförelse så det blir mer högst troligt mer utvecklingstid och man får också skriva fler komponenter på egen hand.

Så inget lätt val här. Jo kommer titta vidare på hur Angular 4 går att anpassa för mutipage websida men annars får jag nog välja annat framework.

Visa signatur

CPU : AMD Ryzen 5 5600X Moderkort : ASUS ROG Strix B550-F GAMING Grafikkort :EVGA GeForce GTX 1080 Ti FTW3 iCX Gaming HDMI 3xDP 11GBMinne : Corsair 16GB Chassi :Fractal Design Define 7 Compact Nätdel : Corsair RM750x Skärm #1 : Asus VG349Q Ultrawide Skärm #2 : Acer X34 Ultrawide