[ASP.NET] Virtual objecten + Mysql en identity

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 18-09 13:43
Ik ga binnenkort starten met een nieuw project en heb wel een aantal vraagjes.

Het gaat om een ASP.NET MVC5 Web applicatie. Ik heb hier al wel ervaring mee icm EF6. Nou heb ik in het verleden gebruik gemaakt van Virtual objecten om relaties aan te geven in mijn code (code first migrations). Maar toen gebruikte ik een lokale MSSQL database.. (localdb)\v11.0.. Kan iemand mij vertellen of dit ook mogelijk is met EF6 en een MySQL database? Dit omdat MSSQL niet beschikbaar is op Linux en ik al wel een Linux server heb en aan het afwachten ben op de port van .NET naar Linux (of dit verstandig is, laat ik in het midden, feedback geven mag).

Verder ben ik nog op zoek naar een goede identity/membership provider. Ik heb onlangs gewerkt met MySQL MembershipProvider. Deze werd dan aangemaakt door Visual Studio in een MySQL MVC3 Project, maar ik heb thuis problemen met het aanmaken van dit project dus deze valt af mits handmatig aangemaakt. Ik heb al een optie bekeken, namelijk ASP.NET.Identity. Heeft iemand hier ervaring mee? Zo ja, hoe was die? En hoe staat het met security? Ik ben altijd beetje huiverig voor standaard providers.

Ik wil ook externe logins toelaten op de website, zoals bijvoorbeeld Steam, is dat beetje compatibel met eerder genoemde provider?

Misschien beetje veel vragen voor in 1 topic, maar ik sta open om ze verhelderen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ThaAresX schreef op vrijdag 27 november 2015 @ 14:18:
Nou heb ik in het verleden gebruik gemaakt van Virtual objecten om relaties aan te geven in mijn code (code first migrations). Maar toen gebruikte ik een lokale MSSQL database.. (localdb)\v11.0.. Kan iemand mij vertellen of dit ook mogelijk is met EF6 en een MySQL database?
Ik zie even niet hoe "virtual objecten" relevant is in dit verhaal :? EF is een ORM dat nou nét het hele onderliggende RDBMS voor je weg abstraheert (althans; voor zover dat kan). Of je nou EF6 met een MSSQL of EF6 met een MySQL (of, hell, een EF6 met Postgres, Oracle, CSV ... :P ) driver gebruikt: boeie.
ThaAresX schreef op vrijdag 27 november 2015 @ 14:18:
Verder ben ik nog op zoek naar een goede identity/membership provider. Ik heb onlangs gewerkt met MySQL MembershipProvider. Deze werd dan aangemaakt door Visual Studio in een MySQL MVC3 Project, maar ik heb thuis problemen met het aanmaken van dit project dus deze valt af mits handmatig aangemaakt.
Ook hier heb ik weer een sterk klok-klepel gevoel. Wat de membership/identityprovider "intern" gebruikt is helemaal niet relevant. Je hebt er klaarblijkelijk een gevonden die MySQL gebruikt maar die moet makkelijk om te schrijven / aan te passen zijn naar elk willekeurig RDBMS. Maar het lijkt me handiger als je "problemen" concreter maakt voor ons; wie weet is 't iets simpels en kunnen we je vertellen wat je verkeerd doet. Iets afschieten "omdat het thuis niet werkt" vind ik een rare manier van werken...
ThaAresX schreef op vrijdag 27 november 2015 @ 14:18:
Heeft iemand hier ervaring mee? Zo ja, hoe was die? En hoe staat het met security? Ik ben altijd beetje huiverig voor standaard providers.

Ik wil ook externe logins toelaten op de website, zoals bijvoorbeeld Steam, is dat beetje compatibel met eerder genoemde provider?
Heel, héél sterk gevoel van klok-klepel. Ik weet even zo snel niet hoe hier een zinnig antwoord op te geven anders dan dat de ene implementatie de ander niet is (en dat de een de ander niet uitsluit) en dat "Steam" natuurlijk niet gaat werken daarmee omdat de implementatie die je noemt een compleet ander doel heeft...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 18-09 13:43
RobIII schreef op vrijdag 27 november 2015 @ 15:25:

Ik zie even niet hoe "virtual objecten" relevant is in dit verhaal :? EF is een ORM dat nou nét het hele onderliggende RDBMS voor je weg abstraheert (althans; voor zover dat kan). Of je nou EF6 met een MSSQL of EF6 met een MySQL (of, hell, een EF6 met Postgres, Oracle, CSV ... :P ) driver gebruikt: boeie.
Het ging mij meer over of het mogelijk was om met een mysql database ook virtuele objecten mogelijk was. Maar als ik je antwoord dus goed lees maakt dat niet uit, zolang EF er tussen zit?
RobIII schreef op vrijdag 27 november 2015 @ 15:25:

Ook hier heb ik weer een sterk klok-klepel gevoel. Wat de membership/identityprovider "intern" gebruikt is helemaal niet relevant. Je hebt er klaarblijkelijk een gevonden die MySQL gebruikt maar die moet makkelijk om te schrijven / aan te passen zijn naar elk willekeurig RDBMS. Maar het lijkt me handiger als je "problemen" concreter maakt voor ons; wie weet is 't iets simpels en kunnen we je vertellen wat je verkeerd doet. Iets afschieten "omdat het thuis niet werkt" vind ik een rare manier van werken...
De enige manier waarop ik zo'n project werkend heb gekregen was er een aanmaken via de pc van me baas. Verder ben ik nog niet in staat geweest om er een aan te maken. De precieze error was : "Error HRESULT E_FAIL has been returned from a call to a COM component". Na wat Google werk, kwam het er op neer dat ik VS opnieuw moest installeren. Vandaar dat ik die project vorm vermijd en het weinig pluspunten heeft ten opzichte van een normale web application. En de reden waarom ik deze niet meteen gespecificeerd had was omdat ik dacht die nergens meer had staan en mij deze niet meer herinnerde, bleek dus niet zo te zijn.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ThaAresX schreef op vrijdag 27 november 2015 @ 16:11:
Het ging mij meer over of het mogelijk was om met een mysql database ook virtuele objecten mogelijk was. Maar als ik je antwoord dus goed lees maakt dat niet uit, zolang EF er tussen zit?
Wat versta jij in hemelsnaam onder virtuele objecten :?
Als je members van een object virtual maakt (ik gok dat je dat bedoelt?) i.v.m. EF's lazy-loading dan: ja, dat kan. Waarom zou dat niet kunnen? Nogmaals: hoe hangt dat in hemelsnaam samen met een ORM? Een virtual member (method, property, indexer, ...) is een OOP concept en heeft geen kont te maken met een ORM noch met een database (of dat nou MySQL is of eender welke andere DB). Dat EF handig gebruik maakt van virtual members om zodoende dynamische proxies te kunnen maken die aan lazy-loading doen staat los van welke database er weer onder ligt. Dus voor mij slaat je vraag als een tang op een varken of ik begrijp je (nog steeds) verkeerd.
ThaAresX schreef op vrijdag 27 november 2015 @ 16:11:
De enige manier waarop ik zo'n project werkend heb gekregen was er een aanmaken via de pc van me baas. Verder ben ik nog niet in staat geweest om er een aan te maken. De precieze error was : "Error HRESULT E_FAIL has been returned from a call to a COM component".
Dan is je VS installatie of je windows gaar ofzo (en lijkt de conclusie van je google-tocht dus enigszins te kloppen). Dergelijke fouten zou je niet moeten krijgen. Heb je meer informatie die (rondom) die error staat/stond? Iets in je eventlog o.i.d.? Als je gewoon een paar NuGet packages (deze en deze (en daarmee dus automatisch ook deze)) installeert, werkt het dan wel?
ThaAresX schreef op vrijdag 27 november 2015 @ 16:11:
De enige manier waarop ik zo'n project werkend heb gekregen
Definieer "zo'n project". Welke projecttype kies je dan precies? Want een 'MySQL MVC3 Project' waar jij het in je topicstart over hebt bestaat, bij mijn weten, niet. Een 'ASP.NET MVC5 Web applicatie' wel (hoewel dat niet de exacte naam is weet ik hier wel wat je bedoelt).

[ Voor 13% gewijzigd door RobIII op 27-11-2015 17:11 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 18-09 13:43
RobIII schreef op vrijdag 27 november 2015 @ 17:02:

Wat versta jij in hemelsnaam onder virtuele objecten :?
Als je members van een object virtual maakt (ik gok dat je dat bedoelt?) i.v.m. EF's lazy-loading dan: ja, dat kan. Waarom zou dat niet kunnen? Nogmaals: hoe hangt dat in hemelsnaam samen met een ORM? Een virtual member (method, property, indexer, ...) is een OOP concept en heeft geen kont te maken met een ORM noch met een database (of dat nou MySQL is of eender welke andere DB). Dat EF handig gebruik maakt van virtual members om zodoende dynamische proxies te kunnen maken die aan lazy-loading doen staat los van welke database er weer onder ligt. Dus voor mij slaat je vraag als een tang op een varken of ik begrijp je (nog steeds) verkeerd.
Sorry voor het verkeerde gebruik van begrippen, maar inderdaad ik bedoelde virtual members. Dus inderdaad zoiets als "public virtual User { get; set; }". Mij is EF-gebruik geleerd aan de hand van een MSSQL en heb er ook alleen nog maar gewerkt i.c.m. MSSQL. Misschien had ik in mijn starttopic moeten vermelden dat ik nog een student en lerende ben. Maar bedankt voor je antwoord op mijn vraag of virtual members (finally got it right) ook werken met een MySQL database dankzij EF's lazy-loading. Ik wist nog niet dat virtual iets van OOP was. Ik was in de veronderstelling dat dat iets van EF was of zelfs MSSQL. Dus als ik je hele verhaal goed begrijp, kan ik met virtual members in mijn code, gewoon relaties vastleggen ongeacht DBMS?
RobIII schreef op vrijdag 27 november 2015 @ 17:02:

Dan is je VS installatie of je windows gaar ofzo (en lijkt de conclusie van je google-tocht dus enigszins te kloppen). Dergelijke fouten zou je niet moeten krijgen. Heb je meer informatie die (rondom) die error staat/stond? Iets in je eventlog o.i.d.? Als je gewoon een paar NuGet packages (deze en deze (en daarmee dus automatisch ook deze)) installeert, werkt het dan wel?
Verdere informatie zal ik later nog geven, druk weekend voor de boeg dus kan het niet even 1-2-3 opzoeken. Vanavond laat zal ik nog eens proberen. Ter informatie, dat MySQL MVC3 Project Template wat ik via mijn baas had verkregen, had ook telkens problemen met Mysql.Web en MySQL.Data assemblies. Deze werden niet goed ingeladen vaak. Wanneer ik deze weer herinstalleerde via Nuget Console, was het debakel weer enigzins opgelost.
RobIII schreef op vrijdag 27 november 2015 @ 17:02:

Definieer "zo'n project". Welke projecttype kies je dan precies? Want een 'MySQL MVC3 Project' waar jij het in je topicstart over hebt bestaat, bij mijn weten, niet. Een 'ASP.NET MVC5 Web applicatie' wel (hoewel dat niet de exacte naam is weet ik hier wel wat je bedoelt).
Zo'n project refereert naar een MySQL MVC3 Web Project inderdaad. Bij het aanmaken van een MySQL MVC 3 project op mijn ontwikkel-pc kreeg ik dus eerder beschreven error. Verder snap ik niet echt wat je hierboven probeert te zeggen.

Acties:
  • 0 Henk 'm!

  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 14:12
ThaAresX op vrijdag 27 november 2015 @ 17:40:
Zo'n project refereert naar een MySQL MVC3 Web Project inderdaad. Bij het aanmaken van een MySQL MVC 3 project op mijn ontwikkel-pc kreeg ik dus eerder beschreven error. Verder snap ik niet echt wat je hierboven probeert te zeggen.
Ik ken zo'n project verder ook niet. Weet je zeker dat je niet 2 zaken door elkaar haalt? MVC heeft verder helemaal niks met MySQL of wat voor DBMS dan ook te maken. MVC zegt iets over de opbouw van je project (code). MySQL is alleen maar opslag.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
^ Wat hij zegt dus. Verder:
ThaAresX schreef op vrijdag 27 november 2015 @ 17:40:
Dus als ik je hele verhaal goed begrijp, kan ik met virtual members in mijn code, gewoon relaties vastleggen ongeacht DBMS?
8)7 Nee.
Relaties leg je vast met (collection) properties en data-annotaties (of fluent). Daar heb je geen "virtual" voor nodig; dat heb je nodig voor lazy loading (zoals ik eerder al aangaf) en efficiëntere change tracking (zie de gelinkte SO-post).

Ik/we wil(len) je best helpen maar het helpt als je even de basis doorneemt zodat je in ieder geval de juiste termen gebruikt; het gros van wat je schrijft is echt verdomd lastig te begrijpen als je steeds de verkeerde termen gebruikt (of erger: de verkeerde redenering gebruikt vanwege/gebaseerd op die verkeerde termen). En dan slaat 't allemaal als een tang op een varken. Dat is net zoiets als vragen of je met je auto linksaf kunt slaan omdat je een model hebt met kofferbak.

[ Voor 45% gewijzigd door RobIII op 27-11-2015 20:55 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:03
RobIII schreef op vrijdag 27 november 2015 @ 17:02:
[...]

Wat versta jij in hemelsnaam onder virtuele objecten :?
Ah, ik begon al te denken dat ik van iets niet op de hoogte was. :P

EF is een ORM. Een tool die toelaat om een mapping te maken tussen jouw object georienteerde class-model en het relationele datamodel.
Entity Framework zorgt ervoor dat de gegevens uit de databank opgehaald worden en vertaald worden naar jouw classes, zonder dat je je daar zelf veel hoeft mee te bemoeien.

Wellicht heeft EF een aantal drivers ter beschikking zodanig dat dit kan werken met verschillende types van databases. (Iedere database heeft nl. zijn eigenlijk SQL dialect en eigenaardigheden).

Ik denk echter dat je, voor je verder gaat, eerst eens moet gaan opzoeken wat 'virtual' betekent en wat je daar mee kunt doen.
Ik denk dat dit nuttige links zijn:

Polymorphism

Polymorphism code project

Lazy loading heeft verder ook niets te maken met het type DB dat je wil gebruiken. Lazy loading wil zeggen dat iets pas opgehaald / geladen wordt eens je het nodig hebt.

[ Voor 78% gewijzigd door whoami op 27-11-2015 21:25 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 18-09 13:43
InZane schreef op vrijdag 27 november 2015 @ 20:09:
[...]


Ik ken zo'n project verder ook niet. Weet je zeker dat je niet 2 zaken door elkaar haalt? MVC heeft verder helemaal niks met MySQL of wat voor DBMS dan ook te maken. MVC zegt iets over de opbouw van je project (code). MySQL is alleen maar opslag.
Ter verduidelijking, het is een add-on vanuit Oracle voor Visual Studio. Zie dit filmpje. Dat bedoel ik met dat project.
whoami schreef op vrijdag 27 november 2015 @ 21:18:
[...]
Ah, ik begon al te denken dat ik van iets niet op de hoogte was. :P

EF is een ORM. Een tool die toelaat om een mapping te maken tussen jouw object georienteerde class-model en het relationele datamodel.
Entity Framework zorgt ervoor dat de gegevens uit de databank opgehaald worden en vertaald worden naar jouw classes, zonder dat je je daar zelf veel hoeft mee te bemoeien.

Wellicht heeft EF een aantal drivers ter beschikking zodanig dat dit kan werken met verschillende types van databases. (Iedere database heeft nl. zijn eigenlijk SQL dialect en eigenaardigheden).

Ik denk echter dat je, voor je verder gaat, eerst eens moet gaan opzoeken wat 'virtual' betekent en wat je daar mee kunt doen.
Ik denk dat dit nuttige links zijn:

Polymorphism

Polymorphism code project

Lazy loading heeft verder ook niets te maken met het type DB dat je wil gebruiken. Lazy loading wil zeggen dat iets pas opgehaald / geladen wordt eens je het nodig hebt.
Oke bedankt voor de link. Zal ze even keertje doorlezen.

Maar dan nu de one-million-dollar-question. Wat is een goede identity library/package/tool? Zoals gezegd ik heb al met MySQL Membership gewerkt, maar ik hou er niet van dat je wachtwoorden leesbaar in een database opslaat.

[ Voor 14% gewijzigd door ThaAresX op 27-11-2015 21:41 ]


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 22:10
ThaAresX schreef op vrijdag 27 november 2015 @ 21:39:
[...]


Oke bedankt voor de link. Zal ze even keertje doorlezen.

Maar dan nu de one-million-dollar-question. Wat is een goede identity library/package/tool? Zoals gezegd ik heb al met MySQL Membership gewerkt, maar ik hou er niet van dat je wachtwoorden leesbaar in een database opslaat.
Een membershipsystem die wachtwoorden leesbaar opslaat in databases is uit den boze, moet je altijd vermijden. Als je heel veel soorten platformen wilt integreren (Facebook, Steam, Twitter, Google, je eigen systeem etc), lijkt het me dat je gewoon elk random membershipsysteem kan gebruiken en deze kan uitbouwen om een facebook-account te linken aan een account in je eigen systeem. Dat kan op allerlei manieren, maar .NET heeft z'n eigen membershipsysteem wat je zou kunnen uitbreiden indien gewenst.

Een andere mogelijkheid om OAuth2 op te zetten en daar dan Facebook-/Twitter-/Steam-integratie bij in te bouwen, zoals hier aangegeven: http://stackoverflow.com/...-php-database-seriously-n

Het is vrij simpel allemaal, maar je kan het zo moeilijk maken als je zelf wilt. Gewoon even goed inlezen en kijken wat je precies het belangrijkst vindt. Wil je dat ze kunnen inloggen met slechts een Steam-account? Regel dan dat je weet wat voor login-systeem dat is, implementeer het (er is vast een manier voor om accountdata te krijgen van Steam zodra iemand ermee inlogt) en gebruikt dat in je (web)app. Je kan alle kanten op.

Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 18-09 13:43
Merethil schreef op vrijdag 27 november 2015 @ 22:11:
[...]


Een membershipsystem die wachtwoorden leesbaar opslaat in databases is uit den boze, moet je altijd vermijden. Als je heel veel soorten platformen wilt integreren (Facebook, Steam, Twitter, Google, je eigen systeem etc), lijkt het me dat je gewoon elk random membershipsysteem kan gebruiken en deze kan uitbouwen om een facebook-account te linken aan een account in je eigen systeem. Dat kan op allerlei manieren, maar .NET heeft z'n eigen membershipsysteem wat je zou kunnen uitbreiden indien gewenst.

Een andere mogelijkheid om OAuth2 op te zetten en daar dan Facebook-/Twitter-/Steam-integratie bij in te bouwen, zoals hier aangegeven: http://stackoverflow.com/...-php-database-seriously-n

Het is vrij simpel allemaal, maar je kan het zo moeilijk maken als je zelf wilt. Gewoon even goed inlezen en kijken wat je precies het belangrijkst vindt. Wil je dat ze kunnen inloggen met slechts een Steam-account? Regel dan dat je weet wat voor login-systeem dat is, implementeer het (er is vast een manier voor om accountdata te krijgen van Steam zodra iemand ermee inlogt) en gebruikt dat in je (web)app. Je kan alle kanten op.
Bedankt voor alle hulp iedereen. Even terugkomend op de indentities. ik heb deze link gevonden voor steam login. Daar in zie ik dat OpenID gelijk in die library zit. In mijn ogen is het dan het makkelijkste om OpenID in plaats van ASP.NET Identity te gebruiken. Kan iemand me vertellen waarom dit wel/niet goed is?

Acties:
  • 0 Henk 'm!

  • Jogai
  • Registratie: Juni 2004
  • Laatst online: 19-09 08:37
Je kan iedere Oauth provider koppelen aan ASP.NET identity, zo ook steam: http://www.oauthforaspnet.com/providers/steam/

Klik hier om op linkedIn lid te worden van de Freelance Tweakers groep.

Pagina: 1