.NET Remoting
In dit labo maken we een aantal gegevens uit de voetbaldatabank beschikbaar voor andere applicaties via .NET remoting in C#.
Hiervoor maken we zes "Visual Studio"-projecten:
- VoetbalInterface: bevat de publieke interface van de VoetbalDataLaag. De assembly (dll) die dit project aanmaakt, moet aan alle andere projecten toegevoegd worden.
- VoetbalDataLaag: ook dit project is van het type "Class Library" en genereert een assembly. In dit project wordt de interface die in het project VoetbalInterface gedefinieerd is, geïmplementeerd. Dit project bevat ook het meegeleverde databankbestand voetbal.mdf.
- TestVoetbalDataLaag is een webapplicatie die de VoetbalDataLaag uittest zonder gebruik te maken van remoting. Dit project mag beide assembly's (VoetbalInterface en VoetbalDataLaag) gebruiken.
- VoetbalServer is de server die via remoting toegang geeft tot de objecten van de datalaag. Dit project mag beide assembly's (VoetbalInterface en VoetbalDataLaag) gebruiken.
- VoetbalClientConsole is een console-applicatie die via remoting voetbalgegevens opvraagt aan de server. Dit project mag enkel de assembly van het project VoetbalInterface gebruiken!!
- VoetbalClientWeb is een webapplicatie die via remoting voetbalgegevens opvraagt aan de server. Dit project mag enkel de assembly van het project VoetbalInterface gebruiken!!
VoetbalInterface
Dit project maakt één publieke interface aan die twee eigenschappen en/of methodes declareert om de volgende functionaliteit te voorzien:
- Alle voetbalwedstrijden opvragen
- Alle spelers van één ploeg opvragen. De ploeg wordt gekenmerkt door zijn unieke identificatie.
Als je dit project compileert krijg je een assembly/library (.dll).
VoetbalDataLaag
Dit project bevat de implementatie van de interface die je definieerde in het project VoetbalInterface. In dit project haal je de gevraagde gegevens op uit het databankbestand voetbal.mdf.
Om de SQL-opdrachten op te stellen kan je gebruik maken van het venster "Server Explorer" in Visual Studio. Kies voor een tabel "Show Table Data" en verander het type van het paneel naar SQL. De connectiestring kan je achterhalen door de eigenschappen van de "Data Connection" te bekijken.
Dit project moet toegang krijgen tot de .dll van de VoetbalInterface. Normaalgezien moet je die kopieren naar dit project, maar tijdens de ontwikkeling is het makkelijker om een referentie toe te voegen naar de dll in het eerste project, zodat die steeds up to date is.
Vergeet bij de implementatie niet dat je object remote aanspreekbaar moet zijn!
TestVoetbalDataLaag
Maak een website TestVoetbalDataLaag waarin je je datalaag uittest, zonder gebruik te maken van remoting. Maak twee webformulieren (zie ook figuren onderaan deze pagina):
- Het eerste formulier toont alle wedstrijden in een grid
- In het tweede formulier kan je de identificatie van een ploeg ingeven, het formulier toont dan alle spelers van die ploeg en hun functies.
VoetbalServer
Maak een server die de diensten van VoetbalDataLaag aanbiedt via remoting. Alle configuratie ivm de databank zal je moeten kopiëren naar het configuratiebestand van de server. De server biedt de dienst aan gebruik makend van het http-protocol.
Tip: verander de eigenschappen van het configuratiebestand zodat het meegekopieerd wordt naar de uitvoermap.
VoetbalClientConsole
Schrijf een client die gebruik makend van remoting alle wedstrijden opvraagt aan de server. De client mag enkel gebruik maken van VoetbalInterface-assembly. Het volgende stukje code illustreert hoe de client een proxy-object ophaalt. In het voorbeeld is VoetbalInfo het type van de interface. De URL stelt de URL voor waarop het remote object beschikbaar is.
VoetbalInfo info = (VoetbalInfo) System.Activator.GetObject(typeof(VoetbalInfo), "http://.../...");
Als je deze methode gebruikt, hoef je geen 'wellknown' object te declareren in de configuratie van de client.
Om te debuggen kan het handig zijn om print-opdrachten toe te voegen in de datalaag.
Pas nu de server en de client aan zodat ze gebruik maken van een geëncrypteerde verbinding over TCP.
VoetbalClientWeb
Maak een website bestaande uit twee webpagina's (zie ook figuren onderaan deze pagina):
- De eerste webpagina toont alle wedstrijden in een grid
- In de tweede webpagina kan je de identificatie van een ploeg ingeven, het formulier toont dan alle spelers van die ploeg en hun functies.
De data voor de webapplicatie wordt verkregen van de remote service over TCP. Schakel hiervoor de encryptie van de verbinding opnieuw uit.
Indienen
Plaats je oplossing op U:\netwerken IV\RMIREMOTING tenlaatste vrijdag 11 december om 13u00.
|