Tomislav Sablić
Autor:
Tomislav Sablić

Scrum master, Programer za C# .NET programski jezik

Kako uz pomoć .NET Core i MySql-a razviti skalabilnu i cjenovno prihvatljivu aplikaciju

  • 25.10.2017

Dolaskom .NET Core tehnologije Microsoft je svoj utjecaj proširio i na open-source svijet. Unatoč upitnoj stabilnosti, community oko njega dobro se drži i stabilno raste. 

Klasičan stack nekih enterprise aplikacije koju podupiru Microsoft tehnologije je poprilično skupa investicija, pogotovo za tvrtke koje su tek krenule u razvoj, a klijent nema ili ne želi izdvojiti pozamašan iznos za prateću infrastrukturu.

U ovom članku predstavit ću brz i besplatan način za početak razvoja aplikacije koja je skalabilna i koristi već jednu Microsoftovu out-of-the-box značajku. Radi se o Identityju. Cijelu aplikaciju će držati backend na .NET Core platformi, a baza podataka će biti na MySQL-u.

Možemo li imati aplikaciju na .NET Core platformi s MySQL bazom? 

Naravno da je moguće, a i ne propuštate mnogo ako nemate enterprise verziju Microsoft SQL Servera. Poznata je činjenica da Entity Framework ima drivere i za druge baze podataka osim MSSQL i MySQL baze. Među ostalim, tu su i Oracle, PostgreSQL, SQLite, DB2 i mnogi drugi.

Pretpostavka je da imate instaliran i konfiguriran MySQL na svojem računalu. Ako nemate, preporuka je da instalirate MySQL sa službene stranice ili kao u ovom članku, instalirajte cijeli WAMP stack radi PHPMyAdmin sučelja.

Za najlakši i najbrži način do rezultata preporučam da imate instaliran Visual Studio i WAMP. Nakon što imate sve što je potrebno možemo započeti.

Za početak potrebno je napraviti novi solution koji sadrži .NET Core projekt, a to možemo odraditi ovako:

 

Za authentication ćemo odabrati Individual User Accounts.

 

Ako smo dobro napravili konfiguraciju WAMP servera, trebali bi moći doći do phpMyAdmin sučelja. Standardno nakon konfiguracije, adresa je http://localhost/phpMyAdmin (u mom slučaju http://localhost:8069/phpMyAdmin).

Na lijevoj strani sučelja trebali bi vidjeti popis MySql baza podataka koje imate na svom serveru. Trenutno nema baze koja nas zanima. Kako bi naša aplikacija sama kreirala kroz Entity Framework potrebno je podesiti par sitnica.

 

Za početak, treba nam package koji ćemo skinuti kako bi Entity Framework znao raditi s našom MySql bazom. Na žalost, Entity Framework Core provider za MySql bazu je prerelease i ne radi očekivano out of the box. Zato sam uspio nakon isprobavanja više providera naći jedan koji zadovoljava moje potrebe. U svojoj službenoj dokumentaciji, Entity Framework uz svoj provider piše i o Pomelo library-ju.

Da bi u Visual Studiu instalirali paket potrebno je u Solution Exploreru desnim klikom kliknuti na Projekt (U našem slučaju Test Project), odabrati Manage NuGet packages.  Paket koji tražimo zove se Pomelo.EntityFrameworkCore.MySql.

 

Da bi Pomelo radio potrebno je još u klasi ConfigureServices.cs izmjeniti metodu da izgleda ovako:

 

Glavna razlika je u tome što smo umjesto UseSqlServer stavili UseMySql. Nakon toga potrebno je spremiti izmjene, napraviti build solutiona i probati kreirati Initial migraciju.

Kako bi to napravili potrebno je otvoriti command prompt u direktoriju našeg projekta (Ne solutiona!) ili u Visual Studiu u Package Manageru upisati naredbu.

Naredba dotnet ef migrations add Initial dodaje novu migraciju, odnosno entity framework pokupi sve modele i veze među njima i iz toga generira Code First klasu u kojoj je migracija. Code First znači da bez znanja SQLa možemo opisati bazu podataka, tablice u njoj i veze među njima.   

Prije nego što krenemo kreirati Migracije, potrebno je još u appsettings.json izmjeniti connection string da izgleda ovako:

 

Nakon izmjene, idemo dodati našu prvu migraciju. Entity framework iz vaših promjena kreira klasu kako bi mogli na neki način verzionirati bazu podataka. Svaki put kada napravite neku promjenu na modelu koji je vezan uz bazu i napravite novu migraciju, entity framework će se spojiti na bazu, pogledati koje su razlike između postojećeg stanja baze i izmijenjenih modela. Nakon usporedbe, kreirat će novu migracijsku klasu u vašem projektu.

Dodavanje migracije

 

Nakon toga trebamo napraviti update na bazi. To ćemo napraviti pomoću naredbe dotnet ef database update

 

Povratkom na phpMyAdmin i nakon refresha u lijevom dijelu sučelja trebali bi vidjeti bazu i tablice koje se nalaze u njoj. 

 

Sada nam još preostaje provjeriti kreira li naša aplikacija nove usere ispravno.

Pokretanje projekta

Iz Visual Studia pokrenimo projekt:

 

.NET Core podiže Command prompt prozor, odnosno server na kojem se nalazi naša aplikacija, i otvara browser na adresi na kojoj se nalazi naša aplikacija.

 

Idemo se probati registrirati kao novi korisnik:

 

Gore u desnom kutu naše aplikacije vidimo da smo se uspješno registrirali i ulogirali:

 

Za kraj, provjerimo u bazi podataka postoji li zapis o našem novom korisniku:

 

I to je to. Imamo .NET Core aplikaciju koja koristi Identity na MySQL bazi podataka. Sve ostalo što se tiče razvoja je više-manje isto kao kad radite s klasičnom kombinacijom (.NET aplikacija i Microsoft SQL baza).

Što dalje?

Što god želite. Mogućnosti su beskrajne!

Sretno programiranje :)

Popularne teme
.NET ABAP ADFS Agile Always On Anemic Model Angular automatsko generiranje dokumnetacije Azure Backbone benchmark BI BI projekti blog Bootstrap building people business inteligence Business Intelligence Change Chrome CI CITCON Claims compile Continuous Delivery continuous deployment Continuous Integration CSR d3js data data visualization Data visualization alati DDD dekompozicija dependency injection development dinamička forma dinamički parametri dinamički query distribuirani razvoj dokumentacija Domain-Driven design DOP društvena odgovornost edge-based video analytics Eliminating waste enkapsulacija enterprise razvoj softvera ERP ETL Excel FIORI Frontend funkionalna dokumentacija game Geopackage GPKG GIS Git Groovy heat map HICCUPS Hichert HTML IBCS interoperability invision IoT IPSO izvještavanje java JavaFX Javascript Jazz Build Engine JBE Jenkins jquery jqueryui jsfiddle JVM Kaizen Kanban king KING ICT Kingovci Knockout kvaliteta lambde leadership Lean legacy code M language Management Maven Metodologija microservices Microsoft mobile Mobility mockups moć monday game NetWeaver network nodejs oblikovni obrasci OGC OKR open source optimizacija organizacija organizacijska struktura OutOfMemoryError outsourcing overengineering paginacija Performance performanse PERT PMI PMP; Agile; Project management; Scrum; KING ICT; razvoj; metodologija podatkovni skup poslovna analiza pouzdanost Power BI Power Map Power Pivot Power Query Power View pretraga proces procjena Product Owner programming proizvod Project manager projektni plan radar Rational Team Concert razvoj tima refaktoriranje Release resize responsive charts REST retrospektiva Rich-Domain model Roko Roić rolling wave planning RTC SAP scale scatterplot chart Scrum scrum team scrum tim service boundaries single responsibility principle Single Sign-On smart metering SoapUI social responsibility softver Software software prototyping Software Testing Club Spring Boot SQL standard sustav videonadzora svg swagger tdd Team team building team development Team Foundation Server tech tehnologije terminski plan Testing tim timesheet timovi Toggl.com touch transakcijski nadzor tražilica underengineering unit testing Uspjeh Visual Studio vodstvo vodstvo leadership moć društvena odgovornost DOP social responsibility CSR vođenje projekata WBS Web workshops Zagreb STC

PRIJAVA NA NEWSLETTER

Najnovije novosti iz ICT svijeta