DM10x - 3. semester

Ugeplan for Softwarearkitektur og Distribuerede Programmer

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

Sidst ændret: 2011.12.25

Uge 33
Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag  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
Fredag  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

Trådeksempel1 (ikke inddraget fredag)
Trådeksempel2 (ikke inddraget fredag)
Trådeksempel3 (ikke inddraget 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
Afleveringsopgaver (obligatoriske) denne uge: Socket-opgave 5
(*) 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 34 -  trådopgaver i samarbejde med CDS
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag  08:30 -

 

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)
Torsdag  08:30 -  

 

Design af tråde samt socket-programmering

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
 

- 14:00 Opgaveløsning Trådopgaver (1-6)
Fredag  08:30 -  10:00

 

Torsdagens emner fortsat
 
Afleveringsopgaver (obligatoriske) denne uge: Der skal 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  -  foreløbig plan - bemærk denne uge SDP om onsdagen
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag  08:30 -  

 

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

 

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

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

Slides om tråde og synkronisering

Trådeksempel_Parkeringshus_NO_pulseall
Trådeksempel_Parkeringshus_wait_notify

 

TrådEksempel9_ProducerConsumer_Buffer

- 14:00 Opgaveløsning (tråd opgave 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 -  

 

Observer mønster
- delegate / event

Om tråde og GUI - Invoke

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

Delegater
ObserverPattern
ObserverPattern_CascadeEvent

WindowsFormWithThreads
ObserverPattern_Tråde_og_Gui

ObserverPattern_Parkeringshus

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

- 12:00 Opgaveløsning (tråd opgave 9 obligatoriske)

 

Opgave 9 - termometer med alarm-event
Fredag  08:30 -    Opsamling på opgaver

Observer mønster
- delegate / event

Om tråde og GUI - Invoke

 

 

 

ObserverPattern_CascadeEvent

WindowsFormWithThreads
ObserverPattern_Tråde_og_Gui

ObserverPattern_Parkeringshus

- 12:00 Opgaveløsning (9 og 10)  - begge er obligatoriske
Hvis du har problemer med opgave 9, kan du evt. se en trinvis udvikling her:
  http://bjoerks.net/datamatiker/Csharp/Modeller/TraadTermoMeterMedAlarn_V01_V05.zip
Men husk at løse opgaven selv, selv om du har kigget i en løsning.
Opgave 9 - termometer med alarm-event
Opgave 10 med øl-sodavand soteringsanlæg
Til opgave 10 er følgende også relevant (du kan "stjæle" bufferklasse her)
TrådEksempel9_ProducerConsumer_Buffer
Afleveringsopgaver (obligatoriske) denne uge: Trådopgave 7 spørgsmål 1, 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 36
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag  08:30 -

 

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

Socket-chatserver design: Broadcasting
- push / observer

 

Opgave 10 med øl-sodavand soteringsanlæg
ObserverPattern_Parkeringshus

 

 

Eksempel på design-muligheder:
Chat server design i trin mod observer-mønster
ekstra: tilsvarende design for echoserver -> service klasse
For kode på chatserver vi har haft oppe tidligere (på tavlen) se også under noter i fronter

 

- 14:00 Opgaveløsning (10)  - obligatorisk
 
Opgave 10 med øl-sodavand soteringsanlæg
Til opgave 10 er følgende også relevant (du kan "stjæle" bufferklasse her)
TrådEksempel9_ProducerConsumer_Buffer
Torsdag  08:30 -  

 

Foreløbig plan

opsamling på opgaver

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

 

Løsning af trådopgave 7.1 P-HUS: Producer-Consumer & Guarded Suspention   
Løsning af trådopgave 10 Øl & Vand: Producer-Consumer Pattern med Splitter    

 

 

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 se tirsdag
Fredag  08:30 -  10:00

 

Foreløbig plan

Opsamling på emner til nu

Opstart af obligatorisk tværfagligt projekt


 
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øsning af Opgave 9 - termometer med alarm-event (Monitor og observer pattern med delegater)   -  Vs_Termometer_Monitor_Observer_Solution_20110909.zip