DM131 - 3. semester

Ugeplan for Softwarearkitektur og Distribuerede Programmer

Tema: Tråde og socket  - Gå til uge: 05, 06, 07, 09

Sidst ændret: 2014.02.14

 

Uge 05
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 - Introduktion til 3. semester
- fag og eksamen
- forventninger - studieaktivitet m.m.
- SDP indhold
Semesteroversigt (se fronter)
Basis skema (se fronter)

DM131_SDP_Grovplan.htm
 
  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

 

12:30- 14:00 Opgaveløsning uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 
 du forventes at arbejde med 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
Eksempler på socket echo servere og klient  (viser forskellige udgaver med designforbedringer)
 - dette eksempel kan evt. udskydes til fredag
 
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)
 

12:30

- 14:00

Opgaveløsning uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 
Du forventes at arbejde med trådopgaver 1-6 - disse opgaver indgår også som øvelser for CDS

  Løsningseksempel på  trådopgave 5 version1  
 
Trådopgaver (1-6)
Fredag 08:30 - Opsamling på tråde?  
- 10:00
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 
Du forventes at arbejde med trådopgaver 1-6 - disse opgaver indgår også som øvelser for CDS
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
Supplerende materiale for dem, som måtte ønske mere læsestof om emnerne
Socket:
An Introduction to Socket Programming in .NET using C# - CodeProject
Socket Code Examples   (MSDN)
Using TCP Services  (Socket server og klient - MSDN)
How to C# Socket programming  (csharp.net-informations.com)
Network socket - Wikipedia, the free encyclopedia
-------------------------------------------------------------------------------
Tråde:
Multithreaded Programming Using C# - CodeProject
MSDN
-Thread Class

-Threading Objects and Features
-Thread Pooling
-Timer
-Monitor
-Interlocked
-ReaderWriterLock


 

 

Uge 06
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 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

 

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 (fejl! manglende og for tidlig notification)
Trådeksempel_Parkeringshus_wait_notify (korrekt behandling)
 

  Design af socket-programmering - fortsat 
VI KAN MULIGVIS IKKE NÅ DE NÆSTE 2 EMNER, MEN MÅ SÅ TAGE DEM IND LIDT NÆSTE GANG og NÆSTE UGE
 

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
 

12:30- 14:00 Opgaveløsning uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 
Du forventes blive færdig med trådopgaver 1-6 - disse opgaver indgår også som øvelser for CDS
  Løsningseksempel på  trådopgave 5 version1  

Du skal herefter starte på trådopgave 7 (spørgsmål 1 er obligatorisk)
 

 

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

Onsdag 08:30 - Alm. undervisning
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

 

TrådEksempel9_ProducerConsumer_Buffer

 

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

  Observer mønster (intro)
- delegate / event
ObserverPattern
ObserverPattern_CascadeEvent

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

     
12:30

- 14:00

Opgaveløsning uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 
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   
 
Trådopgaver (7-8)
Fredag 08:30 - Alm. undervisning - pga sygdom arbejder man selv med emnerne
Opsamling på tråde, delegater og events
Om tråde og GUI - Invoke
WindowsFormWithThreads
ObserverPattern_Tråde_og_Gui

ObserverPattern_Tråde_og_Gui_Winform_og_WPF  (Ny erstatning)

ObserverPattern_Parkeringshus 

- 10:00
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 

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   
 

Trådopgaver (7-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) 
 
Opgave 9 - termometer med alarm-event

 

Afleveringsopgaver (obligatoriske) denne uge: Afleveringsopgaver (obligatoriske) denne uge: Trådopgave 7 spørgsmål 1 (du må gerne aflevere svar på hele opgaven)
(*) 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
Supplerende materiale for dem, som måtte ønske mere læsestof om emnerne
Socket:
An Introduction to Socket Programming in .NET using C# - CodeProject
Socket Code Examples   (MSDN)
Using TCP Services  (Socket server og klient - MSDN)
How to C# Socket programming  (csharp.net-informations.com)
Network socket - Wikipedia, the free encyclopedia

-------------------------------------------------------------------------------
Tråde:
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

-Threading Objects and Features
-Thread Pooling
-Timer
-Monitor
-Interlocked
-ReaderWriterLock


 

Uge 07
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 -

Opsamling onsdag
 pga sygdom

Alm. undervisning
Opsamling på tråde, delegater og events
Om tråde og GUI - Invoke (gentages pga sygdom sidste uge)

 

WindowsFormWithThreads
ObserverPattern_Tråde_og_Gui

ObserverPattern_Tråde_og_Gui_Winform_og_WPF  (Ny erstatning)
Tråde-og-GUI  (Det centrale - tricket i ovenstående)

ObserverPattern_Parkeringshus 
 

  Design af socket-programmering - fortsat (evt. først onsdag)
 




Oplæg til chat-server (fortsætter næste gang)
 

SocketEchoComandBased (eksempler med opdeling i kommunikation og behandling)
Indeholder tekstfil med indholdsbeskrivelse og PowerPoint
Medtages:
- SocketServerCmdBasedStatic
- SocketServerCmdConnected
- SocketServerCmdDisconnected_V01
 
12:30- 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
Onsdag 08:30 - Opsamling fra sidste fredag og mandag -  pga sygdom  
  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
Du kan evt. bruge elementer fra:
TrådEksempel9_ProducerConsumer_Buffer

  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
12:30

- 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
Du kan evt. bruge elementer fra:
TrådEksempel9_ProducerConsumer_Buffer

 

Fredag 08:30 - Opsamling på ugens emner samt opgaveløsning  
- 10:00
12:30 - 14:00 Opgaveløsning - se opgaver onsdag
 
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
Supplerende materiale for dem, som måtte ønske mere læsestof om emnerne
Socket:
An Introduction to Socket Programming in .NET using C# - CodeProject
Socket Code Examples   (MSDN)
Using TCP Services  (Socket server og klient - MSDN)
How to C# Socket programming  (csharp.net-informations.com)
Network socket - Wikipedia, the free encyclopedia

-------------------------------------------------------------------------------
Tråde:
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

-Threading Objects and Features
-Thread Pooling
-Timer
-Monitor
-Interlocked
-ReaderWriterLock

 

Uge 08 - ingen undervisning (vinterferie)

 

Uge 09
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 - Opsamling fra uge 7

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
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
 

12:30

- 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
Du kan evt. bruge elementer fra:
TrådEksempel9_ProducerConsumer_Buffer
Onsdag 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

12:30

- 14:00

Evt. opstart af Projekt 1 (tilgang vil fremgå af nyhed i fronter-rum) Se fronter 
Fredag 08:30 - 10:00 Projektarbejde - socketprojekt (vejledning - bjbu) Se fronter
     
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
Løsningseksempel på Øl-Vand opgave
Løsningseksempel på Termometeropgave

 

 

Uge 10
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 - 12:00 Projektarbejde - socketprojekt (vejledning - bjbu) Se fronter
12:00 - Projektarbejde  
Onsdag 08:30 - 12:00 Projektarbejde - socketprojekt (vejledning - bjbu) Se fronter
12:00 - Projektarbejde  
Fredag 08:30 -  - 10:00 Projektarbejde - socketprojekt (vejledning - bjbu) Se fronter
10:00 - Projektarbejde