Este documento introduce ASP.NET Web API, describiendo su arquitectura basada en HTTP y REST. Explica las características clave de Web API como su derivación de ASP.NET MVC, soporte para formatos de medios, negociación de contenido, validación y consultas OData. También cubre temas como la descripción de API, llamadas asíncronas y demostrando su funcionamiento.
Presentación de mi charla en la #dotNetSpain2016 sobre ASP.NET Core.
Temas tratados:
Model Binding
Routing
Tag Helpers
View Components
Configuración
Localización
NetRaf 2017 - Chat multiplataforma con reconocimiento de vozDiego Bersano
Presentación utilizada en el NetRaf 2017, comentando la realización de una aplicación de chat mutiplataforma con reconocimiento de voz.
Se utilizaron las siguientes tecnologías / plataformas:
- SignalR
- Cognitive Services
- Xamarin
- ASP.NET WebApi
- Android
- iOS
- Azure
Presentación de mi charla en la #dotNetSpain2016 sobre ASP.NET Core.
Temas tratados:
Model Binding
Routing
Tag Helpers
View Components
Configuración
Localización
NetRaf 2017 - Chat multiplataforma con reconocimiento de vozDiego Bersano
Presentación utilizada en el NetRaf 2017, comentando la realización de una aplicación de chat mutiplataforma con reconocimiento de voz.
Se utilizaron las siguientes tecnologías / plataformas:
- SignalR
- Cognitive Services
- Xamarin
- ASP.NET WebApi
- Android
- iOS
- Azure
Go es un lenguaje de programación diseñado para desarrollar de software de “backend” altamente escalable, de manera sencilla y rápida. En esta presentacion veremos que es Go, como se programa sobre él, y como utilizarlo en Azure.
Zend Framework Taller de SeeD Software, Colombiarazigal
Esta es la diapositiva del taller 'Zend Framework' presentada por Luca Urech de SeeD Software (www.seedcorporate.com), realizada el dia 30 de abril del año 2008.
Introduccion a Elastic Beanstalk AWS Roadshow Bogota MexicoHermann Pais
Presentación del Roadshow AWS en Bogota, Colombia y Mexico, DF. Enfocada en el Elastic Beanstalk de AWS una solucción de gestion de servicios en la nube de AWS. En español
Charla presentada en el DevDays 2014 (http://www.comunidadesmicrosoft.org/detalles-de-developer-days-2014) presentando la necesidad de Integración y Entrega Continua, y el como Visual Studio Online nos facilita el poder desplegar nuestros proyectos a la nube y a entornos on premise.
Cualquier duda consultarme en twitter via @fisica3
Charla en la NetCoreConf Barcelona 2020, donde hablé de memoria y rendimiento en .NET.
Empecé por el GC, luego novedades de C# 7.2 respecto a type values y finalmente Span<T>
Go es un lenguaje de programación diseñado para desarrollar de software de “backend” altamente escalable, de manera sencilla y rápida. En esta presentacion veremos que es Go, como se programa sobre él, y como utilizarlo en Azure.
Zend Framework Taller de SeeD Software, Colombiarazigal
Esta es la diapositiva del taller 'Zend Framework' presentada por Luca Urech de SeeD Software (www.seedcorporate.com), realizada el dia 30 de abril del año 2008.
Introduccion a Elastic Beanstalk AWS Roadshow Bogota MexicoHermann Pais
Presentación del Roadshow AWS en Bogota, Colombia y Mexico, DF. Enfocada en el Elastic Beanstalk de AWS una solucción de gestion de servicios en la nube de AWS. En español
Charla presentada en el DevDays 2014 (http://www.comunidadesmicrosoft.org/detalles-de-developer-days-2014) presentando la necesidad de Integración y Entrega Continua, y el como Visual Studio Online nos facilita el poder desplegar nuestros proyectos a la nube y a entornos on premise.
Cualquier duda consultarme en twitter via @fisica3
Charla en la NetCoreConf Barcelona 2020, donde hablé de memoria y rendimiento en .NET.
Empecé por el GC, luego novedades de C# 7.2 respecto a type values y finalmente Span<T>
Mulesoft Meetup Sevilla 29/11/2022.
Primer Mulesoft Meetup, hablamos sobre :
1.- las bases de la integración
2.- Protocolo SOAP
3.- Ejemplos de Consumir SOAP
4.- Crear un servicio SOAP con Mule
5.- Desplegar Mule App en CloudHub 1.0, CloudHub 2.0, y Runtime Fabric
Presentación de la clase sobre el protocolo HTTP de la asignatura Servidores Web del Máster Universitario en Desarrollo de Aplicaciones y Servicios Web.
This presentation is about the present and future of the .NET platform and the C # programming language. We will review the current state of the .NET platform, the new features of .NET 2.1, and the future of the C # language.
Por primera vez ASP.NET funciona en Windows, Max, y Linux mediante la version de multiplataforma de ASP.NET, llamada ASP.NET Core. Esta versión incluye muchos nuevas características, como el soporte side by side, tiempos de desarrollo mas cortos, soporte para entornos de containers y cloud, que presentaremos en estos slides.
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
5. Representational state transfer (REST)
• REST (representational state transfer) es un estilo de
arquitectura de software para el intercambio de
contenido en ambientes Web
• Fue introducido en el año 2000 por Roy Fielding, uno
de los autores de HTTP
– “Architectural Styles and the Design of Network-based
Software Architectures”
• En general el termino es utilizado para describir
cualquier interfaz simple que sirva para transmitir
información sobre HTTP sin una capa de mensajería
adicional como SOAP, XML-RPC, Session tracking o
HTTP Cookies
15. Características de ASP.NET Web API
• De ASP.NET MVC
• Link generation
• Testability
• IoC integration
• VS template
• Scaffolding
• De WCF Web API
• Server-side query composition
• Create custom help pages
• Self-host
• Tracing
16. Para implementar Web API . . .
• Derivar ApiController
• Implementar las acciones
– Las acciones mapean a métodos HTTP
– Prefijar los nombres de los métodos como el verbo HTTP deseado –
PostComment
– Usar [Get/Post/Put/Delete] si se prefiere un nombre diferente
17. Ruta default en Web API
• routes.MapHttpRoute(
– name: "DefaultApi",
– routeTemplate: "api/{controller}/{id}",
– defaults: new { id = RouteParameter.Optional }
– );
20. Media Types Formatters
• En Web API los Media Types determinan como
se serializan y deserializan el HTTP Body
• Para crear un media formatter se debe derivar
de:
– MediaTypeFormatter: Asincrónico
– BufferedMediaTypeFormatter: Sincrónico
21. Content Negotiation
• HTTP specification (RFC 2616) lo define como
“the process of selecting the best
representation for a given response when
there are multiple representations available.”
• Utilizando
– Accept:
– Accept-Charset
– Accept-Encoding
– Accept-Language
22. Content Negotiation
• El HTTP Dispatcher llama a la implementación de
IContentNegociator
– Este objeto es el encargado de determinar la mejor
representación posible
• Se llama al método Negotiate
– Type del objeto a serializar
– Colección de media formatters
– HTTP Request
• Devuelve el formatter a usar y el media type
– Si no se encuentra ningún formatter valido devuelve
null, y el cliente recibe un error HTTP 406
24. Validation
• La validación se corre en el modelo en cada
Request
– Igual que en ASP.NET MVC
• Los errores de validación se acumulan en el
ModelState
• Se chequean con ModelState.IsValid
• Se pueden utilizar DataAnnotations o lógica
custom de validación
25. OData queries
• Soporte para sintaxis de OData URL query
– $top, $skip, $orderby, $filter
• Se habilita con el atributo [Queryable] y
retornando IQueryable<T> desde la acción
26. Web API Description
• Se puede usar IApiExplorer para obtener una
descripción de las Web API en runtime
• Útil para construir paginas de ayuda, clientes
de test, y herramientas
29. Haciendo llamadas asincrónicas fácilmente
Task<string> Op123Async(string s) {
var tcs = new TaskCompletionSource<string>();
var state = 0;
Action resume = delegate {
switch (state) {
case 0: Task<string> t1 = Op1Async(s);
state = 1; t1.ContinueWith(resume);
break;
case 1: Task<string> t2 = Op2Async(t1.Result);
...}
async Task<string> Op123Async(string s) {
string s1 = await Op1Async(s);
string s2 = await Op2Async(s1);
string s3 = await Op3Async(s2);
return s3;
}
30. Asynchronous Support
• Porque async en el server?
– Porque nos permite usar de manera mas eficiente los recurso del
Server
• Y como funciona?
– Al momento de invocar a un resource remoto, el controller le cede el
control permitiendole reutilizar el thread mientras espera la
respuesta.
– Cuando la llamada remota se completa, el controller es re-
scheduleado para completar su ejecución.
– Menor # de threads corriendo -> aumenta la escalabilidad
• El uso de async en el servicio no se expone a browsers/clientes
– http://myserver.com/products -> la misma URL puede ser
implementada en ASP.NET usando un controller sincrónico o
asincronico.
31. Async tradicional en MVC
public class Products : AsyncController {
public void IndexAsync() {
WebClient wc1 = new WebClient();
AsyncManager.OutstandingOperations.Increment();
wc1.DownloadStringCompleted += (sender, e) => {
AsyncManager.Parameters[“result"] = e.Result;
AsyncManager.OutstandingOperations.Decrement();
};
wc1.DownloadStringAsync(new Uri("http://www.bing.com/"));
}
public ActionResult IndexCompleted(string result) {
return View();
}
}
32. Async en MVC con .NET 4.5
public class Products : Controller {
public async Task<ActionResult> IndexAsync() {
WebClient web = new WebClient();
string result = await web.DownloadStringTaskAsync("www.bing.com/");
return View();
}
}