DM082 - 3. semester       til andre ugeplaner

Ugeplan for Softwarearkitektur og Distribuerede Programmer

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

Sidst ændret: 2009.09.14

Uge 34
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag  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 (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:30 Opgaveløsning (socket opgave 1-4) Opgaver med socket server og socket-klient
Tirsdag  12:30 - 14:00  Gennemgang af opgave 1+2  fra tirsdag
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 BlackBoard)
C# to the point (***) kap 11.1
om Delegates (se BlackBoard)
.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
Trådeksempel2
Trådeksempel3

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

- 14:30 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 BlackBoard
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
(***) C# To the point -.., Hanspeter Mössenböck -   - se BlackBoard
 


 

Uge 35
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag  08:30 - 11:50 

 

Gennemgang af socket-opgave 3-5 fra torsdag
 


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:30 Opgaveløsning Trådopgaver (1-6)
Tirsdag  12:30 - 14:00    SocketEchoComandBased (eksempler med opdeling i kommunikation og behandling)
Indeholder tekstfil med indholdsbeskrivelse og PowerPoint
Medtages:
- SocketServerCmdBasedStatic
- SocketServerCmdConnected
- SocketServerCmdDisconnected_V01
 
- 14:30 Opgaveløsning Trådopgaver (1-6)
Afleveringsopgaver (obligatoriske) denne uge: Trådopgave 3, 4
(*) Core C# and .NET, Stephen C. Perry - se BlackBoard
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
(***) C# To the point -.., Hanspeter Mössenböck -   - se BlackBoard
 

 

Uge 36
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag  08:30 - 11:50  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:30 Opgaveløsning (tråd opgave 7) (spørgsmål 1 er obligatorisk) Trådopgaver (7-8)
Trådeksempel_Parkeringshus_wait_notify
Onsdag  08:30 - 11:50  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

  Opgaveløsning (tråd opgave 9 obligatoriske) Opgave 9 - termometer med alarm-event
Afleveringsopgaver (obligatoriske) denne uge: Trådopgave 7 spørgsmål 1, trådopgave 9
(*) Core C# and .NET, Stephen C. Perry - se BlackBoard
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
(***) C# To the point -.., Hanspeter Mössenböck -   - se BlackBoard
 


 

Uge 37
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag  08:30 - 11:50 

 

Opsamling på opgaver

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

evt. først tirsdag:
Socket-chatserver design: Broadcasting
- push / observer

 

 

Opgave 10 med øl-sodavand soteringsanlæg
ObserverPattern_Parkeringshus

 


 

Chat server design i trin mod observer-mønster
ekstra: tilsvarende design for echoserver -> service klasse

- 14:30 Opgaveløsning (9 og 10)  - begge er obligatoriske
Hvis di har problemer med opgave 9, kan du evt. se en trinvis udvikling her:
  http://bjoerks.net/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
Tirsdag  08:30 - 11:50
Bemærk ændret tidspunkt
Emner fra mandagen opsamles/fortsættes  
- 14:30 Opgaveløsning (10)  - obligatoriske 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: Opgave 9 (termometer-alarm-monitor) og Opgave 10 (øl-vand sorterings simulering)
(*) Core C# and .NET, Stephen C. Perry - se BlackBoard
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
(***) C# To the point -.., Hanspeter Mössenböck -   - se BlackBoard
 


 

 

Uge 38
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag  08:30 - 11:50 

 

Opsamling på opgaver

Proxy-mønsteret


HTTP protokollen brugt på en socket forbindelse.
- eksempler på kommunikationen
- diskussion af ideer til en simpel http-webserver

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

Program til test af tekst kommunikation over socket
link til eksempler der bruges til ilistration

 

 


 

- 14:30 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
Afleveringsopgaver (obligatoriske) denne uge: Opgave 10 (øl-vand sorterings simulering)
(*) Core C# and .NET, Stephen C. Perry - se BlackBoard
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
(***) C# To the point -.., Hanspeter Mössenböck -   - se BlackBoard