DM131 - 3. semester

Ugeplan for Softwarearkitektur og Distribuerede Programmer

Tema: Webservices (WCF) og Web  - Gå til uge: 11, 12, 13, 14, 15

Sidst ændret: 2014.04.01

 

Uge 11
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 - Fremlæggelse og feedback på Auktionshus projekt  
     
12:30- 14:00    
Onsdag 08:30 - Intro til webservice
Forbered dig ved at læse materialet igennem og få fat på begreberne.

Hvis du vil have lidt snak om begreberne kan du se videoer fra tidligere
WebServiceIntro_20111117.wmv  - Samme på 
(bemærk til sidst vises .NET 3.5, hvor vi nu bruger 4.0 hvis det skal på webhotel)

C#(*) kap 18.3 (side 884-885) (web-service)
.NET app (**)
- Side 403-409 kap 7.1 Overview
- Side 413-415 kap 7.3 SOAP (intro)
- Side 415-417 kap 7.3.1 SOAP formats
- Side 429-430 kap 7.4.4 Life Cycle of a Web Services (session)
- Side 430-433 kap 7.5 WSDL
- Side 433-434 kap 7.6 UDDI / DISCO

Supplerende materiale fra Wikipedia
Om WebServices
Om XML Schema
Om SOAP protokollen
Om WSDL

Slides til undervisningen:
Pp_WebServiceBegreber.ppt
Pp_WCF_Basic_Intro.ppt
 

- 10:00 Vi skal afprøve nogle webservices (wcf og de ældre asmx)
- med WcfTestClient.exe
- med Windows klient program

Video fra undervisningen
  C# SDP14F uge11On WCF intro brug eksisterende i simpel klientprogram (ingen lyd)
Tilhørende solution: 201403120912_KlientSolutionExterneService.zip

Pp_WCF_Basic_Client.ppt
Webservices til afprøvning - brug for klient:
- http://webservicedemo.datamatiker-skolen.dk/
- http://wcfdemo.datamatiker-skolen.dk/
- http://www.ezzylearning.com/services/
Nyttig "link":
WcfTestClient er et program der ud fra WSDL beskrivelserne kan gør det muligt at afprøve en WCF-service  uden at programmere.
Det kan normalt findes her:
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\WcfTestClient.exe

En video med en klient der bruger ældre .NET - men måske kan give hints
(ikke aktuel mere da der er video fra dagen nu)
 
10:20 - Vi skal herefter prøve at lave en simpel WcfService (webservice)

Video fra undervisningen
  C# SDP14F uge11On WCF intro opret simpel service og klient der bruger den
Tilhørende solution: 201403120912_ServerSolutionMedConsoleKlient.zip
 
Pp_WCF_Basic_Server.ppt
 
12:30

- 14:00

Øvelser:
1) Lav et tomt web projekt og opret en wcf service med navnet CirkelSevice, der har følgende tilgængelige metoder
---- BeregnDiameter - der tager en radius som input og returnerer diameteren
---- BeregnOmkreds - der tager en radius som input og returnerer omkredsen
---- Lav et lille windows program, som anvender din CirkelService
2) Lav et par små windows programer der anvender nogle af det webservice der er på det 3 sites
 
Hvis der er nogen der gerne vil afprøve bruge af deres egen Internet Information Server er her et par tips:
- Pp_WCF_BrugAf_ISS.ppt
Du skal ikke begynde på det, hvis du ikke har rigeligt med overskud - du klarer dig fint med den server afvikles med Visual Studio
Hvis du gerne vil prøve at få dine WCF services lagt ud på vores webhotel, så se beskrivelse i fronter under SDP
Fredag 08:30 - WCF service hvor der udveksles objekter
Mønstre:
- Remote Facade / Proxy
- Data Transfer Object

Vi vil i denne uge se bort fra at gemme data på serveren, ligesom vi udelukker persistens.
 



http://martinfowler.com/eaaCatalog/remoteFacade.html
http://msdn.microsoft.com/en-us/library/ff649585.aspx
- 12:00 Opgave WCF-Valuta
Løs opgaven så simpelt som muligt - der er i opgaven ingen opdateringer og man kan derfor også ignorere mulige tråd problemer ved tilgang til fælles resourcer.
 

 

Som lovet i mandags vil jeg også gerne prøve at lave en løsning på auktionshuset for dem der måtter ønske det -  næsten fra bunden, idet jeg nok dog vil kopiere lidt fra en simple socket (ClientHandler og Server)
Det er helt op til jer selv om i ønsker at være med til denne del eller vil arbejde med jeres opgaver.
 

Hvis nogen allerede nu føler behov for at huske data, kan man enten definere sin WCF service som Single - se tidligere slides eller tage hul se på et par slides der tages op næste uge - her er også noget om asynkrone kald:
- Pp_WCF_Session.ppt
- Pp_WCF_Async_Client.ppt
12:30 - 14:00 Opgaveløsning med valutaopgave (eller tilsvarende)
Afleveringsopgaver (obligatoriske) denne uge:
MsVC#(*) Microsoft Visual C#.NET Programming, af Doyle
AspBeg(**) Beginning ASP.NET 1.1 with Visual C#.NET 2003, af Ullman et al.
AspProf(***) Professional ASP.NET 1.1, af Homer
AspNet(****) ASP.NET, af Schmidt
 

 

Uge 12
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 - WCF Service fortsat

Serversiden (og krav på klientsiden):
Vi skal se på hvordan vi kan have data til at "overleve" i memory på vores WCF service:
- For den enkelte klient (PerSession / ASP.NET Session)
- For hele applikationen - fælles for alle klienter (Single / ASP.NET Application) - pas på!! trådsikring

Klientsiden:
Vi vil også se på hvordan vi kan foretage asynkrone kald fra klienterne, så en brugergrænseflade ikke låses.
Det kan tage tid at udføre en webservice og her er det hensigtsmæssigt at selve kaldet incl. overførsel af data, kan afvikles i en baggrundstråd, det klares let med asynkrone kald.

Fra undervisningen:
WcfServiceSolutionWithSimpleDTO_20140314.zip
WcfServiceSolutionWithSimpleDTO_UdvidetSessionAsync_201403171047.zip
Wpf_DataGrid_Template_i_XAML_201403171206.zip - eksempel med template og binding på DataGrid



Slides:  Pp_WCF_Session.ppt

Eksempel på en wcfservice med en bruger-session (ASP.NET)  fra tidligere undervisning:
Video - Vs_WcfSolution_ASPNET_SESSION_20111125.zip

 


 

 





Slides: Pp_WCF_Async_Client.ppt

  Opgave WCF-Valuta - bemærk opdateret med en delopgave mere for nye valuta'er  
12:30
- 14:00
Opgaveløsning - valutaopgave
 
 
Onsdag 08:30 - WCF Service fortsat
- opsamling
- trådsikring (thread lock)
- offline lock - optimistic / pessimistic
 
Relevante mønstre fra Fowler
- Om service layer:
   http://martinfowler.com/eaaCatalog/serviceLayer.html
- Om Optimistic Offline Lock:
   http://martinfowler.com/eaaCatalog/optimisticOfflineLock.html 
- Om Pessimistisk Offline Lock: 
   http://martinfowler.com/eaaCatalog/pessimisticOfflineLock.html 
 
- 10:00

Evt. hvis vi kan nå det
- Simpel optimistic offline lock i forbindelse med database
- Service med databasetilgang

Løsning ved brug af database:
- Enkelt Console-eksempel på optimistic offline lock (database)
- Eksempel på WCF service med databasetilgang:
   WcfService_SimpelPersonService_MedDatabase_Solution.zip
10:20 - Opgaveløsning - valutaopgave med vejledning  
12:30
- 14:00
Opgaveløsning - valutaopgave  
Fredag 08:30 - WCF Service fortsat
Opsamling fra onsdag
 


 
- 10:00 Opgaveløsning - valutaopgave med vejledning
Hvis du har lavet valutaopgaven som "memory" løsning, så prøv at lave tilsvarende service men med en bagvedliggende database
- Eksempel på WCF service med databasetilgang:
   WcfService_SimpelPersonService_MedDatabase_Solution.zip
12:30 - 14:00 Opgaveløsning
Afleveringsopgaver (obligatoriske) denne uge: Valuta opgave  (eller tilsvarende, hvis du har har haft din egen idé)
 
 

 

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

Det er tanken at jeg denne dag kort trækker det centrale op, der også er direkte eksamensrelevant og at man herefter evt. kan kaste sig over et mindre projekt / foreløbige eksperimenter / undersøgelser af virkemåde.


Her kan video inddrages for at få uddybet emnet.

Om web og asp.net - gennemgang ud fra slides del 1  
Om web og asp.net - gennemgang ud fra slides del 2  

WEB-pages (gui) programmering - Introduktion til ASP.NET, Session, ViewState m.m.

Debug, Trace af webapplikation

Pladsering og kommunikation af data til brug i dialoger 
- Viewstate
- Session
- Application
- Cookies
- URL-parametre




Da vi allerede på 1. studeår har arbejde med ASP.NET, skulle en stod del være kendt på forhånd, men er taget med på ugeplanen så det er lettere at finde - det gælder navigation, listbox mm.
Vi kan her tage det op som der er behov for igen.

Slides om ASP.NET web sites, webkontroller m.m. (herunder åbning af ISS for extern adgang)

Hvordan "huskes" data mellem metodekald:
Eksempel på webform med states (cookies, viewstate, session, application)

Om events og vedligeholde state
AspBeg(**) side 202-206 (Event-Driving & Post Back)
AspProf(***) side 132-134,142-143
AspBeg(**) side 381-430 
 
 - 
Om Postback og at holde en state - del 1 
 - SDP2011E - WebSolution_20111110_01.zip (solution til video) 

- Om Postback og at holde en state - del 2 
 - SDP2011E - WebSolution_20111110_02.zip (solution til video) 

Web-eksempel fra 1. år (men uden flerbruger - vi vil kort se på dette og flerbruger problemstillinger)
http://bladhus.bjoerks.net 
Vs_BladhusSolution_1_WebFormUI_Ver2.zip (lidt flere faciliteter er med)
 

Repetition fra 1. studieår

Om navigation, listbox mm: se uge 9 - 1. år
Om listbox desuden:

  Opgave:
Lav en ASP.NET brugergrænseflade med mindst to sider, som anvender dine webservice (Valuta) - prøv evt. at adskille med 2 websites, så dine service køre på et site og din web gui på et andet.
Hold dig til simple webforms uden masterpages, men med
 

Du skal afprøve at du kan "huske" nogle mellem kaldende fra klient og server - at der kan holdes en state-fullnesskommunikation
Det vigtige er her at få lidt styr på at sikre data han huskes under selve programafviklingen uden brug af filer/database, herunder det specielle med Postback. Det vil endvidere også være fint at kunne navigere mellem sider.
 

Noget man ikke får brug for til eksamen i SDP:
Hvis nogen også gerne vil afprøve brugen af navigation med SiteMap kan man måske få lidt hjælp her:
- 
http://www.youtube.com/watch?v=gTmOCS53IGs (HD)
- 
http://www.youtube.com/playlist?list=PL35D716BED5C93532&feature=viewall (også HD)
Om TreeWiew
- 
C# SDP10E Om brug af TreeView på webside med Visual Studio (af Bjørk Boye Busch)
Og her lidt om MasterPage
- 
http://www.youtube.com/playlist?list=PLF6ACDBC6F0E84322&feature=viewall
12:30- 14:00 Opgaveløsning uden vejledning
 
 
Onsdag 08:30 - Opsamling fra sidste gang

Opsamling på opgaver
Supplement til slides om validering (klient versus server side)
Indbyggede kontroller (kod ASP.NET og C# og få resultat som javacript i html til afvikling på klient)   
 
- 10:00 Opgaveløsning MED vejledning Ekstra: man ikke får brug for til eksamen i SDP:
·
Video: Om brug af MasterPage i Visual Studio webprojekt 

·
Video del1 · Video del2: Hvordan man laver SiteMap og SiteMap navigation

·
Video: Om brug af Menu på webside med Visual Studio

·
Video: Om brug af TreeView på webside med Visual Studio

·
Video: Om brug af GridView og direkte tilgang til database på webside med Visual Studio

10:20 -    
12:30

- 14:00

Opgaveløsning uden vejledning  
Fredag 08:30 - Opfølgning på WCF og WEB stof til nu
 
Efterspurgt tidligere:
Eksempel på brug af template i xaml koden på WPF DataGrid og ListBox, således at man selv kan bestemme hvordan data præsenteres - databinding til element
Wpf_DataGrid_ListBox_Template_i_XAML.zip
- 10:00
12:30 - 14:00 Opgaveløsning uden vejledning
Afleveringsopgaver (obligatoriske) denne uge: Valuta opgave - med WEB-GUI  (eller tilsvarende, hvis du har har haft din egen idé) - se mandag denne uge
 
 


 

Uge 14
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 - Opfølgning på sidste uge, herunder opgaver

Vi vil desuden se en smule på javascript og lidt mere på html

 

 
Introduktion til HTML (og statiske websider)
- præsentation på klient (browser)

I noget materiale skrives at man skal bruge Notepad til at oprette html sider med, men vi anvender i stedet Visual Studio, hvor man både kan arbejde i source og design mode - husk at studere (og gerne skrive lidt i) source mode

Pointen er til dette emne at se lidt (og eksperimentere lidt) på design af brugergrænseflade med HTML og få en vis forståelse for opbygningen af HTML DOM og hvordan det virker.
 

The HTML DOM (Document Object Model)

Eksempler og en mulig opgave

Supplerende materiale fra w3school om HTML

 

  Introduktion til javascript (funktionalitet afvikles på klient) - BEMÆRK DETTE EMNE BEHANDLES KUN PERIFÆRT
- herunder måske en smule om idé bag AJAX

Denne del er kun for at give en lille idé om at dokumenter i en browser også kan indeholde aktiv kode og effekten af dette.
I forbindelse med ASP.NET vil der blive dannet HTML, men også med indlejret javascript.

Der er vigtigt at vide om hvilken programkode afvilkes på server og hvilken programkode der afvilkes på klienten (i browseren)

Javascript programmet med regulære udtryk er interessant, da ASP.NET indeholder validering (skal vi se på senere) der med brug af javascript afvilkes på klienten (i browseren).

Vigtigt: JavaScript som "CodeBehind" og ikke direkte i ASPX fil
- Pp_JavaScriptCodeBehindOgPageMethods.ppt  (opdateret tirsdag)

 

Fra undervisningen mandag : JavaScriptValideringSolution_20140331.zip
 

Slides kort om JavaScript - fra tidligere javascript-kursus
Eksempler og en mulig opgave

Eksempel på klientprogram i form i javascript:  program til test af mønstre i tekster - regulære udtryk

Javascript specifik læsestof fra diverse sider:
Variables, Functions, Operators, Conditionals
JavaScript Objects
JavaScript Object Examples
onMouseover: Your first Script

Mere avanceret læsestof for dem der har tid og gerne vil lidt dybere med selve javascript sproget

 

12:30- 14:00 Opgaveløsning  
Onsdag 08:30 - Kort opsamling på eksempler med brug af javascript fra mandag.
evt. supplement med kald af webmetode på page fra klient  (javascript)

Tips vedr. webform og telefoner / tablets: Pp_Web_MobileFullScreen.ppt
Pp_JavaScriptCodeBehindOgPageMethods.ppt

Fra undervisningen mandag : JavaScriptValideringSolution_20140331.zip
Eksempel med hentning af data ved  javascript der kalder PageMethod for data:
JavaScriptCallPageWebmethodSolution.zip
 
  Opsamling på opgaver
Opgaveløsning med vejledning og feedback

Flere opgaver:
Du kan selv være med til at definere opgaver / projekt - men kan også få hjælp, evt. formulerede opgaver.
Det vigtige er at få lavet et par wcf service mere en valutaopgaven, med tilhørende klienter, hertil også nogle løsninger der anvender webforms. 
Eksempel på fastholdelse af session til web-service for klient
Bemærk at ved web-klienten er der både en session til web-siden og videre en til web-servicen, som skal sikres.
WebSessionServiceKlienterSolution.zip
Tilhørende eksempel på simpele WCF Services der anvender ASP.NET Session.
WcfSession_Counter_String_WebApplication.zip
- 12:00    
12:30

- 14:00

Opgaveløsning med uden vejledning   
Fredag 08:30 - Opsamling på opgaver
Opgaveløsning med vejledning og feedback
 
- 10:00
12:30 - 14:00
Afleveringsopgaver (obligatoriske) denne uge: Dem du mangler
 
 

 

 

Uge 15
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 - Du skal enten lave et mindre projekt eller løse opgaver, hvor der indgår dels wcf service og dels webform brugergrænseflade med validering på klientside.

Du kan selv være med til at definere dine opgaver / projekt, men forventes at sikre dig med underviser, at det er passende omfang.

Valutaopgaven ligger ud over dette projekt / disse opgaver.

Opgaveløsning med vejledning

Flere opgave idéer:
Du kan tage udgangspunkt i følgende oplæg
Brug også en ASP.NET brugergrænseflade kørende på et andet ASP.NET projekt
WcfVare01 - webservice med remote vare
WcfVare02 - webservice med remote varekatalog

Materiale der kan bruges som hjælp for opgaver - løsning der ikke er distribueret:
Solution med vare, der ikke er remote (med test-"klient")
Solution med varekatalog, der ikke er remote (med test-"klient")
Solution med varetransaktion, der ikke er remote (med test-"klient")

     
12:30- 14:00 Opgaveløsning uden vejledning  
Onsdag 08:30 -
 

12:30

Opsamling på projekt / opgaver
Opgaveløsning med vejledning

 

 
12:30

- 14:00

Opgaveløsning uden vejledning  
Fredag 08:30 - Opsamling på webservice med WCF og Web grænseflade med WebForm  
- 10:00
12:30 - 14:00
Afleveringsopgaver (obligatoriske) denne uge: Dem du mangler