ASP.NET WEB API: CICLO DE VIDA DE LOS MENSAJES HTTP Puede hospedar Web API dentro de una aplicación ASP.NET o dentro de
Views 116 Downloads 2 File size 1MB
ASP.NET WEB API: CICLO DE VIDA DE LOS MENSAJES HTTP Puede hospedar Web API dentro de una aplicación ASP.NET o dentro de su propio proceso (autohospedaje). Después del punto de entrada inicial, los mensajes HTTP pasan por la misma canalización. Primero, el mensaje de solicitud HTTP se convierte en un objeto HttpRequestMessage, que proporciona acceso fuertemente tipado al mensaje HTTP.
Hospedaje de ASP.NET
ASP.NET Web API es un marco de trabajo que facilita la creación de servicios HTTP para que la gama más amplia de clientes posible tenga acceso a ellos, incluidos los exploradores y los dispositivos móviles. Es una excelente plataforma para la creación de aplicaciones RESTful en .NET Framework. En este poster se muestra el flujo de una solicitud HTTP a través de la canalización Web API y el flujo de retorno de la respuesta HTTP. El diagrama también muestra los puntos de extensibilidad donde puede agregar código personalizado e incluso reemplazar completamente el comportamiento predeterminado. Encontrará documentación y tutoriales acerca de ASP.NET Web API en http://www.asp.net/web-api.
Autohospedaje
HttpControllerHandler
HttpSelfHostServer
HttpServer
HttpResponseMessage
HttpRequestMessage
A
Creación del controlador Cree un controlador API basado en la solicitud. 1. Seleccione el tipo de controlador HttpControllerDispatcher SelectController
HttpControllerDescriptor
IHttpControllerSelector GetControllerTypes
ICollection
IHttpControllerTypeResolver GetAssemblies
ICollection
IAssembliesResolver
Controladores de mensajes HTTP Los controladores de mensajes HTTP son la primera fase de la canalización del proceso. Procesan mensajes de solicitud HTTP al entrar y mensajes de respuesta HTTP al salir. Para crear un controlador de mensajes personalizado, debe derivarse desde la clase DelegatingHandler. Puede agregar varios controladores de mensajes.
Un controlador de mensajes puede crear la respuesta directamente y omitir el resto de la canalización.
DelegatingHandler
Los controladores de mensajes pueden ser globales o asignarse a una ruta específica. Un controlador de mensajes por ruta se invoca únicamente cuando la solicitud coincide con esa ruta. Los controladores de mensajes por ruta se configuran en la tabla de enrutamiento.
Sí
HttpControllerDispatcher Crear
Controladores de mensajes por ruta
HttpRoutingDispatcher
¿Route.Handler es NULL?
2. Active el controlador
IHttpControllerActivator
Route.Handler
No
IHttpController
DelegatingHandler
B
Selección de la acción del controlador Seleccione una acción basada en la solicitud.
Un controlador de mensajes puede crear la respuesta directamente y omitir el resto de la canalización.
HttpControllerDispatcher HttpMessageHandler
Crear controlador API
A
ApiController
Este controlador de mensajes puede invocar a HttpControllerDispatcher y volver a la ruta de acceso "principal" o proporcionar un extremo personalizado.
SelectAction
HttpActionDescriptor
IHttpActionSelector
Controlador
B
El controlador es donde se define la lógica principal para controlar una solicitud HTTP. El controlador deriva de la clase ApiController o implementa la interfaz IHttpController.
Seleccionar la acción del controlador E
Respuesta de error
Si la solicitud no está autorizada, un filtro de autorización puede crear una respuesta de error y omitir el resto de la canalización.
Filtros de autorización C
Invoque la acción del controlador con HttpActionContext para los enlaces y el estado del modelo.
Filtros de excepciones
ApiController
D
InvokeActionAsync
Resultado de la conversión
Enlace de modelos Los filtros de acción se invocan dos veces, antes y después de la acción del controlador.
Invocación de la acción del controlador
Task
IHttpActionInvoker
Filtros de acción
OnActionExecuting
Clave
OnActionExecuted Excepción
E
Las excepciones no controladas se enrutan hacia filtros de excepción.
Clase integrada Punto de extensibilidad
Invocar la acción
Nota Solicitud
Acción del controlador
Respuesta
C
D
HttpRequestMessage
Enlace de modelos
Resultado de la conversión
Mensaje de solicitud
El enlace de modelos utiliza la solicitud para crear valores para los parámetros de la acción. Estos valores pasan a la acción cuando se invoca.
HttpResponseMessage
El valor devuelto de la acción se convierte en un HttpResponseMessage.
Identificador URI Encabezados Cuerpo de la entidad
FormatterParameterBinding
ModelBinderParameterBinding
Formateador de tipo de medio
HttpParameterBinding
IContentNegotiator Un formateador de tipo de medio lee el cuerpo del mensaje (si hubiese).
Formateador de tipo de medio
Tipo complejo
Un enlace de parámetros personalizados puede leer cualquier parte de la solicitud HTTP.
Los enlazadores de modelos predeterminados leen la ruta de acceso y la cadena de consultas del URI.
IModelBinder
Si el tipo de valor devuelto es HttpResponseMessage, déjelo pasar.
Si el tipo de valor devuelto es void, cree una respuesta con el código de estado 204 (Sin contenido).
Para el resto de tipos de valores devueltos, el formateador de tipo de medio serializa el valor y lo escribe en el cuerpo del mensaje.
HttpResponseMessage
void
Otros tipos
IValueProvider
Tipo simple
Parámetros de acción
Cualquier tipo
Valor devuelto de la acción
Correo electrónico: [email protected] © 2012 Microsoft Corporation. Todos los derechos reservados.