Tråd bedømmelse:
  • 0 Stemmer - 0 Gennemsnit
  • 1
  • 2
  • 3
  • 4
  • 5
WCF Movie Service med PHP og Android som klienter:
07-08-2013, 22:58 (Denne besked var sidst ændret: 10-08-2013, 17:26 af jamenjamen.)
#1
WCF Movie Service med PHP og Android som klienter:
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 :
  1. PHP
  2. Android/Java
  3. iOS
  4. 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)
Jeg har ikke lige kendt en side jeg kan skaffe exe filer for jer, ellers må i selv lige gøre det eller recompile.
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.

[Billede: zuLnen5s.png]
[Billede: 5gCBvCNs.png]


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:

[Billede: osH4FAV.png]

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:
    1. Bil(Type,årgang,motor,plader)
    2. GPS(Længdegrad,Breddegrad)
    3. Besked(Modtager,Afsender,Tekst,Tidspunkt, GPS koordinat)
    4. Sang(Artist,Titel,Album,Længde)
    Disse klasser kan derfor bruges i alle 3 lag

  • 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:
    1. SQL servere
    2. XML filer
    3. Webservere
    4. Andre steder.
    Funktionerne i disse klasser står kun for at gemme eller skaffe den data som man har adgang til. Hvis det er et GPS koordinat så læses det f.eks. fra en XML fil som:

    Kode:
    <GPS>
    <Længde>333.00</Længde>
    <Bredde>321.00</Bredde>
    </GPS>
    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.

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.


Vedhæftede fil(er)
.zip   MovieServer Projekt.zip (Størrelse: 945,73 KB / Downloads: 5)
Find alle beskeder fra denne bruger
Citer denne besked i et svar
08-08-2013, 01:27
#2
RE: WCF Movie Service med PHP og Android som klienter:
Interessant.
Jeg plejer bare at køre dir \B F:\Movies > liste.txt og så har jeg en fil liste over film i min mappe :)
Det kræver selvfølgelig også at man skriver navnene pænt, men ja.

Kode:
...
James Bond - Quantum of Solace
James Bond - The Living Daylights
James Bond - The Man With The Golden Gun
James Bond - The Spy Who Loved Me
James Bond - The World is not Enough
James Bond - Thunderball
James Bond - Tomorrow Never Dies
James Bond - You Only Live Twice
Jonah Hex
Knight and Day
Koslænget
Kung Fu Panda
Lille Kylling
Lord of the Rings - Return of the King
Lord of the Rings - The Fellowship of the Ring
MacGruber
Madagascar 3 - Europes Most Wanted
Meet the Spartans
Men in Black
Men in Black 2
Monsters Inc
...
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
08-08-2013, 01:45 (Denne besked var sidst ændret: 08-08-2013, 02:11 af jamenjamen.)
#3
RE: WCF Movie Service med PHP og Android som klienter:
(08-08-2013, 01:27)Doctor Blue Skrev: Interessant.
Jeg plejer bare at køre dir \B F:\Movies > liste.txt og så har jeg en fil liste over film i min mappe :)
Det kræver selvfølgelig også at man skriver navnene pænt, men ja.

Kode:
...
James Bond - Quantum of Solace
James Bond - The Living Daylights
James Bond - The Man With The Golden Gun
James Bond - The Spy Who Loved Me
James Bond - The World is not Enough
James Bond - Thunderball
James Bond - Tomorrow Never Dies
James Bond - You Only Live Twice
Jonah Hex
Knight and Day
Koslænget
Kung Fu Panda
Lille Kylling
Lord of the Rings - Return of the King
Lord of the Rings - The Fellowship of the Ring
MacGruber
Madagascar 3 - Europes Most Wanted
Meet the Spartans
Men in Black
Men in Black 2
Monsters Inc
...

Scenarier hvor det ikke lige er så nemt:
Ude med venner
Kørsel hvor en spørger
Du ikke kan opnå command/RDP til din server
Flere diske - flere commands( vi kører med 3 diske pt)
+ Ikke så sejt! ;)

Synes f.eks:
App #1
[Billede: L0jbq7Ds.png]
App #2
[Billede: s6KpUOKs.png]
PHP website

[Billede: DevLAP7s.png]
virker federe :)
Samt det har været et sjovt projekt.
Find alle beskeder fra denne bruger
Citer denne besked i et svar
08-08-2013, 16:42
#4
RE: WCF Movie Service med PHP og Android som klienter:
*host*
Tjaah, overvejet at køre de 3 diske i RAID? ;)
Men ja, det er da sikkert noget der er lidt sjovt at rode med :)
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
08-08-2013, 21:05
#5
RE: WCF Movie Service med PHP og Android som klienter:
Har et raid så det er faktisk 7 diske men :
4*3TB i et raid til standard film
Også 2*2 Tb som er til saga film og vi har bare ikke gidet at lave raid af det før næste opgradering

En anden side er at det mest er lavet som virksomhed arbejde hvor en klient har bestilt det så mere som øvelse
Find alle beskeder fra denne bruger
Citer denne besked i et svar
08-08-2013, 23:32
#6
RE: WCF Movie Service med PHP og Android som klienter:
(08-08-2013, 21:05)jamenjamen Skrev: Har et raid så det er faktisk 7 diske men :
4*3TB i et raid til standard film
Også 2*2 Tb som er til saga film og vi har bare ikke gidet at lave raid af det før næste opgradering

En anden side er at det mest er lavet som virksomhed arbejde hvor en klient har bestilt det så mere som øvelse

Det er alligevel lidt mere end hvad jeg har :P Jeg har 2x1 TB i RAID 1 (Fordi min mor sætter sin Elvis samling meget højt) i vores NAS og 2x1 TB i RAID 0 i computeren. Pladsen går dog mest til spil og andre ting og sager jeg aldrig får slettet.
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
09-08-2013, 13:18
#7
RE: WCF Movie Service med PHP og Android som klienter:
Håber i får krypteret dem.. (:.

Bruger selv en gammel bærbar + lidt php og en afspiller.
har kun 100 gb, men flv så de fylder intet.
Find alle beskeder fra denne bruger
Citer denne besked i et svar
10-08-2013, 17:09
#8
RE: WCF Movie Service med PHP og Android som klienter:
-BUMP- har tilføjet noget mønster/arkitektur teori
Find alle beskeder fra denne bruger
Citer denne besked i et svar
10-08-2013, 23:10
#9
RE: WCF Movie Service med PHP og Android som klienter:
(10-08-2013, 17:09)jamenjamen Skrev: -BUMP- har tilføjet noget mønster/arkitektur teori

Sjovt, jeg er aldrig blevet undervist i det, det er bare sådan jeg automatisk koder. Jeg var ikke klar over at man gik så meget op i det :P
Well well sees one that (Det er dårlig engelsk med vilje)
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
« Ældre | Nyere »




User(s) browsing this thread: 1 Gæst(er)