Az M# programozási nyelv

Fejlesztőkörnyezet

Az M# fejlesztőkörnyezete jelen pillanatban a nyelv elválaszthatatlan részét képezi, más eszközökkel nem, vagy csak nagyon körülményesen lehet a nyelvet használni.
Ha az M# kódját külső editor-ban szerkesztenénk, akkor pont azt az előnyt veszítenénk el, amely miatt a nyelv hatékony, azaz nem történne meg fejlesztési időben a nyelv fordítása, és a mögöttes C# kód előállítása.

Az M# Explorer

A fejlesztőkörnyezet hozzáférést az az M# projekt teljes egészéhez. Egy webes IDE (integrált fejlesztőkörnyezet) segítségével lehet elérni az oldalakat, modulokat és az adatbázis táblákat, valamint közöttük navigálni. Nagyon fejlett keresővel rendelkezik, amely találatai között a kapcsolódó entitások, oldalak és modulok is szerepelnek, így a fejlesztő áttekintheti például egy entitás összes előfordulását a projekten belül. Az IDE egyszerű és áttekinthető navigációja könnyű váltást tesz lehetővé a fájlok között, ezzel is segítve a produktivitás növekedését.

A kezdőképernyő az M# Explorer ablaka. Ennek segítségével lehet létrehozni egy új M# projektet vagy megnyitni egy meglévőt. A Status részben kiírt valós idejű információ tájékoztatja a fejlesztőt a projekt elkészülésének vagy megnyitásának állapotáról, amelyet ment is, és a History részben később is megtekinthető. Ez nagyon hasznos ha például elfelejtettük elindítani az adatbázis szervert, hiszen így a hiba azonnal felismerhető.

M# Explorer

Új projekt létrehozása

Új projekt létrehozásakor csak a Name és a Root Directory mezőt kell kitölteni, ez alapján az M# már el tudja készíteni a háttérben húzódó Visual Studio Solution-t (ez tartalmazza a weboldalt, a modelleket és a teszt projektet), és a projekt adatbázisát a Name és a Folder paraméterek szerint.

Új projekt létrehozása

Az adatbázis-módnak két opciója lehetséges:

TDD (World)

Az opció választásával az M# egy olyan projektet hoz létre, amely TDD, azaz Test Driven Development fejlesztési módszertant feltételez, és automatikusan létrehoz egy Unit Test projektet is a VS Solution-on belül, valamint két különálló adatbázist.

HelloWorld.DesignTime
Ez az adatbázis a valós idejű adatokat tartalmazza a projekt szerkezetéről, felépítéséről.

HelloWorld.Temp
Ezt az adatbázist használjuk fejlesztés közben a funkciók tesztelésére, és a DesignTime adatbázisból kerül helyreállításra, valahányszor a projektet újra build-eljük vagy a unit teszteket futtatjuk.

Simple

Ez az opció egy egyszerű HelloWorld adatbázist hoz létre. A VS Solution tartalmazni fogja a teszt projektet is, hogy a fejlesztés egy későbbi fázisában el lehessen majd készíteni a unit teszteket.

Meglévő projekt megnyitása

Egy meglévő projekt megnyitásához a Load Existing Project opciót kell választani, és a VS Solution fájlt kell kijelölni.

Figyelem: Az M# csak olyan projektet tud megnyitni, ami az M# által lett generálva. A projekt összetettsége miatt ezért a fájlokat nem ajánlott más szerkesztőben módosítani.

Meglévő projekt megnyitása

A fő kezelőfelület

Az IDE kezelőfelület az alábbi 3 fő részegységet tartalmazza:

A fő kezelőfelület

Project Management

Ebben a részben új oldalakat lehet a projekthez adni, meg lehet határozni a projekt felépítését, az entitásokat, adatbázis táblákat létrehozni, a figyelmeztetéseket ellenőrizni, és a modulokat build-elni.

A projekt kezelése

A fenti menü segítségével lehet megtekinteni az M# figyelmeztetéseket (javaslatok a bevált megoldások alapján), a build módokat (Debug, Release), és hogy a projekt mely részét szeretnénk lefordítani (UI, Model, Test vagy minden).

Model

Ebben a részben a lehet létrehozni új model entitásokat (adatbázis táblákat), illetve a táblákban található adatokat és kapcsolatokat is kezelhetjük.

User Interface

Ez a rész kezeli az összes felhasználói felülettel kapcsolatos elemet, mint oldal struktúra, űrlapok, listák és nézetek a modellek felett.

Loose Modules

Az általánosított modulokat találhatjuk itt, amelyek általánosak a teljes projektre nézve, úgy mint menük, banner-ek, lábléc, valamint az egyénileg létrehozottak.

Recent Items

Listázza az összes mostanában használt modult a projekten belül, amivel a fejlesztési hatékonyságot növelhetjük a könnyű elérés által.

A projekt kezelése - 1

A projekt kezelése - 2

Module Management

Ez a felületi rész szolgál a model osztályok és az UI elemek létrehozására és szerkesztésére, mint listák, nézetek, amelyek a projektben definiált model entitásokra vonatkoznak.

A modellek kezelése

Az M# az entitások fejlesztésének és kezelésének átfogó és nagyon elegáns módját biztosítja. A helyi menü segítségével a feladatnak megfelelően lehet az objektumot és attribútumait testre szabni. Az alábbi kép egy User típusú egyedet mutat a kapcsolódó tulajdonságaival (email és jelszó).

Példa:

A model entitások kezelése

A felső menü segítségével a szerkesztő területen lévő üzleti logikán lehet műveleteket végezni:

A felső fülek

Structure

A fejlesztő meghatározhatja az objektum felépítését.

Data

Az adatbázis táblában lévő adatok szerkeszthetők. Az M# intelligens adatmanipulációs motorja már az adatbázis táblába való beszúrás/szerkesztés előtt validálja az adatokat a szerkesztett entitásban definiált szabályok alapján.

Data fül

Az M# lehetőséget biztosít az adatok exportálására és a táblához való hozzáadására is a Data fülön.

Megjegyzés: Mindig használjuk a Build gombot a model újraépítéséhez, ha megváltoztatjuk az egyed szerkezetét vagy adatait. Amikor a struktúra változik, az újrabuild-elés kaszkádolja a frissítéseket a model által hivatkozott oldalon is. Ezután frissíteni fogja a weboldal adat cache-ét, így a változtatások a felhasználói felületen is megjelennek. Az M# által használt cache-elésről még lesz szó később.

Unit Tests

Ezen a fülön a felhasználó új objektumokat készíthet a szerkesztett entitásból, majd a World adatbázisban lévő valós idejű adatokkal unit teszteket futtathat.

Unit Tests fül

References

Ebben a részben a szerkesztett entitáshoz kapcsolódó referenciákat lehet megtalálni a projektben, így az egyedre épülő modulokat könnyen meg lehet találni.

References fül

UI modulok kezelése

A felhasználói felület moduljait az M# tulajdonságain keresztül kezelhetjük, amely különböző részekből áll össze.

Példa:

UI modulok kezelése

A képen lévő menün az alábbi funkciókat lehet elérni:

UI modul fülek

Edit

A központi fő szerkesztő felületre navigál.

History

A modulon végrehajtott módosításokat az M# rögzíti, így később mintegy vissza lehet menni az időben, és böngészhetők a korábbi állapotok.

History fül

Browse

Ezen a fülön az adott oldalt lehet megtekinteni a böngésző segítségével.

Diagram

Ez a funkció megmutatja a projektben lévő entitások közötti kapcsolatokat.

Diagram fül

Reference

A fülön a model és a UI közötti hivatkozásokról kapunk információkat egy táblázatban, ami listázza azokat a modulokat, amik hivatkoznak az aktuálisan szerkesztettre. Ez nem csak információt biztosít, hanem a kapcsolódások mentén navigálni is lehet a modulok között.

View Code

Ez a felületi rész a háttérben húzódó, M# által generált .NET kódba enged betekintést. Az M# a kódot valós időben frissíti szerkesztés közben, így a fejlesztő minden módosítást követni tud, hogy mi készült el és hogyan lett összeállítva a Visual Studio-ban. Az Open gombbal az adott fájlt azonnal meg is lehet nyitni, és egyéni kódot is lehet beilleszteni.

A forráskód nézete - 1

A forráskód nézete - 2

Visual Studio Solution

A projekt létrehozásakor az M# alapértelmezetten létrehoz egy Visual Studio Solution-t. Ennek a felépítése látható az alábbi képen:

Visual Studio mappaszerkezet

@M#

Ez egy nagyon fontos mappa, és semmiképpen sem szabad módosítani. Az M# ezt a mappát használja a projekt model- és adatbázis beállításainak tárolására. A mappa tartalmát az M# a teljes fejlesztési folyamat során használja, és kézzel történő módosítása a projekt működésképtelenné válását eredményezheti.

Model

Ez a mappa tartalmazza a weboldal modeljét (az üzleti logikát) egy különálló Visual Studio Class Library projekt formájában. A VS projekt tartalmazza az entitásokat és az üzleti logikához kapcsolódó osztályokat, és egy .NET összeállítás fájlra fordítódik le, amire a weboldal hivatkozik, hogy elérhesse az implementált funkciókat.

Test

Itt is találunk egy Visual Studio Class Library projektet, amit a unit tesztek futtatásához használunk.

Website

Magát a webalkalmazást tartalmazza.

A Visual Studio Solution szerkezete

JSON Meta

Az M# JSON formátumú meta információkat generál minden egyes entitásnak és modulnak. Az összes ilyen meta információt a @M# nevű speciális mappában találjuk, ami a Visual Studio Solution mappájában jön létre, ahogyan az alábbi képen is látható.

M# beállítások mappa

A @M# mappában található a @Current mappa, ami a projektre vonatkozó kényes információkat tárolja, mint az egyed-relációk, modul-, oldal- és főoldal meta információk. Az M# ennek a mappának a tartalmától függ, amikor build-eli a projektet. Alább pár képet láthatunk a meta fájlokról:

A User model meta információi

A User model meta információi

Egy oldal meta információi

Egy oldal meta információi

Egy modul meta információi

Egy modul meta információi

Entitások, Oldalak, Modulok

A fejlesztőkörnyezeten elérhetők az M# magját alkotó komponensek. A webalkalmazás struktúrája az M#-on belül nagyban függ az alább kifejtésre kerülő három részegységtől, amelyeket egyébként majd további elemzés alá is vetünk a későbbiek folyamán. A fejlesztőnek fontos megérteni a három objektum működését illetve különbségeit ahhoz, hogy hatékonyan tudjon kódolni, és folyamatosan fenn tudja tartani az M# által ösztönzött magas minőséget.

Entitások

Egy entitás (vagy egyed) egy való világban létező objektumot reprezentál, amely megkülönböztethető más, a feladatkörben szerepelő entitásoktól. M#-ban az első dolog a fejlesztés során, hogy egy konkrét üzleti logikát reprezentáló adatmodellt hozzunk létre, amely entitásokat tartalmaz. Ezekre egyébként gyakran üzleti objektumokként hivatkozunk.

Az M# fejlett módszerrel képes átkonvertálni az entitásokat (minden asszociásiójukkal és kapcsolatukkal együtt) adatbázis táblákká, miközben megtartja a kapcsolataikat. Ez felszámolja a külön adatbázis és külön üzleti logika fejlesztésére való igényt, jelentősen csökkentve a fejlesztésre fordított időmennyiséget.

Az objektum orientált programozást az M# teljes mértékben támogatja, és ösztönzi is a fejlesztőket arra, hogy kihasználják az entitások tulajdonságai által nyújtott lehetőségeket.

Új entitás hozzáadása

A plusz (+) jelre avagy gombra kattintva adhatunk a projektünkhöz új egyedeket, ezt minden névtér esetében megtaláljuk.

Új entitás hozzáadása

Name

Az entitás neve.

Megjegyzés: Mindig használjunk egyes számú elnevezési konvenciót. Az M# okosan többes számot használ majd, ahol olyan kontextusba kerül, hogy több található meg belőle.

Példa: A képen látható entitás létrehozásakor az M# létrehoz egy Visual Studio osztályt Member névvel, és egy adatbázis táblát a többesszámú Members névvel.

Megjegyzés: Amikor egy entitás nevét adjuk meg, nyugodtan használjunk hagyományos angol nyelvezetet (értsd: szóközökkel és hétköznapi kis- és nagybetűs karakterhasználattal). Az M# úgyis automatikusan az alapértelmezett névkonvenciókkal fogja létrehozni az osztályt és az adatbázis táblát is.

Példa: Egy Hello world entity nevű entitásból automatikusan HelloWorldEntity nevű osztály, és HelloWorldEntities nevű adatbázistábla jön létre. Ugyanez igaz az entitás tulajdonságaira is.

Base Type

Az alaptípust akkor használjuk, amikor a fejlesztő egy már meglévő entitás típustól szeretne származtatni. Az M# létrehozza a Member nevű entitást, ami örököl a User entitástól, és emellett létrehozza még a dbo.Members adatbázis táblát is, ami 1-az-1-hez kapcsolatban fog állni a dbo.Users táblával. Ez a tulajdonság elérhető akkor is, amikor szerkesztjük az entitás felépítését.

Namespace

Logikai elkülönítés a modelen belül, amit később is meg lehet változtatni. Ennek semmilyen hatása nincs az üzleti logika névtereire a Visual Studio projekten belül vagy az adatbázisban. Ez csak egy logikai csoportosítás az M#-on beül, hogy kategorizálni lehessen az összetartozó egyedeket.

Database Mode

Ez egy nagyon fontos tulajdonság, mivel ez határozza meg a létrehozandó entitás jellemzőit. Négy opció közül lehet választani:

Managed

Az M# alapértelmezett beállítása. Létrehozza az adatbázis táblát az entitásnak azt feltételezve, hogy valódi adatokat fog tartalmazni.

Transient

Főként interfészek létrehozásakor használatos, nem hoz létre semmilyen adatbázis táblát.

Custom

Ezt kell választani, ha az entitás egy meglévő adatbázis táblához kapcsolódik.

Existing

Amikor van egy létező adatbázis, és azt akarjuk, hogy az M# legenerálja az ADO.NET adatelérési objektumokat hozzá.

Entitások kezelése

Válasszunk ki egy entitást a modellek közül, ekkor megjelenik egy helyi menü. Ezt használva az entitás szintű beállításokat érhetjük el.

Entitások kezelése

Entitás törlése

A felső menüsörön a References fülön érhető el a törlés opció.

Entitás törlése

Oldalak

Az oldalak jelentik az alapját minden webalkalmazásnak, hiszen ezek jelenítik meg a tartalmat a weboldalon. Az M# fejlesztőkörnyezetben a User Interface szekcióban érhetők el, és a Visual Studio Web Application projekt Pages mappájába kerülnek az itt létrehozott oldalak. Amikor egy projektet létrehozunk, automatikusan generálódik egy Login nevű bejelentkező oldal.

Oldalak - 1

Oldalak - 2

Új oldal létrehozása

Vagy a Create Page gombbal, vagy bármelyik weboldal ikonra kattintva létrehozhatunk új oldalt, amely lehet fő- illetve aloldal is.

Új oldal létrehozása - 1

Új oldal létrehozása - 2

Fő- és aloldal létrehozása

Bármelyiket választjuk is, egy további beállító képernyőt kapunk, amelyen az alábbi tulajdonságok adhatók meg:

Fő- és aloldal létrehozása

Name

Az oldal nevét lehet itt beállítani, ami az oldal címeként és neveként is funkcionál. Olyan oldalak, amelyek whitespavce karaktereket is tartalmaznak, keresőbarát módon kerülnek kiszolgálásra. Például a Hello world nevű oldalból Hello-world.aspx URL jön létre.

Parent

Egy szülőoldalt lehet megadni. Ha ezt beállítjuk, akkor az M# automatikusan aloldalként hozza létre az oldalt, ha üresen marad, akkor főoldal lesz.

Master Page

Kilistázza az összes mesteroldalt, ami elérhető a projektben. Nincs korlátozás arra vonatkozóan, hogy különböző mesteroldalakat választhatunk-e egymásba ágyazott főoldalaknak.

CRUD oldalak létrehozása

CRUD: Create, recall, update, delete, azaz létrehozás, visszahívás, frissítés, törlés.

Az M# egy nagyon egyszerű módját biztosítja a CRUD oldalak létrehozásának. Két oldal jön létre ezt az opciót választva:

A képen jól látható, hogy hogyan kell létrehozni CRUD oldalakat:

CRUD oldalak létrehozása

Entity Type

Ez egy kötelező mező, amely kilistázza az összes elérhető entitást a projektben. A kiválasztott egyed lesz használva a CRUD oldal generálásához.

Add to Menu

Ez az opció listázza az összes elérhető menü modult a projektben, és ezt beállítva, az adott menü fogja a navigációt tartalmazni erre az oldalra.

List Master Page

Egy mesteroldal beállítására szolgál a listaoldal számára. Kötelező mező.

Form Master Page

Egy mesteroldal beállítására szolgál az űrlapoldal számára. Ez is kötelező mező.

View Master Page

Egy mesteroldal beállítására szolgál a megtekintő oldal számára. Nem kötelező mező.

CRUD oldalak

Modulok

Az M# létrehoz ASP.NET User Control ASCX fájlt, amit Module-nek neveznek, és a Modules nevű mappában található a Website projekten belül. Ezen fájlon belül HTML div struktúrát használ a modulok definiálására. A fejlesztőnek lehetősége van korlátlan mennyiségű modul létrehozására a model entitásokon, vagy megadhat egyedi modul típusokat is, mint a menü vagy valamilyen általános célú modul.

A modulok magukba zárják a teljes működésüket: lehetnek űrlapok, listák, menük, egyszerű adatmegjelenítők, de mindegyik egy entitás típuson alapul.

Új vagy létező modul hozzáadása

Van egy másik idő spóroló funkció is az M#-ban, amivel könnyíthető a meglévő modulok listázása más oldalakon. Csak válaszd ki a modult, amit másolni szeretnél, és nyomj CTRL+C-t.Válaszd ki a céloldalt, ahol hozzá akarod adni a modult, és nyomj CTRL+V-t. Az M# zökkenőmentesen átmásolja a teljes modult a céloldalra.

Új vagy létező modul hozzáadása

Hello világ!

Ebben a részben a legegyszerűbbnek tartott Hello világ! (Hello world!) alkalmazást készítjük el, és megnézzük, hogy az M# fejlesztés mennyivel gyorsabb. A leírás végére létre tudunk majd hozni, beállítani és böngészni egy projektet.

Új projekt létrehozása

Egy M# projekt létrehozása nagyon egyszerű. Csak meg kell adni a projekt nevét, helyét, és az M# legenerálja az új projektet az alapértelmezett sablonból. Az alábbi lépéseket követve te is létre tudod hozni:

Lépések

Új projekt létrehozása

Megjegyzés: A beállítások részletes ismertetői Az IDE bemutatása című részben találhatók.

Az M# által létrehozott Hello World nevű új projekt ezután megnyílik a fejlesztőkörnyezetben az alapértelmezett böngészőben.

Ügyes vagy! Sikeresen létrehoztad az első .NET alapú alkalmazásod 3 alapvető beépített projekttel, mindössze 1 perc alatt az M# intelligens kódgenerálását használva. Ezen a ponton a tökéletesen beállított Visual Studio Solution csomag már egyből fordítható és futtatható is a beépített weboldal sablonoknak köszönhetően.

A weboldal beállítása

Az M#-nak nincs szüksége további eljárásokra vagy eseményekre annak érdekében, hogy a weboldal böngészőből elérhető legyen. Alapértelmezés szerint, az M# hozzáadja a projektet az IIS Express futtatókörnyezethez, és a weboldal a localhost alatt elérhető. Az IIS Express eléréséhez, beállításához a Windows tálcáról éred el a programot. A frissen létrehozott weboldal eléréséhez az alábbiakat kell tenned:

Az IIS Express elérése

Fontos: A weboldalt az M# fejlesztőkörnyezeten belül is böngészheted a Browse opciót választva a modul felső menüjéből. További információk Az IDE bemutatása című részben A fő kezelőfelület szekcióban találhatók.

Ha az IIS-ben kézzel szeretnéd hozzáadni a weboldalt, akkor csak a Website nevű mappát kell kiválasztanod.

Az IIS Express beállítása

Most már bármelyik böngészőprogramból elérhetőnek és böngészhetőnek kell látnod a weboldalt:

A weboldal elérése

A host név beállítása

Ahhoz, hogy a megfelelő host névvel érhesd el a weboldalt, be kell állítani az IIS-ben megadottat az M# projekt beállításain belül is.

Lépések

A beállítások menü

A Root URL beállítása

Megjegyzés: Mindig kattints a Build gombra ha változtatsz valamit a projekten, különben a változtatások nem terjednek végig az oldalon, és nem lesz elérhető az M#-on kívülről.

A host név beállítása

Most már elérheted az oldalt a kívánt host névvel bármelyik böngészőből.