DM072 - 3. semester       til andre ugeplaner

Ugeplan for Softwarearkitektur og Distribuerede Programmer

Tema: Tråde og socket

Sidst ændret: 2008.11.30

Uge 33
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag  08:30 - 11:50 

 

Netværksprogrammering med Socket

Eksempel på socket-klient og socket-server

 

Aftestning af server kan starte med brug af Telnet der også kan køres fra komandoprompt
- vælg kør og cmd
- herefter startes: TELNET ip port
- hvor ip og port angives svarende til den opsatte servers ip adresse og port

.Net app(**) kap 4.4 (kopi)

Slides om socket part 1 (nokn)
Alternative opkoblingsklasser - Sockets_IPEndPoint

Eksempel på simpel socket server og klient
Eksempeler på socket echo servere og klient
Eksempel med alternativ brug af IpEndPoint og Socket klasse

Telnet_win98 - gui telnet klient

- 14:30 Opgaveløsning (socket opgave 1-4) Opgaver med socket server og socket-klient
Torsdag  08:30 - 11:50  Gennemgang af opgave 1+2  fra tirsdag
Delegater (intro)
Trådning (intro)
Kodeeksempel på trådet server
C# Network programming
s. 354-358 (kopi)
.Net app(**) kap 4.3.1-4.3.3
(kopi)

Slides om socket part 2 multitrådet (nokn)
Slides om tråde og synkronisering
Eksempeler på socket echo servere og klient

Trådeksempel1
Trådeksempel2
Trådeksempel3

C#(*) kap 3.7 (Delegater)
C#(*) kap 13.1 & 13.3 (Tråde)

- 14:30 Opgaveløsning (socket opgave 4-5) Opgaver med socket server og socket-klient
Fredag  08:30 - 11:50  Gennemgang af opgave 3-4 fra torsdag
Delegater
Trådning
Kodeeksempler

Opdeling af socket-server i kommulination og udførsel via model / facade.
Kommando baseret kommunikation.

Statefull løsning med kontinuerlig socket-forbindelse og model / session objekt.

Statefull løsning med afbrud socket-forbindelse.

 


.Net app(**) kap 4.3.1-4.3.3 (kopi)
C#(*) kap 3.7 (Delegater)
C#(*) kap 13.1 & 13.3 (Tråde)
C#(*) kap 13.4 (Tråd synkronisering)

Slides om tråde og synkronisering

Trådeksempel1
Trådeksempel2
Trådeksempel3

Ekstra eksempler:
SocketSimpleHTTP (komandoer med flere linier input)
Kort demonstreret fredag

SocketEchoComandBased (eksempler med opdeling i kommunikation og behandling)
Indeholder tekstfil med indholdsbeskrivelse og PowerPoint
Medtaget fredag:
- SocketServerCmdBasedStatic
- SocketServerCmdConnected
- SocketServerCmdDisconnected_V01
Udgave af foregående med collection af EchoService objekter og sessionnummer
SocketServerCmdDisconnectedSession er en pænere/lidt forbedret udgave
Øvrige eksempler i zip-filen har ikke været vist / diskuteret

- 14:30 Opgaveløsning Opgaver med socket server og socket-klient
Afleveringsopgaver (obligatoriske) denne uge: Socket-opgave 5
(*) Core C# and .NET, Stephen C. Perry
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
 
 

 

Uge 34
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag  08:30 - 11:50  Studerende præsenter løsning på opgave fra torsdag / fredag

Opdeling af socket-klient kommunikation til server og brugergrænseflade.
RemoteFacade (proxy?)
- SocketClientMedRemoteFasade_ConsolApplikation
- SocketClientMedRemoteFasade_WindowsApplication

Lidt mere om statefull remote-service ved afbrudt socket-forbindelse gennem session objekt. 
Herunder også lidt mere om program-design med opdeling af ansvar ud fra eksempel
- SocketServerCmdSessionOnOff

Synkronisering af tråde
Trådsikre klasser, monitor
Eksempler på synkronisering

Producer-Consumer mønsteret ?

.Net app(**) kap 4.3.1-4.3.3 (kopi)
C#(*) kap 3.7 (Delegater)
C#(*) kap 13.3 (Tråde)
C#(*) kap 13.4 (Tråd synkronisering)

SocketEchoComandBased (eksempler med opdeling i kommunikation og behandling)
Indeholder tekstfil med indholdsbeskrivelse og PowerPoint
Medtages mandag:
- SocketClientMedRemoteFasade_ConsolApplikation
- SocketClientMedRemoteFasade_WindowsApplication
- SocketServerCmdSessionOnOff

Slides om tråde og synkronisering

Trådeksempel5_Sync
Trådeksempel6_Synk
Trådeksempel7_MonitorSynk
Trådeksempel8_SecureStop

Supplement fra internettet:
Non-Blocking synchronization
Locking and thread safety

Ekstra eksempler:
Program til test af tekst kommunikation over socket
- source til programmet hvis du vil se det

- 14:30 Opgaveløsning (tråd opgave 1-6) (3 og 4 obligatoriske)

Ekstra opgaver for de hurtige:
Gennemgå SocketServerCmdSessionOnOff og find steder, hvor der er problemer med synkronisering af tilgang til fælles resourcer (hvor progammet ikke er trådsikker). Tilføj synkronisering med lock / brug af monitor-klassen.
Udvid SocketServerCmdSessionOnOff med komando, der giver antal sessioner.
Udvid SocketServerCmdSessionOnOff med komando, der giver en liste over sessioner (sessionid'er).
Udvid SocketServerCmdSessionOnOff med komando, der giver antal klienter der er "online" connectede.
Brug af de nye kommandoer skal også kunne foregå trådsikret.

Trådopgaver (1-6)


SocketEchoComandBased
Program til test af tekst kommunikation over socket

Torsdag  08:30 - 11:50  Studerende præsenter løsning på opgave 3 fra tirsdag

Synkronisering af tråde
Trådsikre klasser, monitor
Eksempler på synkronisering

Producer-Consumer mønsteret (push - pull)
- flere producer/consumer til samme ressource
- med bounded buffer problem

Broadcasting
- push / observer

.Net app(**) kap 4.3.1-4.3.3 (kopi)
C#(*) kap 3.7 (Delegater)
C#(*) kap 13.3 (Tråde)
C#(*) kap 13.4 (Tråd synkronisering)

Slides om tråde og synkronisering

Trådeksempel_Parkeringshus_NO_pulseall
Trådeksempel_Parkeringshus_wait_notify

Chat server design i trin mod observer-mønster
ekstra: tilsvarende design for echoserver -> service klasse
- 14:30 Opgaveløsning (tråd opgave 7) (spørgsmål 1 er obligatorisk) Trådopgaver (7-8)
Trådeksempel_Parkeringshus_wait_notify
Fredag  08:30 - 11:50  Studerende præsenter løsning på opgave 4  fra tirsdag og måske opgave 7 fra torsdag

Observer mønster
- delegate / event

Om tråde og GUI - Invoke

Delegater
ObserverPattern
ObserverPattern_CascadeEvent

WindowsFormWithThreads
ObserverPattern_Tråde_og_Gui

C#(*) kap 13.1 & 13.2 (aynkron delegat - tråd)
C#(*) kap 3.7 (Delegater)
- 14:30 Opgaveløsning - opgave fremkommer senere  
Afleveringsopgaver (obligatoriske) denne uge: Trådopgave 3, 4, 7 (spørgsmål 1)
(*) Core C# and .NET, Stephen C. Perry
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
 

 

 

 

Uge 35
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag  08:30 - 11:50  Studerende præsenter opgave 7 fra torsdag


Flere eksempler på brug af observer mønster
- delegate / event

 

 

Flere eksempler på brug af Producer-Consumer mønsteret (push - pull)
- flere producer/consumer til samme ressource
- med bounded buffer problem

C#(*) kap 13.1 & 13.2 (aynkron delegat - tråd)
C#(*) kap 3.7 (Delegater)
Slides om tråde og synkronisering

Fra sidste fredag
-
Delegater
- ObserverPattern
- ObserverPattern_CascadeEvent

ObserverPattern_Tråde_og_Gui
ObserverPattern_Parkeringshus

Trådeksempel10_TrådOgResourceMonitor
TrådEksempel9_ProducerConsumer_Buffer

- 14:30 Opgaveløsning (9 og 10)  - begge er obligatoriske Opgave 9 - termometer med alarm-event
Opgave 10 med øl-sodavand soteringsanlæg
Torsdag  08:30 - 11:50  Studerende præsenter opgave 8 fra tirsdag

Opsamling på tirsdagens emner


Mere om mønstre se note på SDP i BlackBoard (ganske vist implementeret i java)

TrådEksempel9_ProducerConsumer_Buffer
Trådeksempel10_TrådOgResourceMonitor


Chat server design i trin mod observer-mønster

Program til test af tekst kommunikation over socket (source)
-har tråd til sende og en anden tråd til at modtage, så der kan modtages uden at blokkere for at sende.
- 14:30 Opgaveløsning (9 og 10)  - begge er obligatoriske  Til begge opgaver er følgende eksempler de mest relevante:
Trådeksempel10_TrådOgResourceMonitor
ObserverPattern_Tråde_og_Gui

Desuden kan man i parkeringshuset se både tråd, resource-monitor og GUI med observer
ObserverPattern_Parkeringshus

Til opgave 10 er følgende også relevant (du kan "stjæle" bufferklasse her)
TrådEksempel9_ProducerConsumer_Buffer

Fredag  08:30 - 11:50  Studerende præsenter opgave 9 / 10

Reader-Writer lock problem/mønster? 

Chat server med sorter - ikke kun broadcast
Design-løsninger:
- broadcast med fra, til og meddelelse - klient sorterer fra (på server / på klient)
- model sortering - med og uden kø for hver klient
- med og uden blokering ved afsendelse / modtagelse på server
- med pull på klientsiden
 
- 14:30 Opgaveløsning (9 og 10)  - begge er obligatoriske  Til begge opgaver er følgende eksempler de mest relevante:
Trådeksempel10_TrådOgResourceMonitor
ObserverPattern_Tråde_og_Gui

Desuden kan man i parkeringshuset se både tråd, resource-monitor og GUI med observer
ObserverPattern_Parkeringshus

Til opgave 10 er følgende også relevant (du kan "stjæle" bufferklasse her)
TrådEksempel9_ProducerConsumer_Buffer

 
Afleveringsopgaver (obligatoriske) denne uge: Opgave 9 (termometer-alarm-monitor) og Opgave 10 (øl-vand sorterings simulering)
(*) Core C# and .NET, Stephen C. Perry
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard