DM1302DK - 3. semester

Ugeplan for Softwarearkitektur og Distribuerede Programmer

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

Sidst ændret: 2014.09.11

 

Uge 34
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - Introduktion til 3. semester
- Opsamling fra 1. år - lille programmeringsopgave/prøve   -  følger
 
 
  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
Eksempler 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 - Opsamling  fra sidst
 og evt. gennemgang af opgave 1+2  fra sidste gang (en/flere studerende fremlægger)

Lidt designforbedring på server med udskillelse af håndtering af klient (Clienthandler klasse)




Eksempler på socket echo servere og klient
 
Opgaveløsning (socket opgave 3-4) - med støtte
 
  Evt. først torsdag
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)
 

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-5
 
 
Torsdag 08:30 - Opsamling  fra socket server og klient
 og evt. gennemgang af opgave 3+4  fra sidste gang (en/flere studerende fremlægger)
 
 
  Evt. påbegyndt onsdag
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)
 

  Designovervejelser - de første spæde forsøg på yderligere forbedringer af behandling af klient (på serversiden)
- adskillelse af kommunikation og forretningslogik
 
SocketEchoServerDesign
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
- socket opgaver - specielt opgave 5
 
Opgaver med socket server og socket-klient
Afleveringsopgaver denne uge: Socket opgave 5 (nr 3 multitrådet)
(*) 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 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

 
Supplerende materiale for dem, som måtte ønske mere læsestof om tråde
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

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


 

 

Uge 35
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - Opsamling  fra socket server og klient
 og evt. gennemgang af opgave5  fra sidste gang (en/flere studerende fremlægger)
 
 
  Design af socket-programmering - fortsat 

 

 

 

Proxy mønsteret  (samme grænseflade på server og klient)

 

 

 

 

 

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

Slides om Proxy mønster
Eksempel på brug af proxy-mønster til echoservice'en fra tidligere
Indgår også i næste eksempel

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

  Lidt mere om protokoller (vi ser kort på http)  læs specielt om GET og eksempel

 

 

 

 

http://en.m.wikipedia.org/wiki/Http#Technical_overview
http://en.m.wikipedia.org/wiki/Http#Example_session

Tools for at se http kommunikation i google chrome
https://chrome.google.com/webstore/detail/live-http-headers/iaiioopjkcekapmldfgbebdclcnpgnlo

Selvstændig tools for at se http kommunikation
http://www.telerik.com/download/fiddler

Programmer til test af socketforbindelser:
Telnet_win98 - gui telnet klient

Program til test af tekst kommunikation over socket
 

  Brug af WebClient til HTTP client kommunikation
- web request
 
WebClientDemoConsoleApplication.zip
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 
Opgaver med socket og http protokollen
 
Opgaver - med socket og HTTP protokollen
Onsdag 08:30 - Opsamling på design og netværksprogrammering fra tirsdag
og evt. gennemgang af opgaver  fra sidste gang (en/flere studerende fremlægger)
 
 
 

Trådning

Kodeeksempler


Problematik med fælles data berørt - resten skubbet til torsdag

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

Design med tråde
 

Slides om tråde og synkronisering

Trådeksempel1 - primitiv enkel tråd - trådmetode i egen klasse(objekt)
Trådeksempel2 - primitiv tråde - static metode som trådmetode
Trådeksempel3 - trådmetode i egen klasse - flere tråde - join
Trådeksempel4 - trådmetode i egen klasse - flere tråde - join - viser også synk fejl

Trådeksempel5_Sync - synkronisering - primitiv uden resource-monitor - fællesdata
Trådeksempel6_Synk - synkronisering - primitiv uden resource-monitor - fællesdata
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 vedrører også CDS vedr. tråde

  Løsningseksempel på  trådopgave 5 version1  

 
Trådopgaver (1-6)
Torsdag 08:30 -

Trådning fortsat

- 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

Trådeksempel5_Sync - synkronisering - primitiv uden resource-monitor - fællesdata
Trådeksempel6_Synk - synkronisering - primitiv uden resource-monitor - fællesdata
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 (med fejl! manglende og for tidlig notification)
Trådeksempel_Parkeringshus_wait_notify (korrekt behandling)
 

     
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 behøver ikke have løst alle trådopgaver 1-6 før du tager hul på opgave 7, men jo flere du når jo bedre

Trådopgave 7 (spørgsmål 1 er bliver en afleveringsopgave)
- det centrale er her brugen af brug af fælles resourcer, låsning og guarded suspention (tællerne er her simple boundede buffere)

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)

 

Du kan tage afsæt i eksemplet og udbygge det
Trådeksempel_Parkeringshus_wait_notify (korrekt behandling)

Afleveringsopgaver denne uge:
Trådopgave 7 spørgsmål 1 (du må selvfølgelig gerne aflevere svar på hele opgaven)
Der skal desuden afleveres en status på øvrige trådopgaver (hvor langt er du nået / er der problemer? - skriv i feltet egen reflektion - ingen solution behøves)
(*) 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 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

 
Supplerende materiale for dem, som måtte ønske mere læsestof om tråde
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

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


 

Uge 36
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - Tråde fortsat

Status på opgaveløsning!! 
Vi så på opgave 7.1 problematikker - herunder tråde og resource-monitor


 
Flere eksempler på brug af Producer-Consumer mønsteret (push - pull)   Udskudt til næste uge
- flere producer/consumer til samme ressource
- med bounded buffer problem
 
TrådEksempel9_ProducerConsumer_Buffer
  Lidt generelt om delegater

  

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 (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  som PDF
Onsdag 08:30 - Tråde og problematik med GUI

Herunder flere eksempler på brug af observer (events)

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

ObserverPattern_Parkeringshus  

     
12:30- 14:00 Opgaveløsning uden støtte fra underviser, se opgave fra tirsdag

 


 

 
Torsdag 08:30 - Opsamling på synkronisering og brug af observerpattern (events)  
     
12:30- 14:00 Opgaveløsning uden støtte fra underviser, se opgave fra tirsdag
 
 
Afleveringsopgaver  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 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

 
Supplerende materiale for dem, som måtte ønske mere læsestof om tråde
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

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

 

Uge 37
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - Opsamling og flere eksempler på brug af Producer-Consumer mønsteret (push - pull)
- flere producer/consumer til samme ressource
- med bounded buffer problem
 

Slides om tråde og synkronisering
TrådEksempel9_ProducerConsumer_Buffer

 

  - (simulering af ) fysiske processer 
- buffer
- producer, consumer
- splitter, sorter
- løs kobling med observer, eventbaseret overvågning
Opgave 10 med øl-sodavand soteringsanlæg  - som PDF
Du kan evt. bruge elementer fra:
TrådEksempel9_ProducerConsumer_Buffer
  Opgaveløsning (tråd opgave 10)

 
Opgave 10 med øl-sodavand soteringsanlæg  - som PDF
Du kan evt. bruge elementer fra:
TrådEksempel9_ProducerConsumer_Buffer
 
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 (tråd opgave 10)
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    
 

  
Onsdag 08:30 - 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 uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 

Opgaveløsning (tråd opgave 10)
 
se tidligere tirsdag
  
Torsdag 08:30 - Løsning på tavle af trådopgave 10 og evt. 9 - efter ønske fra studerende  
     
12:30- 14:00 Opgaveløsning uden støtte fra underviser
 
 
Afleveringsopgaver 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
Supplerende materiale for dem, som måtte ønske mere læsestof om 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

 
Supplerende materiale for dem, som måtte ønske mere læsestof om tråde
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

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

 

 

Uge 38
Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 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  
Torsdag 08:30 -  - 12:00 Projektarbejde - socketprojekt (vejledning - bjbu) Se fronter
12:00 - Projektarbejde