DM11x - 3. semester

Ugeplan for Softwarearkitektur og Distribuerede Programmer

Tema: Tråde og socket  - Gå til uge: 34, 35, 36, 37

Sidst ændret: 2012.09.10

Uge 34
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - 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 (Socket)

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

Programmer til test af socketforbindelser:
Telnet_win98 - gui telnet klient

Program til test af tekst kommunikation over socket

- 14:00 Opgaveløsning (socket opgave 1-4) Opgaver med socket server og socket-klient
Onsdag 08:30 - Gennemgang af opgave 1+2  fra sidste gang
Delegater (intro)
Trådning (intro)
Kodeeksempel på trådet server
C# Network programming s. 354-358 (Socket)
Core C# (*) kap 13.1 (Thread intro)
Core C#(*) kap 3.7 om Delegates (se Fronter)
C# to the point (***) kap 11.1
om Delegates (se Fronter)
.Net app(**) kap 4.3.1-4.3.3
(Thread)

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

 
evt. alternativ om tråde - Core C#(*) kap 13.3
(Thread)

- 10:00 Opgaveløsning (socket opgave 4-5) Opgaver med socket server og socket-klient
10:20 - Gennemgang af socket-opgave 3-5 fra sidste gang



Designovervejelser - de første spæde forsøg på forbedringer

Trådning

Kodeeksempler

 

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

Design med tråde

 

 

 

.Net app(**) kap 4.3.1-4.3.3 (Thread)
Core C# (*) kap 13.1 (Thread intro)
Core C# (*) kap 13.4 (Thread Synchronization)

SocketEchoServerDesign

Slides om tråde og synkronisering

Trådeksempel1 - primitiv enkel tråd
Trådeksempel2 - primitiv 2 tråde
Trådeksempel3 - tråd i egen klasse
Trådeksempel4 - tråd i egen klasse - flere tråde - join

Trådeksempel5_Sync - synkronisering - primitiv uden resource-monitor
Trådeksempel6_Synk - synkronisering - primitiv uden resource-monitor
Trådeksempel7_MonitorSynk- synkronisering med monitor - monitor design
Trådeksempel8_SecureStop- sikker stop af tråd - det gode tråd design

Den designmæssige gode løsning:
Trådeksempel10_TrådOgResourceMonitor - med tråd klasse og resource-monitor - det gode design

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

evt. alternativ /uddybende om tråde - Core C#(*) kap 13.3 (Working with Thread)
 

 

- 14:00

Opgaveløsning (trådopgaver 1-6)

  Løsningseksempel på  trådopgave 5 version1  
 
Trådopgaver (1-6)
Fredag 08:30 - Opsamling på tråde?

Fortsættelse fra sidste fredag: Kontrakt for undervisning/forventningsafstemning

 
- 10:00    
Afleveringsopgaver (obligatoriske) denne uge: Socketopgave 5 - Der skal desuden afleveres en status på trådopgaver (hvor langt er du nået / er der problemer?)
(*) Core C# and .NET, Stephen C. Perry - se Fronter
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se Fronter
(***) C# To the point -.., Hanspeter Mössenböck -   - se Fronter
 


 

 

Uge 35
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - Opsamling på tråde fra sidste uge

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

 

 


 

Design af tråde og fælles resourcer
 

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

Om tråde se også sidste onsdag

Slides om tråde og synkronisering

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

evt. alternativ /uddybende om tråde - Core C#(*) kap 13.3 (Working with Thread)
Trådeksempel5_Sync - synkronisering - primitiv uden resource-monitor
Trådeksempel6_Synk - synkronisering - primitiv uden resource-monitor
Trådeksempel7_MonitorSynk- synkronisering med monitor - monitor design
Trådeksempel8_SecureStop- sikker stop af tråd - det gode tråd design

Den designmæssige gode løsning:
Trådeksempel10_TrådOgResourceMonitor - med tråd klasse og resource-monitor - det gode design

Trådeksempel_Parkeringshus_NO_pulseall
Trådeksempel_Parkeringshus_wait_notify

  Opgaveløsning (trådopgaver 1-6)
  Løsningseksempel på  trådopgave 5 version1  

Opgaveløsning (tråd opgave 7) (spørgsmål 1 er obligatorisk)

Trådopgaver (1-6)

Trådopgaver (7-8)
Til opgaver kan du tage udgangspunkt i følgende:
Trådeksempel_Parkeringshus_wait_notify
 

  Design af socket-programmering - fortsat
 

Oplæg til chat-server (delvis udskudt)

Lidt om protokoller (vi ser kort på http) (udskudt)

 

SocketEchoComandBased (eksempler med opdeling i kommunikation og behandling)
Indeholder tekstfil med indholdsbeskrivelse og PowerPoint
Medtages:
- SocketServerCmdBasedStatic
- SocketServerCmdConnected
- SocketServerCmdDisconnected_V01

Programmer til test af socketforbindelser:
Telnet_win98 - gui telnet klient

Program til test af tekst kommunikation over socket
 


 

 

 

 

- 14:00

Emner flyttet frem fra torsdag (grundet nogle skal med hyttetur med 1.år næste uge og vil være fraværende tirsdag)

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

Lidt generelt om delegater - vi tager lidt hul på det


 

TrådEksempel9_ProducerConsumer_Buffer


C# to the point (***) kap 11.1
om delegater
C#(*) kap 3.7 (Delegater)
Delegater eksempler

Torsdag 08:30 - Opsamling på tirsdagen -  Producer-Consumer

 

 
 


- 11:50

Emner flyttet frem fra torsdag (grundet nogle skal med hyttetur med 1.år næste uge og vil være fraværende tirsdag)
Observer mønster (intro)
- delegate / event

 

C# to the point (***) kap 11.1 om delegater
C#(*) kap 3.7 (Delegater)
ObserverPattern
ObserverPattern_CascadeEvent

Ekstra læsestof fra wikipedia (publish/subscribe):
http://en.wikipedia.org/wiki/Publish/subscribe
 

- 14:00 Opgaveløsning på egen hånd (tråd opgave 7 og 8)

Du kan få hjælp ved at se på løsningen hvis du går helt i stå, men brug denne mulighed med omtanke og prøv selv at løse opgaven først og hvis du ser løsningen, så prøv bagefter på egen hånd forfra.
Løsning af trådopgave 7.1 P-HUS: Producer-Consumer & Guarded Suspention   

Opgaveløsning (tråd opgave 9  - obligatorisk til næste uge)
 
Trådopgaver (7-8)

 

 

Opgave 9 - termometer med alarm-event

Fredag 08:30 - Om tråde og GUI - Invoke

WindowsFormWithThreads
ObserverPattern_Tråde_og_Gui

ObserverPattern_Parkeringshus

- 10:00 Opgaveløsning på egen hånd (tråd opgave 7 og 8)

Opgaveløsning (tråd opgave 9  - obligatorisk til næste uge)

Du kan få hjælp ved at se på løsningen hvis du går helt i stå, men brug denne mulighed med omtanke og prøv selv at løse opgaven først og hvis du ser løsningen, så prøv bagefter på egen hånd forfra.
Løsning af Opgave 9 - termometer med alarm-event (Monitor og observer pattern med delegater) 

 
Afleveringsopgaver (obligatoriske) denne uge: Trådopgave 7 spørgsmål 1
(*) Core C# and .NET, Stephen C. Perry - se Fronter
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se Fronter
(***) C# To the point -.., Hanspeter Mössenböck -   - se Fronter
 


 

 

Uge 36
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - Opsamling på emnerne fra sidste uge  
 

 

- 14:00

Opgaveløsning (tråd opgave 9)

Du kan få hjælp ved at se på løsningen hvis du går helt i stå, men brug denne mulighed med omtanke og prøv selv at løse opgaven først og hvis du ser løsningen, så prøv bagefter på egen hånd forfra.
Løsning af Opgave 9 - termometer med alarm-event (Monitor og observer pattern med delegater) 
 

Opgave 9 - termometer med alarm-event
Torsdag 08:30 - Opsamling på opgaver fra sidste uge

Mere design med tråde:
- (simulering af ) fysiske processer
- buffer
- producer, consumer
- splitter, sorter
- løs kobling med observer, eventbaseret overvågning
 

 


Opgave 10 med øl-sodavand soteringsanlæg
ObserverPattern_Tråde_og_Gui
ObserverPattern_Parkeringshus

 

  Design af socket-programmering - fortsat
 

Oplæg til chat-server

Lidt om protokoller (vi ser kort på http)

 

SocketEchoComandBased (eksempler med opdeling i kommunikation og behandling)
Indeholder tekstfil med indholdsbeskrivelse og PowerPoint
Medtages:
- SocketServerCmdBasedStatic
- SocketServerCmdConnected
- SocketServerCmdDisconnected_V01

Programmer til test af socketforbindelser:
Telnet_win98 - gui telnet klient

Program til test af tekst kommunikation over socket
 

  Socket-chatserver design: Broadcasting
- push / observer
Eksempel på design-muligheder:
Chat server design i trin mod observer-mønster
ekstra: tilsvarende design for echoserver -> service klasse
 
- 14:00 Opgaveløsning (tråd opgave 9)

Opgaveløsning (tråd opgave 10  - obligatorisk til næste uge)
Du kan få hjælp ved at se på løsningen hvis du går helt i stå, men brug denne mulighed med omtanke og prøv selv at løse opgaven først og hvis du ser løsningen, så prøv bagefter på egen hånd forfra.
Løsning af trådopgave 10 Øl & Vand: Producer-Consumer Pattern med Splitter    

Opgave 9 - termometer med alarm-event

Opgave 10 med øl-sodavand soteringsanlæg

Fredag 08:30 - Opsamling på opgaver og emner fra torsdag

evt. lidt om http protokol med specielle klasser hertil

 
- 10:00    
Afleveringsopgaver (obligatoriske) denne uge: Opgave 9 (termometer-alarm-monitor)
(*) Core C# and .NET, Stephen C. Perry - se Fronter
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se Fronter
(***) C# To the point -.., Hanspeter Mössenböck -   - se Fronter
 


 

 

Uge 37
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 -

Proxy-mønsteret

 

Diskussion af ideer og design af chatserver med brug af producer-consumer mønster med buffer og mulighed for ikke at holde socket åben under hele chat'en

 

Slides om Proxy mønster
Eksempel på brug af proxy-mønster til echoservice'en fra tidligere


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

 
 

 

- 14:00

Opgaveløsning (tråd opgave 10  - obligatorisk)
Du kan få hjælp ved at se på løsningen hvis du går helt i stå, men brug denne mulighed med omtanke og prøv selv at løse opgaven først og hvis du ser løsningen, så prøv bagefter på egen hånd forfra.
Løsning af trådopgave 10 Øl & Vand: Producer-Consumer Pattern med Splitter    
 
Opgave 10 med øl-sodavand soteringsanlæg
Torsdag 08:30 - Opsamling på tråd og socketopgaverne til nu

Kommunikation på lidt højere abstraktionsniveau
- Http klient med WebClient istedet for Socket

 

 

Om WebClient klassen:
http://msdn.microsoft.com/en-us/library/system.net.webclient(v=vs.80).aspx

 

- 14:00

Opstart af Projekt 1 (tilgang vil fremgå af nyhed i fronter-rum)  
Fredag 08:30 - Projektarbejde  
- 10:00    
Afleveringsopgaver (obligatoriske) denne uge: Opgave 10 (øl-vand sorterings simulering)
(*) Core C# and .NET, Stephen C. Perry - se Fronter
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se Fronter
(***) C# To the point -.., Hanspeter Mössenböck -   - se Fronter