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, 45, 46, 47

Sidst ændret: 2015.10.28

 

 
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
 
 
 
   

 

 
Uge 44
Målsætning for denne uge:
  • at du for viden om centrale elementer i HTML så du kan anvende dette i forbindelse med web løsninger
    herunder også lidt viden om CSS styling
  • samt en smule viden om javascript og om hvordan det giver mulighed for at afvikle dele af koden hos klienten i dennes browser.

Forberedelse:

Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag 08:30 - 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  - samme fra http://webdemo.bjoerks.net

Supplerende materiale fra w3school om HTML

Brug for video-tutorials se:
http://www.thenewboston.com eller https://www.youtube.com/user/thenewboston/playlists 

   

  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 (Skal nok justeres i forhold til MVC)
-
Pp_JavaScriptCodeBehindOgPageMethods.ppt 

 
 

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

Supplerende materiale fra w3school om javascript

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

"Rent javascript program - der kører på klienten"

     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
Følg nogle tutorials på http://www.w3schools.com om html og få styr på basis html
Eksempler og en mulig HTML opgave
 
 
   

 

 
 
Uge 45
Målsætning for denne uge:
  • at du får viden om MVC så du kan arbejde videre med at sætte dig ind i dette
  • at du får besøgt en Web virksomhed og får en idé om hvad det vil sige at arbejde med web-løsninger (konkret ASP.NET og MVC)

Forberedelse:

Dag Tidspunkt Emne Litteratur / Opgaver
Tirsdag 08:30 - 11:30 Introduktion til MVC hos Hesehus ved Claus Nordborg Hansen
(
http://www.hesehus.dk/)
Hesehus A/S, Englandsgade 24, 5000 Odense C  (10 min gang fra Ejlskovsgade - husk at møde til tiden)
 
     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser

Programmer et  par simple web sider ved at følge MVC tutorials
Du kan fx lave en frontend til dine valuta-services
Du kan også kaste dig over at starte med noget til projekt 3 (MVC Web-projekt der også inddrager brug af WCF/WebApi)
 

ASP.NET MVC tutorials fra MS

Evt. Supplement:
- microsoftvirtualacademy.com - Introduction to ASP.NET 5
 
Video supplement fra Microsoft Channel9:
- http://channel9.msdn.com/Series/Introduction-to-ASP-NET-MVC/01 (om MVC)
- http://channel9.msdn.com/Series/Introduction-to-ASP-NET-MVC/04 (om Controler)
- http://channel9.msdn.com/Series/Introduction-to-ASP-NET-MVC/05 (om View)

 

 
 
   

 

 
 
Uge 46
Målsætning for denne uge:
  • at du kan lave en simpel ASP.NET MVC application

Forberedelse:

Dag Tidspunkt Emne Litteratur / Opgaver
    Der vil ikke denne uge være alm. undervisning i programmering (Bjørk er med IM i Zaragoza)

Der vil næste uge til gengæld være programmerings undervisning både mandag og torsdag

Til projekt/opgave dagene kan du fortsætte med materialet fra sidste uge (uge 45)

 
     
     
 
 
   
 
 
Uge 47
Målsætning for denne uge:
  • at du kan lave en simpel ASP.NET MVC application  - flere detaljer følger sikkert senere

Forberedelse:

Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 - 11:30 ASP.NET MVC - detaljer følger ASP.NET MVC tutorials fra MS
     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
 
 
Torsdag 08:30 - 11:30 ASP.NET MVC - detaljer følger ASP.NET MVC tutorials fra MS
     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser