DM1402DK - 3. semester

Ugeplan for Programmering
 - bemærk at der ikke i denne plan indgår generel opgaveløsning/projekter onsdag & fredag

Tema: Webservice (WCF & WebAPI)  - Gå til uge: 39, 40, 41, 42, 43, (44-49)

Sidst ændret: 2015.11.04

 

 
Uge 39
Målsætning for denne uge:
  • at du får viden om hvad en webservice
  • at du kan lave en simpel consol/wpf client, der kan tilgå en soap-webservice (asmx, wcf/svc) med brug af service reference og får forståelse de klasser der dannes ud fra wsdl beskrivelsen (herunder DTO objekter og proxy/service klasser.
  • at du selv kan lave simple webservices med brug af WCF-service hostet i en ASP.NET application, herunder kan opsætte servicekontrakter og datakontrakter
  • at du kan afprøve dine wcf-services med brug af WcfTestClient samt med egne console/wpf klienter.

Forberedelse: Se nedenfor i planen for tirsdagen

 

Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - Forbered dig ved at læse materialet til venstre igennem og få fat på begreberne

Vi vil ikke gennemgå begreberne, men alene samle op på nogle uklarheder samt evt. kort diskutere disse.

Intro til webservice
- herunder berører vi også lige begreberne: RPC, RMI, Remoting, CORBA, MS gamle webservice (asmx)
- Protokoller/formater
- WCF

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

 
Distributed object communication (Wikipedia)

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

Mønstret Remote Facade er også relevant i denne sammenhæng
- http://martinfowler.com/eaaCatalog/remoteFacade.html

Slides til undervisningen:
Pp_WebServiceBegreber.ppt
Pp_WCF_Basic_Intro.ppt  
 

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

Video fra undervisningen (tidligere forløb) til evt. repetition
  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/
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 nn \Common7\IDE\WcfTestClient.exe" 
  Øvelser:
Prøv at hente data fra følgende
WcfService (webservice) der kan returnere objekter
-
PersonWcfService.svc

1) Du kan starte med at prøve at hente data med WcfTestClient.exe programmet og kan vise data direkte.
Servicen indeholder følgende metoder du kan afprøve
 - GetAllePersoner
 - GetAllePersonerMedNavn
 - GetAllePersonerMedPostnr
 - GetPersonMedPersonnr


2) Prøv nu at lave et lille klientprogram på samme måde som du så i går, hvor du afprøver metoderne.
Bemærk at Visual Studio selv danner en Person klasse ud fra WCF servicens WSDL, så du kan med de 3 metoder få en collection af Person objekter og den sidste et enkelt Person objekt.

Hvis du ved hvordan du viser en collection i et WPF GridView kan du bruge dette til let at vise resultatet frem. Husk at sætte property AutoGenerateColumns til true
Du kan selvfølgelig også loope igennem collections og udskrive på consollen

 

 
  2) Hvis du er færdig kan du fortsætte med at lave et par små windows programer der anvender nogle af det webservice der er på det 3 sites Webservices til afprøvning - brug for klient:
- http://webservicedemo.datamatiker-skolen.dk/
- http://wcfdemo.datamatiker-skolen.dk/
 
  Kort intro
WCF service metoder
 - endpoint(.svc)
-  interface (ServiceContract og OperationContract)
-  samt implementering (code behind)
Kort demo:
Vi skal herefter prøve selv at lave en simpel WcfService (webservice)

Video fra undervisningen (tidligere forløb) til evt. repetition
  C# SDP14F uge11On WCF intro opret simpel service og klient der bruger den
Tilhørende solution: 201403120912_ServerSolutionMedConsoleKlient.zip
en video mere om behov   C# SDP12E - WcfService - del1
Pp_WCF_Basic_Server.ppt

 

  Ø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
 
 

 

  Kort intro
WCF service hvor der udveksles objekter
 - Data Transfer Object (serialisering med DataContract og DataMember) 
Kort demo:
Vi ser eksempel på service med udveksling af objekter
 
Mønstre:
- Data Transfer Object
http://msdn.microsoft.com/en-us/library/ff649585.aspx

 

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 
Opgave WCF-Valuta  opgave a+b+c
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 ressourcer.

Afleveringsopgaver denne uge Valutaopgave a+b+c - se frontermappe
Du skal aflevere til tiden sammen udfyldelse af reflektionsfelter, hvor du dels skriver om det virker og hvis ikke hvad der kan være galt, og dels om du har haft let eller svært ved opgaven
 
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 40
Målsætning for denne uge:
  • at du får viden om at lave webservice statefull med bruge af ASP.NET Session og Application
  • at du selv kan lave simple webservices med brug af WCF-service hostet i en ASP.NET application, herunder kan opsætte servicekontrakter og datakontrakter samt herunder også sikre datas overlevelse på server mellem kald (Statefullness) og trådsikre i forbindelse med fællesdata
  • Du har viden om problematikker og mulige løsninger på offline concurency - optimistic og pesimistic 
  • Du har viden om brug af webservice for transaction scripting

Forberedelse: se nedenfor i planen

Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag 08:30 - Forbered dig ved at læse materialet til venstre igennem og få fat på begreberne
WCF Service fortsat (Statefullnes og offline concurency)

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
Vi vil nøjes med ASP.NET Session/Application som valg og det andet som orientering

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 baggrunds tråd, det klares let med asynkrone kald.
 - NB vi tager løsningen med delegater og ikke Task

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

 

Vi vil anvende ASP.NET Session, men hvis nogle aligevel gerne vi se en løsning uden, hvor der bruges WCF instanstyperne (Single, PerSession og PerCall)
- C# SDP12E - WcfService - del2

     
  Forbered dig ved at læse materialet til venstre igennem og få fat på begreberne

WCF Service fortsat
- opsamling
- trådsikring (thread lock)
- offline lock - optimistic / pessimistic
C# SDP12E - Om pessimistisk / optimistisk ofline lock - problemstillingerne og løsningsmulighed

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 
 
  Evt. hvis vi kan nå det - ellers må du klare dig efterfølgende med videoen
- Simpel optimistic offline lock i forbindelse med database
- Service med databasetilgang
C# SDP12E - WcfService og transaction scripting
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
     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser

Opgaveløsning uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 
Opgave WCF-Valuta  resten af opgaverne
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 ressourcer.

Hvis du er færdig kan du evt. prøve at lave en løsning med service med samme metoder, men hvor der anvendes en database i stedet for at data holdes i memory.


Afleveringsopgaver denne uge Valutaopgave resten - se frontermappe
Du skal aflevere til tiden sammen udfyldelse af refleksionsfeltet, hvor du dels skriver om det virker og hvis ikke hvad der kan være galt, og dels om du har haft let eller svært ved opgaven

Hvis du går helt i stå bruger du selvfølgelig først din studiegruppe, men hvis det ikke er nok kan du som nødløsning få gennemgået en løsning og så efterfølgende starte forfra et antal gange på egen hånd til du kan selv uden at se på denne:
- https://www.youtube.com/watch?v=GCE86ZSFfew&list=PLWg7ytE2Y07INpj9JGa61pFBh5DPa0r_M

Husk det er ikke løsningen der er det vigtige, men at du får lært det du skal og ikke mindst får rutine så du kan løse opgaven på kort tid. Det betyder nogle gange du må løse opgaven forfra flere gange for at få træningen.''

 

 

Vs_ValutaSolution_20141023.zip (lagt op uge 41)

 

 

 
   

 

 

 

 
Uge 41
Målsætning for denne uge:
  • at du får lidt viden om REST som alternativ til SOAP, herunder json som alternativ til xml for datatransport
  • at du selv kan lave simple webservices med brug af .NET WebApi
  • at du kan teste simple webservice (WebApi) med direkte brug af HTTP request - konkret med Fidler

Forberedelse: Se i planen

Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag 08:30 - Opsamling på WCF service

 

Vi vil starte dagen op med lidt samtale om begreberne og herefter vil dagen gå med at

Forbered dig ved at se første del om hvad det går ud på og tag nogle noter.
Du skal herefter bruge videoen til at hjælpe dig i gang.

Du skal springe over de steder hvor han taler om html og andet GUI i denne omgang:
Koncentrer dig om at det med at lave WebApi og teste dem med Fiddler

Introduktion til WebApi - herunder også noget om REST
- video tutorials ASP.NET Web API - Pluralsight (Jon Flanders)

Den næste tutorials kan supplere hvis du har behov
- video tutorials ASP.NET Web API - Getting Started , By Scott Hanselman (Channel9 - Microsoft)
 

Gennemgang af en løsning på valutaopgaven:
- https://www.youtube.com/watch?v=GCE86ZSFfew&list=PLWg7ytE2Y07INpj9JGa61pFBh5DPa0r_M
En løsning:
- Vs_ValutaSolution_20141023.zip (lagt op uge 41)

 

evt. suplement til uddybning om REST
- Pluralsight REST Fundamentals

Tool for se og debuging af HTTP - bruges til test af WebApi

Download Fiddler Web Debugging Tool for Free by Telerik

Demo med simpel Web API
- test client for GET med browser
- test client med brug af Fiddler
- C# client med WebClient

Routning ? - det er ikke sikkert vi tager det før senere - fredag ? eller næste uge ?
 
Pp_WebApi_Basic_Server_og_Client.ppt

 

 

  Lav webservice til Valutakurser - denne gang med WebApi - og aftest med Fidler
Drop opgaver der fordrer Session, da man normalt ikke vil have det med REST / Web API
 
 
     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
Lav webservice til Valutakurser - denne gang med WebApi - og aftest med Fidler
 
 
 
   

 

 
Uge 42 (efterårsferie)
Målsætning for denne uge:
  • at du får indhentet det du evt. er kommet bagud med

 

 
Uge 43
Målsætning for denne uge:
  • at du selv kan lave simple webservices med brug af .NET WebApi
  • at du kan teste simple webservice (WebApi) med direkte brug af HTTP request - konkret med Fidler
    Herunder også kan lave Post/Put med json/xml data objekt input

Forberedelse: Arbejd med toturials fra uge 41

Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag 08:30 - Opsamling på WCF Session og Application
- vi skal se på løsningen af valutaopgaven

WebApi fortsat
- Opsamling på uge 41 (herunder brug af fiddler til test)
- Fællesdata for flere klienter
- Routning og Action
- Simpel klient til test af WebApi services

Se tidligere specielt uge 40

Se uge 41 for mere materiale

Routing in ASP.NET Web API
Slides om routing, Action, simpel WebApi tester, Session
 - Pp_WebApi_ActionRoutning_og_TestClient_Session.ppt
Template for klient til test at WebApi (pladser html på web-site med WebApi og tilpas test)
- WebApiTestRequestTemplate.html.zip
Projekt fra uge 41 includeret test
- WebApiSolution_BasicGetPutReposityLock_MedTest_20151021.zip
 

    Evt. mere læsestof til yderlig fordybelse om attribut routing
- http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
Samme som uge 41