ASP.NET MVC 4 & WEB API Jamie Kurtz
ASP.NETMVC4 & WebAPI JamieKurtz
Kurtz, Jamie. / ASP.NET MVC 4 & Web API.1392.. 144 978-600-6529-41-7 79000.... -- ( )... - 1356 /9 9 1392TK5105/8885 276/005 3246594 www.pendarepars.com 16 14 info@pendarepars.com 09122452348 66926578-66572335 ASP.NETMVC4&WebAPI Jamie Kurtz 92 1000 978-600-6529-41-7 7900 * *
API SOA -. SOAP SoC. SOAP API. REST. SOA 1.. PDA. API Ajax HTML. SOAP.. REST. SOAP REST API. SOAP «WebAPI ASP.NETMVC4» RMM. REST WebAPI. RESTful API REST RESTful ASP.NETMVC4 REST. WebAPI ASP.NETMVC4 API REST REST. RESTful
Ninject Log4Net NHibernate.NET REST. REST ASP.NET MVC 4 Web API. REST ASP.NET MVC 4 Web REST. API... mansoor.omrani@gmail.com 92
1... ASP.NETMVC.1 2... 3...ASP.NETMVC 3... 3... REST 7... 7... 8... REST XML JSON 8...WebAPI 9... 11... RESTful.2 12...REST RPC 13... SOAP XMLRPC 15... URI 16... HTTP 19...HATEOAS 23... HTTP 25... 27... REST.3 28... 30... 32...HTTP URI 36... 39... 41... 42... IoC 43... 45... 45... 46... 46... 47... 49....4 50... 50...Windows7SP164bit 50... SQLServer2012 50...VisualStudio2012 51...NuGetPackageManager2.1
52... 54...Solution 55...NuGet 55... 60... 60... DateTimeAdapter 61... 63... 64... 66... 67... 69....5 69... 71... 72... HttpRequestArgument 73... 74... 76... Ninject 77... 77... 80... MVC Ninject DependencyResolver 82... NHibernate 82... 85... 85... 88... 89... 90... 93... 95... 97....6 97... 97... 99... 100... 101...Principal 102... 104... 108... IUserSession 110...
111....7 111... 113... 113... PrioritiesController 116...CategoriesController 117... 118...Fiddler 119...WebAPI 120... 121...WebAPI OData 122... Task 122...REST 123... Status Priority 124... Categories Users 126... 127... 129... 131...
ASP.NETMVC.1.NET 1 XML 2002.NET...NET.NET. ASMX SOAP. HTTP Remoting.NET1.0 ASMX. HTTP Remoting 3 2...NET. Windows WCF.NET3.0 2006 Remoting ASMX WCF. CommunicationFoundation. SOAP SAML HTTP WCF. 1 serviceorientedapplication 2 objectactivation 3 Sessioncontext
WebAPI ASP.NETMVC.NET WCF. WCF ProgrammingWCFServices WCF EssentialWindowsCommunicationFoundation 2007 O'Reilly. 2008 AddisonWesley WCF.. WCF WCF WCF. WCF.. HTML CSS HTML5 jquery AJAX.. HTTP ). HTTP SOAP. (... JSON XML. 2
3 ASP.NETMVC.1 HTTP. AJAX ).(.. WCF. HTTP WCF WCF... ASP.NETMVC ASP.NETMVC WCF ASP.NETMVC. ASP.NETMVC. WCF contract endpoint MVC. MVC WCF MVC. JSON XML REST URL.. REST WebAPI ASP.NETMVC. REST WCF. ASP.NETMVC MVC (.svc ) ASP.NETMVC. REST. REST API. MVC TaskManagement REST
WebAPI ASP.NETMVC TaskId. WCF. [ServiceContract] publicinterfaceitaskservice { [OperationContract] TaskGetTask(longtaskId); } publicclasstaskserviceitaskservice { privatereadonlyirepository_repository; publictaskservice(irepositoryrepository) { _repository=repository; } publictaskgettask(longtaskid) { return_repository.get<task>(taskid); } } URL endpoint.svc http//myserver/taskservice.svc GetTask SOAP. GetTask WCF.NET SOAP. WCF SOAP.. WCF ASP.NETMVC WCF.. contract publicclasstaskscontrollercontroller { privatereadonlyirepository_repository; publictaskscontroller(irepositoryrepository) { _repository=repository; } publicactionresultget(longtaskid) { returnjson(_repository.get<task>(taskid)); 4
5 } } ASP.NETMVC.1 ) URL ( ASP.NETMVC hp//myserver/task/get/123 publicclasstaskscontrollerapicontroller { privatereadonlyirepository_repository; publictaskscontroller(irepositoryrepository) { _repository=repository; } publictaskget(longtaskid) { returnrepository.get<task>(taskid); } }. URL Get. WebAPI Controller. REST. ApiController MVC Web API. ActionResult URL.. hp//myserver/tasks/123 Web API. URL Get ( PUT POST GET) HTTP API.. REST URL WebAPI SOAP. REST.. URI
WebAPI ASP.NETMVC REST 6 REST. HTTP REST HTTP SOAP REST API REST. HTTP SOAP GET POST PUT DELETE 4 ) HTTP REST. REST Task ) REST. ( HTTP.( Order Customer User. REST. HTTP REST ( ) ASP.NETMVC MVC REST REST. REST. http//www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm. WCF REST RESTful WCF MVC MVC.. WebAPI 4 resourcecentric
7 ASP.NETMVC.1 MVC WCF URL. (REST URL ) API. URL.svc. API. URL. v2 URL... API ( ) - MVC WCF (ASMX ) XML - 5. ( ASP.NET WCF).... 6 ASP.NET MVC ). ( ). (ActionFilterAttribute. ASP.NETMVC. ( ) debugger. 5 serviceactivation 6 actionfilter
WebAPI ASP.NETMVC 8 REST XML JSON. HTTP REST. REST HTTP DVR ATM HTTP URL.. REST. XML JSON REST. SOAP SOAP. XML SOAP. XML ( ) JSON XML SOAP SOAP.. SOAP SOAP. JSON JSON. SOAP XML JSON.. SOAP WS SOAP. JSON REST SOAP. ( web services WS) 7 REST.. HTTP WebAPI MVC4 WebAPI ASP.NETMVC -WebAPI - MVC. REST MVC4 WebAPI. REST. 7 IdentityFederation
9 ASP.NETMVC.1 8 (POST GET ) HTTP WebAPI CRUD Products. Products Get() /api/products GET URL WebAPI... Get(longid) /api/products/32. DELETE PUT POST 9 JSON MVC - Web API. XML Web API.. XML JSON Accept ContentType HTTP WebAPI.. ( ) JsonResult.( IEnumerable<Product> Product ) [Queryable] OData. OData IQueryable 10. IIS HTTP WebAPI REST. ASP.NETMVC MVC SOAP WCF. REST HTTP. ASP.NETMVC.. JSON REST URL REST Web MVC4 WebAPI. ASP.NET REST API 8 ConventionBasedCRUDactions 9 BuiltInContentNegotiation 10 SelfHosting
RESTful.2. REST API HTTP REST REST. RPC API. API SOAP RPC. REST.. RESTful. REST API... REST. REST. URL RPC. REST REST API. REST API HTTP.. HTTP REST URI HTTP HTTP
WebAPI ASP.NETMVC REST RPC 1. REST 2008. CapabilityMaturity CMMI.. 2 ) ModelIntegration. (. (RESTMaturityModel) RMM REST API REST API RPC API.. RESTful API. 3 1. RESTful. RESTful RMM 2. RMM 2-1. RESTful 3 12 REST 2-1 1 MaturityModel 2 processimprovementapproach 3 http//roy.gbiv.com/untangled/2008/restapismustbehypertextdriven
13 RESTful.2 SOAP XMLRPC. SOAP API API HTTP. HTTP URI. HTTP.. 1. API TaskService WCF SOAP. CreateTask().. GetTask() TaskService. XML TaskService. XML. CompleteTask() SearchTasks() UpdateTask(). XML API - - REST API. RESTful REST API HTTP RESTful URI HTTP (HATEOAS) 4.(2-1 ) TaskService 4 Hypermediaastheengineofapplicationstate
WebAPI ASP.NETMVC RMM 2-1 14 / (WSDL ) (WSDL ) (WSDL ) (WSDL ) (WSDL ) (WSDL ) HTTP POST POST POST POST POST POST URI /api/taskservice.svc /api/taskservice.svc /api/taskservice.svc /api/taskservice.svc /api/taskservice.svc /api/taskservice.svc CreateTask GetTask GetTaskAssignees SearchTasks UpdateTask CompleteTask ) - -..( HTTP URI. ( 456 123 ) URI. URI.. 1. HTTP API.. RESTful.. HTTP.. DELETE PUT POST GET SOAP... ( ).
15 RESTful.2 5 ( )... ).( ). (.. URI... HATEOAS. HATEOS. RESTful. RPC API URI RESTful API 1 6. RESTful. - ( UpdateTask CreateTask ) RPC REST. ( product task ) API. HTTP. HTTP RMM 1 TaskService. REST 2-2.. URI 5 hypermedia 6 resourcecentric
WebAPI ASP.NETMVC RMM 1 2-2 16 / (WSDL ) (WSDL ) (WSDL ) (WSDL ) (WSDL ) (WSDL ) HTTP POST POST POST POST POST POST URI /api/tasks /api/tasks/1234 /api/tasks/1234 /api/tasks /api/tasks/1234 /api/tasks/1234 CreateTask GetTask GetTaskAssignees SearchTasks UpdateTask CompleteTask. /api/tasks URI API. API -. POST HTTP. URI ( POST GET ) HTTP REST HTTP. RESTful. Create. CreateTask HTTP REST.. HTTP GET PUT POST DELETE DELETE GET CreateTask. POST PUT.( ) PUT 2-3 POST PUT URI )
17 RESTful.2 ) POST. (.( URI HTTP 2-3 hp//myserver.com/tasks/1234 URI URI URI URI http//myserver.com/tasks GET PUT POST DELETE. HTTP. REST 7 ( ) REST REST.. HTTP REST ASP.NET. HTTP. HTTP REST 2-3. REST HTTP. URI HTTP HTTP. ) URI 2-3 ) (.( ) HTTP.. REST API (Task URI. 7 representations
WebAPI ASP.NETMVC ( ). PUT 8. URI POST.. DELETE PUT REST.. DELETE PUT.. PUT. PUT.. PUT REST ) (Safe) GET REST GET.(... REST DELETE PUT GET. HTTP. API POST. POST. PUT..( ) PUT. POST. HTTP. API HTTP API..(2-4 ) RMM 2. 18 8 idempotency
19 RMM 2 2-4 RESTful.2 / (WSDL ) (WSDL ) (WSDL ) (WSDL ) (WSDL ) (WSDL ) HTTP POST GET GET GET PUT DELETE URI /api/tasks /api/tasks/1234 /api/tasks/1234 /api/tasks /api/tasks/1234 /api/tasks/1234 CreateTask GetTask GetTaskAssignees SearchTasks UpdateTask CompleteTask URI 1 ) 2. 2-3 POST PUT. HTTP (SOAP XML (XML JSON ).( ). API ( ) HATEOAS.. RMM 3 HATEOAS. GET 2-4 2-3 HTTP REST URI. API URI ) REST. (. GET
WebAPI ASP.NETMVC 20 REST XML. URI <?xmlversion="1.0"encoding="utf8"?> <Tasks> <TaskId="1234"Status="Acve"> <linkrel="self"href="/api/tasks/1234"method="get"/> </Task> <TaskId="0987"Status="Completed"> <linkrel="self"href="/api/tasks/0987"method="get"/> </Task> </Tasks>. URI Tasks. GET. URI URI.. TaskInfo Task. Task TaskInfo. Task. <?xmlversion="1.0"encoding="u8"?> <Tasks> <TaskInfoId="1234"Status="Acve"> <linkrel="self"href="/api/tasks/1234"method="get"/> </TaskInfo> <TaskInfoId="0987"Status="Completed"> <linkrel="self"href="/api/tasks/0987"method="get"/> </TaskInfo> </Tasks> <?xmlversion="1.0"encoding="u8"?> <TaskId="1234"Status="Acve"DateCreated="20110815"Owner="Sally"Category="Projects"> <linkrel="self"href="/api/tasks/1234"method="get"/> </Task>. REST... 100.