Hayer Skrevet 10. november 2011 Del Skrevet 10. november 2011 (endret) Heisann Har i lengre tid drevet med webutvikling med PHP og MySQL for backend. I PHP brukte jeg CodeIgniter(MVC-framework). Har også kodet en del i C# både for desktop og xbox360. Men tenkte nå det var på tide å gå over til C# + ASP.Net for websider og har i den sammenheng et par spørsmål. 1. Hvordan fungerer databaser i ASP.Net? Er vant til å enten ssh til server og deretter mysql eller bruke phpMyAdmin. Men fortstår meg ikke helt på alle de forskjellige versjonene av MSSQL etc. Noen som har en kjapp forklaring på forskjeller og når de forskjellige skal brukes? 2. Har lest en del på ASP.Net sine sider, men har ikke blitt noe særlig smartere på hvordan jeg lager tabeller etc. Slo av en prat med en kar på IRC, og for meg virket det da som at jeg skulle skrive en klasse som arvet fra Model deretter ville tabellen autogenereres?.. Gjerne et par links til informasjon om dette. 3. Ser fortiden etter en liten dev server hvor jeg kan ha små test prosjekter, men sliter med å finne en ASP.Net server host. Så serversky.no hadde noen, men ble litt usikker når jeg skulle velge. Er det slik at jeg trenger 1 server for databasen og 1 for selve webhosten? Selvfølgelig er best for store websider, men dette er bare små "leke" sider så kan da umulig trenge så mye? 4. I CodeIgniter så har man selv ansvar for å velge brukerhåndtering, hvor brukernavn og passord lagres, hvordan brukere logger inn, hvor profil data lagres. Ettersom jeg har skjønt det i ASP.Net brukes Memberships som igjen er knyttet til Roles etc. Dette høres jo ut som en knall løsning, men når jeg prøvde den ut så slet jeg med å finne ut hvordan jeg f.eks knyttet en presentasjon av brukeren opp mot brukeren selv. Skal man ha 2 tables, 1 for bruker-login dat og 1 for profil-data hvor de knyttes sammen via userID? 5. Hvordan er det med bruk av LINQ i ASP.Net? Antar at dette går helt greit, men bedre å være på den sikre siden - brant meg da jeg brukte LINQ + XNA. 6. I PHP er jeg fan av å generere et bilde av f.eks en graf for å vise statestikker. Hvordan gjør man lignende i ASP.Net? Skriver man sin egen UserControl som man sender all statestikk-dataen med og bruker javascript på klientsiden til å tegne grafen? Det var alt.. for nå hvertfall. Håper på rask respons. Edit: Ble nettopp informert om at det finnes en DB4O, altså en object orientert database som jeg har forstått det. Noen som har erfaring med ASP.Net + DB4O? Kan man ikke da han en klasse som ser slik ut: class User { string Username; string Password; string Presentasjon; string Bosted; } Deretter, når noen logger inn, be DB4O hente alle objekter av typen User, hvor User.Username og User.Password samsvarer med POST-data? Noen som vet performance på dette? Hvordan ser mer seriøse utviklere på å dette i sammenheng med salg av websider? Endret 15. november 2011 av Hayer Lenke til kommentar
Hayer Skrevet 11. november 2011 Forfatter Del Skrevet 11. november 2011 Satt å prøvde meg litt fram i går. Fant ut at LINQ var helt greit å bruke Men sliter litt med databasene fortsatt. Opprettet 1 database i .mdf format. Prøvde å legge inn en connection string, men fikk aldri det til å funke pga passordet mitt inneholdt ".. Prøvde å escape den med \, men det funka vist heller ikke. Så prøvde jeg å kompilere uten connection string for å se om kanskje feil meldinga ga meg en link til online help, men da funket det bare. Vet ikke hvor dataen ble lagret, og fant heller ikke noe database connections i "Database Explorer" så hadde vært greit med en pekepinne her. Lenke til kommentar
Wattengård Skrevet 11. november 2011 Del Skrevet 11. november 2011 Ingenting i veien for å benytte MySQL med ASP.NET. Men for å ta for meg alt punktvis 1. Ca samme måte. Man kan bruke et kommandolinjegrensesnitt, eller man kan benytte SQL Management Studio. Dette følger med hvis du laster ned SQL Server Express, som jeg forsåvidt anbefaler at du begynner å se på. Denne er gratis og kan også kjøres lovlig i prod, med noen ytelsesbegrensninger. 2. Jeg antar at du her tenker på databasetabeller... Jeg anbefaler at du lærer deg SQL og lager tabellene fra bunnen av. Evt har SMS (Server Management Studio) en helt grei tabelldesigner som man kan benytte. Karen du pratet med hørtes ut som han lett blandet MVC-konseptet "Model" med EF-CodeFirst databasegenerering... Og det er litt for viderekomne 3. Jeg anbefaler at du sjekker ut appharbor.com. Hvis du lærer deg GIT (anbefales sterkt) så kan du bare pushe kildekode til appharbor, så bygges den der, og hvis bygget ikke feiler, blir den publisert automatisk på dinapp.apphb.com. (Med mulighet for å enkelt sette opp egne domener hvis det skulle være ønskelig) Appharbor er foreløpig helt gratis og tilbyr flere typer databaser. 4. Man _må_ ikke bruke Membership, men man får mye ferdiglaget hvis man gjør det. Jeg tror ikke det er noen form for profilhåndtering derimot. Så lag en egen profil-tabell og knytt denne mot bruker på gammelmåten. 5. LINQ har ingenting med ASP.NET å gjøre. Det er et språkverktøy for å spørre på f.eks. databaser. Kan fint benyttes i ASP.NEt. Men vær obs på endel fallgruver når det kommer til oppdatering av databaser etc. (Hint: det er ikke så lett som man får inntrykk av i utgangspunktet...) 6. Man kan gjøre det på flere måter. Bruker du WebForms er det flere brukerkontroller som kan gjøre dette for deg. Du kan sende dataene clientside og bruke et JS-bibliotek til å gjøre det, eller du kan generere jpg/png direkte i kode, for deretter å pushe dette inn i response-strømmen Jeg har prøvd alle tre Når det gjelder databaser generellt så anbefaler jeg sterkt å lære seg SQL. MSSQL sin syntaks er ikke veldig ulik MySQL sin. Jeg har i de siste prosjektene mine benyttet et mikro-ORM-verktøy som heter PetaPoco. Dette verktøyet lar deg kjøre vanlige SQL-spørringer, men mapper resultatet opp i mot vanlige POCO's i din applikasjon. Det vil si at du kan ha en tabell [bloggPost] med feltene [iD, Tittel, Tekst, ForfatterID] som ved spørring automatisk mappes til C#-objektet ditt public class BloggPost { public int ID { get; set; } public string Tittel { get; set; } public string Tekst { get; set; } public int ForfatterID { get; setM } } Lenke til kommentar
torbjørn marø Skrevet 11. november 2011 Del Skrevet 11. november 2011 Ble nettopp informert om at det finnes en DB4O, altså en object orientert database som jeg har forstått det. Noen som har erfaring med ASP.Net + DB4O? Kan man ikke da han en klasse som ser slik ut: class User{string Username;string Password;string Presentasjon;string Bosted;}[code] Deretter, når noen logger inn, be DB4O hente alle objekter av typen User, hvor User.Username og User.Password samsvarer med POST-data? Noen som vet performance på dette? Hvordan ser mer seriøse utviklere på å dette i sammenheng med salg av websider?Jeg har litt DB4Objects-erfaring, og det er nok slik du tenker det. Ytelsen er veldig bra. Et alternativ som er veldig populært for tiden i .NET-miljøer er RavenDB. Den regnes vel strengt tatt som en dokumentdatabase, men i praksis er det ikke store forskjellen (før man begynner å grave litt i det). Dokument/Objekt-databaser løser endel av problemene man støter på mellom OOP og relasjonsdatabaser, og så gir de noen helt nye utfordringer å bryne seg på. Hvert til sitt formål som alltid Lenke til kommentar
Hayer Skrevet 15. november 2011 Forfatter Del Skrevet 15. november 2011 Har nå fått kodet litt og testet litt, men har litt problemer. Satte opp en MSSQL Server med "Mixed Auth", hvorav brukernavn var statisk satt til "sa", og passord satte jeg selv. Deretter gikk jeg i "Web Developer 2010" og inn i "Database Explorer".. Når jeg la til en connection fikk jeg til å koble til etc, men problemet var med databaser der. Jeg vill ha en egen per. prosjekt så jeg lo den stå tom i håp om at den ville spørre meg om navn, isteden valgte den "master"-databasen. Så spørsmålet er vel så enkelt som; Hvordan kan jeg lage mine egne databaser i SQL Server Express 2008 R2? Og vil ASP.Net sin autorisering/Membership, Roles, etc automatisk lage tabellene sine i den valgte databasen jeg nettopp lagde? Lenke til kommentar
Wattengård Skrevet 16. november 2011 Del Skrevet 16. november 2011 Jeg anbefaler sterkt SQL Management Studio. Når det er sagt så skal det vel, også i VWD, bare være å høyreklikke på servernavnet og velge New Database? -C- Lenke til kommentar
Hayer Skrevet 16. november 2011 Forfatter Del Skrevet 16. november 2011 Jeg anbefaler sterkt SQL Management Studio. Når det er sagt så skal det vel, også i VWD, bare være å høyreklikke på servernavnet og velge New Database? -C- Prøvde å laste ned installasjonsfilene til 64-bit SQL Management Studio, men når jeg starter den så sier den først bare "Extracting" deretter åpner den "SQL Server Installation Center".. ? Skulle gjerne hatt inn SQL Management Studio etter som det ligner på en bedre utført versjon av MySQL Workbench. Lenke til kommentar
Hayer Skrevet 16. november 2011 Forfatter Del Skrevet 16. november 2011 (endret) Kom over enda noe jeg lurer på så konverterer dette til min lille spørre tråd. Hvertfall for dette spørsmålet. Har nå laget en tabell som heter Foredrag ForedragID | Navn | OpprettetAv | Deltar har også en tabell som heter Deltagere DeltagerID | ForedragID | Navn | Telefon og en siste som heter Administratore AdminID | ForedragID | Navn | Telefon Modellen for Foredrag ser derfor slik ut int ForedragID; string Navn; Admin OpprettetAv; // Hentes fra tabel Administratore ICollection<Deltager> Deltagere; // Hentes fra tabell Deltagere Så hvordan linker jeg "Admin OpprettetAv" til SELECT * FROM Administratore WHERE Administratore.AdminID=ForedragID Samme gjelder, hvordan kan jeg spørre etter foredraget med ID == 2? Endret 16. november 2011 av Hayer Lenke til kommentar
Hayer Skrevet 18. november 2011 Forfatter Del Skrevet 18. november 2011 Bump, anyone? Lenke til kommentar
Wattengård Skrevet 18. november 2011 Del Skrevet 18. november 2011 Det er avhengig av om du bruker et ORM-system eller ikke. Hvis du bruker LINQ2SQL så er det der noe slikt som var data = Foredrag.Where( q=>q.ForedragID == 2); // dette gir deg data.OpprettetAv i typen Admin hvis primæer og fremmednøkler er riktig satt opp. Selv har jeg beveget meg bort fra ORM's i det siste og har blitt litt forelsket i PetaPoco, et mikro-orm/datamapper. Da lager jeg bare sql-spørringene på vanlig måte, så mapper PetaPoco resultatet over i klasser for meg. Men da holder jeg også styr på tilhørigheter som de over selv. PetaPoco har mulighet for en-til-mange-mapping, men jeg har ikke satt meg inn i det enda. Lenke til kommentar
Hayer Skrevet 18. november 2011 Forfatter Del Skrevet 18. november 2011 Og hvor legges dette? I DbContext constructor? Er litt 'tapt' her. Lenke til kommentar
Wattengård Skrevet 21. november 2011 Del Skrevet 21. november 2011 Du må først finne ut hva du ønsker å benytte. Hvis du vil at alt skal kobles automagisk, ActiveRecord style, så bør du se nærmere på NHibernate, kanskje i samarbeid med Castle ActiveRecord som er en AR-implementasjon for .NET. Hvis du vil ha sånn passe mye kontroll selv så kan du se på for eksempel PetaPoco. Med PetaPoco skriver du selv sql-spørringene, men de mappes automatisk inn i C#-objekter for deg. Det er også med et T4-skript som kan generere C#-klasser fra databaseskjemaet ditt. -C- Lenke til kommentar
angeland89 Skrevet 24. oktober 2012 Del Skrevet 24. oktober 2012 Hvis du trenger en server til å leke på sjekk ut gearhost.com brukt dem i flere år og har enda tilgode å ha nedetid som ikke er selvforkyldt, de har også 24/7 chat for problemer som ikke er dine (hjelper også med dine problemer hvis du ikke forstår selv at det er selforskyldt). For databaser så er det veldig greit å jobbe mot MSSQL helt likt som all annen SQL med et unntak du kan lære deg LINQ som gir en meget god kontroll over databasen. For å sette siden ut på nett så er det mange som liket SVN, git ol. til nettsider hvor det bare er en utvikler så er det nesten likegreit om ikke enklere å sette opp IIS på hjemmestasjonen og bare kopiere filene over til siden (via FTP) etter du har testet modifikasjonen lokalt, du trenger da ikke å kjøre siden hver gang du skal teste den heller. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå