07-08-2013, 22:58
Halløj Shellsec.
Jeg deler her et lille projekt jeg har arbejdet på i den sidste periode af min ferie.
I min lejlighed kører jeg en server som hoster en masse af mit medie underholdning(film, masser af serier etc) og da enten jeg selv eller andre vil vide hvilke film jeg ligger inde med er det træls at oprette en VNC forbindelse eller tjekker på et Windows share hele tiden og problematisk når man er på farten.
Derfor har jeg lavet en WCF Webservice som indsamler informationer på enhver film jeg har liggende og gør det muligt at hente ned til andre klienter såsom :
Jeg vil ikke blot dele min WebService og klienterne her men også kommentere og skrive lidt teori. Jeg er på 5.Semester datamatiker så koden er skrevet ud fra et mere "proff"/skole minded øjesyn.
(10/8/2013/)Så er applikationen og selvfølgelig koden.
I ZIP filen ligger der:
Hvis du starter programmet så kan du i din browser navigere til : "http://localhost:47895/MovieService/getAllMovies" og så skal den gerne returnere 5 film i JSON format.
Nu til noget mere til teori.
Tre lags arkitektur
Når vi koder så arbejder man ofte ud fra den forudsætning at en del af ens produkt skal kunne ændres/opgraderes uden at det ødelægger resten af produktet går i stykker imens.
Derfor er jeg blevet undervist i at kode i en 3 lags arkitektur. Denne arkitektur ser således ud:
En vigtig del at forstå at når det deles op sådan her så kan der kun laves funktions kald den vej som pilene viser. Altså UI lag må kalde BLL funktioner og BLL funktioner må kalde DAL funktioner og ellers intet andet. Selvfølgelig må der kaldes indenfor det samme lag.
Det at man har gjort lagene Abstrakte gør at man kan skifte koden i et lavere lag uden at det påvirker det ”kaldende” lags kode.
Navnene på de 3 lag udleder lidt hvad hvert lag gør men jeg vil alligevel forklare dem:
Min egen erfaring:
Jeg har nu kodet på denne måde i 2 år og jeg synes det er en rigtig god måde at kode på.
Både den måde man organiserer det hele på og så det at det giver langt større frihed når man vil opgradere eller skifte noget ud.
Jeg kan kun anbefale det
Hvis der mangler noget eller du har spørgsmål så skriv løs :)
Senere:WCF.
Jeg deler her et lille projekt jeg har arbejdet på i den sidste periode af min ferie.
I min lejlighed kører jeg en server som hoster en masse af mit medie underholdning(film, masser af serier etc) og da enten jeg selv eller andre vil vide hvilke film jeg ligger inde med er det træls at oprette en VNC forbindelse eller tjekker på et Windows share hele tiden og problematisk når man er på farten.
Derfor har jeg lavet en WCF Webservice som indsamler informationer på enhver film jeg har liggende og gør det muligt at hente ned til andre klienter såsom :
- PHP
- Android/Java
- iOS
- osv
Jeg vil ikke blot dele min WebService og klienterne her men også kommentere og skrive lidt teori. Jeg er på 5.Semester datamatiker så koden er skrevet ud fra et mere "proff"/skole minded øjesyn.
(10/8/2013/)Så er applikationen og selvfølgelig koden.
I ZIP filen ligger der:
- Executable & DLL Filer
- Koden
- Stub filer(billeder & nfo'er)
Hvis du starter programmet så kan du i din browser navigere til : "http://localhost:47895/MovieService/getAllMovies" og så skal den gerne returnere 5 film i JSON format.
Nu til noget mere til teori.
Tre lags arkitektur
Når vi koder så arbejder man ofte ud fra den forudsætning at en del af ens produkt skal kunne ændres/opgraderes uden at det ødelægger resten af produktet går i stykker imens.
Derfor er jeg blevet undervist i at kode i en 3 lags arkitektur. Denne arkitektur ser således ud:
En vigtig del at forstå at når det deles op sådan her så kan der kun laves funktions kald den vej som pilene viser. Altså UI lag må kalde BLL funktioner og BLL funktioner må kalde DAL funktioner og ellers intet andet. Selvfølgelig må der kaldes indenfor det samme lag.
Det at man har gjort lagene Abstrakte gør at man kan skifte koden i et lavere lag uden at det påvirker det ”kaldende” lags kode.
Navnene på de 3 lag udleder lidt hvad hvert lag gør men jeg vil alligevel forklare dem:
- BE laget
Laget her repræsenterer alle de slags objekter med arbejder i applikationen.
I mit kode er det f.eks. NFO og Movie objekter. Det er altså de ting som produktet primært omhandler.
Alle klasserne her står primært mest for bare at have variabler og funktioner der returnerer deres værdi
Eksempler:
- Bil(Type,årgang,motor,plader)
- GPS(Længdegrad,Breddegrad)
- Besked(Modtager,Afsender,Tekst,Tidspunkt, GPS koordinat)
- Sang(Artist,Titel,Album,Længde)
- Bil(Type,årgang,motor,plader)
- Præsentations laget.
Dette lag står for at styre brugerens interaktion med applikationen de anvender.
Det her kode som opdaterer UI, handler keyboard presses, knap klip og lignende er. Altså alt kode som har noget med brugeren at gøre.
- Logik laget
Her ligger alt logikken i ens program, hvis man arbejder med GPS koordinater så ligger Haversine udregningerne her.
Shortest Path First, sorternings algoritmer men også funktionalitet som at skubbe CD drev ud, skifte en sang eller behandle et objekt bør ligge her.
- Data Adgang Laget
Her ligger koden som står for at gemme ens BE objekter eller andet data et persistent sted såsom:
- SQL servere
- XML filer
- Webservere
- Andre steder.
hvilket så vil returnere et GPS objekt med disse to variabler sat og det kan så anvendes til Logik laget til en haversine udregning hvis resultat så kan vises i UI via præsenstations laget.Kode:<GPS>
<Længde>333.00</Længde>
<Bredde>321.00</Bredde>
</GPS>
- SQL servere
Min egen erfaring:
Jeg har nu kodet på denne måde i 2 år og jeg synes det er en rigtig god måde at kode på.
Både den måde man organiserer det hele på og så det at det giver langt større frihed når man vil opgradere eller skifte noget ud.
Jeg kan kun anbefale det
Hvis der mangler noget eller du har spørgsmål så skriv løs :)
Senere:WCF.