ASP.NET WEB API Training

3,063 views

Published on

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
  • IT Pathshala, Noida-Sector-63, offers Guaranteed JOB with .NET Training Programs.

    PAY US ONLY IF YOU GET A JOB!

    CALL US - +91-9871350999 or +91-8800394970

    Technology Centre Address: H-110, Sector-63, Noida (UP)

    Program Takeaways:

    - GUARANTEED JOB in your technology domain
    - Live Major Project development
    - Experience Letter on Training Completion
    - Certification on Training Completion
    - Project Source Code available in CD

    Program Highlights:

    - 100% Guaranteed Job – Don’t pay us if you don’t get a JOB!
    - Industry Ready Courses
    - LIVE International Project Experience
    - Exposure to corporate culture at our IT services facility
    - Networking & Interaction with Industry Experts
    - Training Provided by a reputed IT Company
    - Live Project Source Code made available in CD
    - Technology certification and experience letter at program completion
    - Online Study Content

    CALL US - +91-9871350999 or +91-8800394970

    Our website: www.itpathshala.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
3,063
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
147
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

ASP.NET WEB API Training

  1. 1. ASP.NET WEB API (ADVANCED COURSE) Trainer:Chalermpon Areepong Microsoft MVP : ASP.NET ASP.NET & MVCTHAI DEVELOPERS GROUP www.fb.com/groups/mvcthaidev
  2. 2. ABOUT ME  CHALERMPON AREEPONG : Nine ( )  I’m a web developer  Microsoft MVP ASP.NET for 7 years  Founders in ASP.NET & MVC DevelopersThailand (MVCTHAIDEV)
  3. 3. AGENDA I  WebTechnology Introduce  ASP.NET WEB API Introduct  ModelBinder and Custom  Formatter and Custom  ODATA  Async Operation  Performance Improvement
  4. 4. AGENDA II (OPTIONAL)  Async Operation  Performance Improvement
  5. 5. WEB TECHNOLOGY INTRODUCE
  6. 6. HTTP  URI : [scheme]: [port]: //[host] /[path] [? query]  Representation : Content or Data  MediaType : application/json, application/xml, image/png  HTTP : HypertextTransfer Protocol  HTTP Messages  HTTP Request  HTTP Response  HTTP Method  GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH andTRACE
  7. 7. HTTP METHOD Method Objection GET Retrieves information from a resource. return 200 (OK) POST Requests the server to create new one of entity without duplicate object. Return code 201 (Created) or 202 (Accepted) PUT Requests the server to replace the state of the target resource at the specifiedURI with the enclosed entity. If an existing resource exists for the current representation, it should return a 200(OK) ,204 (No Content) ,201 (Created). DELETE Requests the server to remove the entity located at the specified URI. Return code 200(completed), 202 (Accepted) or 204 (No Content). PATCH Requests the server to do a partial update of the the entity at the specified URI.The content of the patch should have enough information that the server can use to apply the update. If the resource exists the server and can be updated, return 200(OK), 204 (No Content),201 (Created).
  8. 8. HTTP METHOD Method Objection HEAD Identical to a GET only it returns headers and not the body. OPTIONS Requests the server to return information about it’s capabilities. Most commonly it returns an Allow header specifying which HTTP methods are supported, though the spec leaves it completely open ended. For example it is entirely feasible to list which media types the server supports.OPTIONS can also return a body supplying further information that cannot be represented in the headers. TRACE Requests the server to return back the request it received.The server will return the entire request message in the body with a Content-Type of "message/http".This is useful for diagnostics as clients can see which proxies the request passed through and how the request may have been modified by intermediaries. CONNECT Converts the request connection to aTCPTunnel (HTTPS, websokets)
  9. 9. WEB COMMUNICATION Web Server GET Response GET https://www.facebook.com/groups/mvcthaidev HTTP/1.1 method: GET accept-encoding: gzip,deflate,sdch url: /groups/mvcthaidev host: www.facebook.com accept-language: en-US,en;q=0.8 user-agent: Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 version: HTTP/1.1 scheme: https HTTP/1.1 200 OK cache-control: private, no-cache, no-store, must-revalidate content-encoding: gzip content-type: text/html; charset=utf-8 date: Sat, 25 May 2013 08:21:01 GMT expires: Sat, 01 Jan 2000 00:00:00 GMT p3p:CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p" pragma: no-cache set-cookie: wd=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com; httponly status: 200 strict-transport-security: max-age=60 version: HTTP/1.1 x-content-type-options: nosniff x-fb-debug: ERdqB2SxAcgCR0CJZG4+D200CnnoJPJV8k+R1bKkdi0= x-frame-options: DENY x-xss-protection: 0 Output : <!DOCTYPE html> <html lang="en" id="facebook" class="no_js"> …………………………
  10. 10. WEB COMMUNICATION Web Server POST Response POST https://www.facebook.com/ajax/chat/imps_logging.php HTTP/1.1 origin: https://www.facebook.com method: POST accept-encoding: gzip,deflate,sdch url: /ajax/chat/imps_logging.php host: www.facebook.com accept-language: en-US,en;q=0.8 user-agent: Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 content-type: application/x-www-form-urlencoded accept: */* referer: https://www.facebook.com/groups/mvcthaidev x-svn-rev: 826852 version: HTTP/1.1 content-length: 242 scheme: https HTTP/1.1 200 OK cache-control: private, no-cache, no-store, must-revalidate content-encoding: gzip content-type: application/x-javascript; charset=utf-8 date: Sat, 25 May 2013 08:21:05 GMT expires: Sat, 01 Jan 2000 00:00:00 GMT pragma: no-cache status: 200 strict-transport-security: max-age=60 version: HTTP/1.1 x-content-type-options: nosniff x-fb-debug: IPFu6HhUMaNDxBAvHb94M96B0QjjrZ7YeMdmBL4ArLQ= x-frame-options: DENY x-xss-protection: 0 Input: Form data source: periodical_imps sorted_list: 1321490013,1059545685,100000164752579,1093746402,100000165125475 list_availability: 2,2,3,2,2 __user: 712879509 __a: 1 __dyn: 7n8ahyj35CFwXAw __req: 1 fb_dtsg: AQD81QbA phstamp: 16581685649819865213
  11. 11. HTTP STATUS CODE Range Definition Ref Link 1xx The request has been received and processing is continuing. http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.2 2xx The request has been accepted, received and understood. http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.3 3xx Further action is required to complete the request. http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.4 4xx The request is invalid and cannot be completed. http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.5 5xx he server has failed trying to complete the request http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.6
  12. 12. HTTP MEDIA FORMATS  JSON  XML  Form Data  Image  Others https://en.wikipedia.org/wiki/Internet_media_type
  13. 13. JSON (JAVASCRIPT OBJECT NOTATION)  Open standard  Text Based format  Lightweight than XML  Human readable  Derived from JavaScript object  ContentType = application/json  Extension *.json
  14. 14. JSON (JAVASCRIPT OBJECT NOTATION)  JavaScript object  JSON var customer = { fullname : “PeeMark PraKhaNhong”, age : 500 , contacts : [ { mobileno: “025329000”, email : “mark@gmail.com” } ] } { “fullname” : “PeeMark PraKhaNhong”, “age” : 500 , “contacts” : [ { “mobileno”: “025329000”, “email” : “mark@gmail.com” } ] }
  15. 15. XML (EXTENSIBLE MARKUP LANGUAGE)  Unicode Support  Human and Machine Readable  Markup language like HTML <name>…</name>  ContentType = text/xml, application/xml  text/xml if not specified encode will use ASCII is default  application/xml used encode in document <Person> <FullName>PeeMark PraKhaNhong</FullName> <Age>500</Age> <Contacts> <Contact MobileNo=“025329000” Email= “mark@gmail.com” ></Contact> </Contacts> </Person>
  16. 16. FORM DATA  Content-Type : application/x-www-form-urlencoded  Send by Form Submit  Format as Url Encode Encoded : FullName=PeeMark%20PraKhaNhong&Age=500&MobileNo=025329000&Email=mark%40gmail.com Decoded: FullName=PeeMark PraKhaNhong&Age=500&MobileNo=025329000&Email=mark@gmail.com
  17. 17. ASP.NET WEB API INTRODUCE
  18. 18. WHAT’S ASP.NET WEB API  HTTP Service  Service based on HTTP Protocol  GET, POST, PUT, DELETE  No Proxy Class for client  Support Data Format : Form Data, JSON, XML and Custom  Support all clients are based on HTTP  Combine ASP.NET
  19. 19. WHY ASP.NET WEB API?  If we need aWeb Service and don’t need SOAP, then ASP.NetWeb API is very useful.  Web API - Used to build simple, non-SOAP-based HTTP Services on top of existingWCF message pipeline.  Web API - No need for configurable likeWCF REST services  Web API - No need for Data contracts  Web API - Could create fully blown REST Services  Simple service creation withWeb API.  Web API is focused at one thing, being easy to define and expose and consume, while also facilitating doing things in a RESTful way.  Web API is light weight architecture.
  20. 20. CLIENTS
  21. 21. WEB SERVICETECHNOLOGY COMPARISON Abilities ASP.NETWEB API WCF Transport Channel HTTP(s) TCP, UDP, MSMQ, NamedPipes, HTTP(s), Custom Protocol HTTP WS-* Types CLRTypes DataContract Message format Text (xml, json) SOAP+XML Service Interface HttpMethod, UrlPattern Service Contract State management Stateless Stateless with per call Cache Built-n to HTTP Prefer application control Handled by application Error Handling Exceptions, HTTP Status codes filters Faults, Behaviors Hosting IIS, Self Host IIS, Self Host Client IApiExplorer Shared Libraries ProxyClass Shared Libraries
  22. 22. WCF => ASP.NET WEB API WCFWebAPI ASP.NET WebAPI Service => Web API controller Operation => Action Service contract => n/a Endpoint => n/a URITemplate => ASP.NET Routing Message handlers => Same Formatters => Same Operation handlers => Filters, model binders
  23. 23. LAB1 BASIC ASP.NET WEB API ASP.NETWEBAPI
  24. 24. LAB1 BASICS HTTP METHOD HTTP MESSAGE ROUTE
  25. 25. HTTP METHODS  Test the API from JavaScript client
  26. 26. HTTP MESSAGE  Request :  HttpRequestMessage : represent for http request message information  Response  HttpResponseMessage : return data and managed http header information  Object/Value : return data and when error will throw the exception.  HttpResponseException : Http response message with 404(default)
  27. 27. HTTP MESSAGE  Open fiddler and click ComposerTab  1. GET http://localhost:7415/api/HttpMessages and Execute  2. route to GetAll() action  3.Test other method Get/Id, Post, Put, Delete
  28. 28. ROUTE  Like MVC App  Default route is api/{controller}/{id}  Add action to route like a MVC App api/{controller}/{action}/{id}  Force Action name with [ActionName(“name”)] to support {action}
  29. 29. LAB2 PIPELINE PROCESS Message handler
  30. 30. PIPELINE PROCESS  Message Handler is pre-post processing for Http Request and Response  Changing the request HTTP method  Adding a response header  Logging,Tracing
  31. 31. PIPELINE PROCESSTEST
  32. 32. LAB3 FORMATTER AND MODEL BINDING ASP.NETWEBAPI
  33. 33. FORMATTER AND MODEL BINDING  URI => ModelBinder, ValueBinder  Entity-Body => Formatter  URI, HEADER, Entity-body => custom format
  34. 34. TEST MODELBINDER
  35. 35. TEST MODELVALIDATE
  36. 36. LAB4 ODATA ASP.NETWEBAPI
  37. 37. ODATA OPTION QUERY Option Description $filter Filters the results, based on a Boolean condition. $inlinecount Tells the server to include the total count of matching entities in the response. (Useful for server-side paging.) $orderby Sorts the results. $skip Skips the first n results. $top Returns only the first n the results.
  38. 38. ODATA QUERYTEST  http://localhost:24556/api/meetings  http://localhost:24556/api/meetings?$filter=Leader%20eq%20%27Mark%20Nich ols%27  (Leader eq ‘Mark Nichols’)  http://localhost:24556/api/meetings?$top=2  http://localhost:24556/api/meetings?$filter=MeetingDate%20eq%20datetime%2 72013-01-17%27 MeetingDate eq datetime’2013-01-17′
  39. 39. ODATA QUERY RESULT
  40. 40. LAB6 ASYNC OPERATION ASP.NETWEBAPI
  41. 41. ASYNC INWEB API  async = Asynchronous in easy way  async requires await  async support in .NET 4.5 only  .NET 4.5 provides a lot of new asynchronous methods
  42. 42. ASYNC RESULT
  43. 43. LAB7 SECURITY TokenValidation
  44. 44. AUTHENTICATION SECURITY  SSL  All of IIS authentications  OAuth2.0  OpenID  Certificate’s Client Request  FormAuthentication
  45. 45. BASIC AUTHENTICATION SECURITY  Easy solution for internet application  SSL + BasicAuthentication + ASP.NET MembershipProvider  Pros  Easy  Cons  Username/Password encode to based 64
  46. 46. BASIC AUTHENTICATION SECURITY
  47. 47. TOKENVALIDATION  TokenValidation = AntiForgery
  48. 48. DEMOTOKENVALIDATION
  49. 49. LAB7 PERFORMANCE IMPOVEMENT MessageCompression HiPerf JavaScript Serializer
  50. 50. MESSAGE COMPRESSION  You can enable this feature in IIS7 or later
  51. 51. HI-PERFORMANCE JAVASCRIPT SERIALIZER  ServiceStack.Text is best of faster javascriptserializer  Create our new Custom Json Formatter and replace old
  52. 52. HI-PERFORMANCE JAVASCRIPT SERIALIZER
  53. 53. CONCLUSION  New way for WEB Service based on HTTP  Best the way for HTTP Service  Support all of the HTTP Clients  Extensibility, we able to customize all of the modules  Closely with ASP.NET MVC  It’s OPENSOURCE http://aspnetwebstack.codeplex.com/  Official site http://www.asp.net/web-api
  54. 54. THANKYOU
  55. 55. REAL WORLD IMPLEMENTATION BY CASE STUDY ASP.NETWEB API Advanced course II soon…

×