Este documento presenta una introducción a las principales novedades de C# 6.0, ASP.NET vNext y las tecnologías front-end como Grunt y Gulp. Se resumen los cambios más importantes en C# como las propiedades de solo get, interpolación de cadenas y operadores condicionales nulos. En ASP.NET vNext se destaca que unifica MVC y Web API, usa el archivo project.json y reemplaza la configuración por código. Finalmente promueve el uso de herramientas como Grunt, Gulp y Bower para automatizar tareas
Muchas de las operaciones que mostraremos a continuación utilizan el método de recursividad para obtener el resultado deseado, de este modo en algunos casos el código se nos hará más sencillo de entender para los programas siguientes.
Typescript está de moda. Un lenguaje fuertemente tipado, con objetos basados en clases, que viene a corregir los problemas históricos de javascript con el apoyo de Microsoft y Angular.
Por otro lado, Dart es un lenguaje desarrollado por Google como alternativa a javascript, que viene a cubrir también los problemas históricos de javascript.
¿Es Dart una alternativa real a Typescript?
En esta charla vamos a ver una comparativa "face to face" entre los 2 lenguajes, basada en ejemplos. Características, sintaxis, performance, ecosistema,...
¿Llegaremos a alguna conclusión?
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
02/03/2017
Charla Universidad Politécnica de Valencia - https://www.upv.es/
Asingnatura : Auditoria, Calidad y Gestion de Sistemas de Información (ACG)
Máster Universitario en Ingeniería Informática - https://www.upv.es/titulaciones/MUIINF/
Las modas siempre vuelven, gRPC es un framework para las llamadas a servicios remotas, se esta poniendo de moda debido a que ofrece un rendimiento muy optimo. Pero realmente es tan bueno. Mejora a Rest. En esta sesión haremos una comparativa entre ambos y veremos en que escenarios debemos de usar uno o otro y por qué.
Muchas de las operaciones que mostraremos a continuación utilizan el método de recursividad para obtener el resultado deseado, de este modo en algunos casos el código se nos hará más sencillo de entender para los programas siguientes.
Typescript está de moda. Un lenguaje fuertemente tipado, con objetos basados en clases, que viene a corregir los problemas históricos de javascript con el apoyo de Microsoft y Angular.
Por otro lado, Dart es un lenguaje desarrollado por Google como alternativa a javascript, que viene a cubrir también los problemas históricos de javascript.
¿Es Dart una alternativa real a Typescript?
En esta charla vamos a ver una comparativa "face to face" entre los 2 lenguajes, basada en ejemplos. Características, sintaxis, performance, ecosistema,...
¿Llegaremos a alguna conclusión?
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
02/03/2017
Charla Universidad Politécnica de Valencia - https://www.upv.es/
Asingnatura : Auditoria, Calidad y Gestion de Sistemas de Información (ACG)
Máster Universitario en Ingeniería Informática - https://www.upv.es/titulaciones/MUIINF/
Las modas siempre vuelven, gRPC es un framework para las llamadas a servicios remotas, se esta poniendo de moda debido a que ofrece un rendimiento muy optimo. Pero realmente es tan bueno. Mejora a Rest. En esta sesión haremos una comparativa entre ambos y veremos en que escenarios debemos de usar uno o otro y por qué.
Como desarrollar una api en .NET Core como un autentico AvengerAdrian Diaz Cervera
Sesión impartida en la NetCoreConf del 18 de Enero del 2020 en Barcelona, en la que tratamos que aspectos tenemos que tener en cuenta para desarrollar una API y las particularidades que hay en .NET Core 3.1
PResentación realizada en el evento Hello Windows 10 en los mostramos como poder dotar de inteligencia a nuestras aplicaciones universales mediante la utilización del proyecto Oxford
Slides del IT camps de la Comunidad de Office 365 sobe el desarrollo de Apps para la Office Store, sus ventajas e inconvenites sobre la versión on premise. Los tipos de Apps que existen y como podemos sacarle partid
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
1. una consultora tecnológica
que piensa en colores
para organizaciones vivas
una consultora tecnológica
que piensa en colores
para organizaciones vivas
ASP. NET vNext is Coming !!
Adrián Díaz Cervera
2. Adrián Díaz Cervera
ENCAMINA
Email : addiacer@gmail.com
Twitter : AdrianDiaz81
Blog
blogs.encamina.com/desarrollandos
osharepoint/
geeks.ms/blogs/adiazcervera
Es Microsoft Value Profesional de SharePoint Server
desde 2014. Miembro de varias comunidades
técnicas como SUGES, Office 365 y Valencia NET.
Lleva desarrollando con tecnologías Microsoft más
de 10 años y desde hace 5 años está centrado en el
desarrollo software. Actualmente trabaja en el
departamento de desarrollo de ENCAMINA una
consultora informática de Valencia que se destaca
por realizar soluciones basadas en Tecnología
Microsoft, principalmente en SharePoint,
SharePoint, Office 365 y Azure.
3. Valencia.NET
• Url: http://www.vlcdev.net/
• GitHub : https://github.com/ValenciaDEV
• Linkedin: https://www.linkedin.com/grp/home?gid=3918814
• Twitter: @VLCDev
• Proximos Eventos
– Octubre -> Helo Win10!!
– Noviembre -> IOT, RaspBerryPi 2 y mucho más ….
– Diciembre -> Desarrollo Movil Multiplataforma
4. Agenda
• Novedades
– Novedades en C#
– Roslyn
– ASP .NET vNext ¿Qué és?
• Cambios
• Front End (Grunt, Gulp, Node, NPM)
• Multiplataforma
• C# 6,0
• .NET Core
8. • No hay grandes cambios como en otras versiones
• Algunas características pequeñas
• Clean Code
Principales cambios
9. Getter-only auto-properties
public class Point
{
public int X { get; set; }
public int Y { get; set; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
10. Getter-only auto-properties
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
11. Initializers for auto-properties
public class Point
{
public int X { get; } = 5;
public int Y { get; } = 7;
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
12. Using static classes
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
13. Using static classes
Using static System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
14. String interpolation
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
15. String interpolation
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return $"({X}, {Y})";
}
}
16. Expression-bodied methods
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return $"({X}, {Y})";
}
}
17. Expression-bodied methods
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return $"({X}, {Y})";
}
}
() => { return $"({X}, {Y})"; }
() => $"({X}, {Y})"
18. Expression-bodied methods
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString() => "({X}, {Y})";
}
19. Expression-bodied properties
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString() => "({X}, {Y})";
}
20. Expression-bodied properties
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist => Sqrt(X * X + Y * Y);
public override string ToString() => "({X}, {Y})";
}
21. Expression-bodied properties
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist => Sqrt(X * X + Y * Y);
public override string ToString() => "({X}, {Y})";
}
22. Index initializers
public class Point
{
public int X { get; }
public int Y { get; }
…
public JObject ToJson()
{
var result = new JObject();
result["x"] = X;
result["y"] = Y;
return result;
}
}
23. Index initializers
public class Point
{
public int X { get; }
public int Y { get; }
…
public JObject ToJson()
{
var result = new JObject() { ["x"] = X, ["y"] = Y };
return result;
}
}
24. Index initializers
public class Point
{
public int X { get; }
public int Y { get; }
…
public JObject ToJson()
{
return new JObject() { ["x"] = X, ["y"] = Y };
}
}
25. Index initializers
public class Point
{
public int X { get; }
public int Y { get; }
…
public JObject ToJson() =>
new JObject() { ["x"] = X, ["y"] = Y };
}
26. Null-conditional operators
public static Point FromJson(JObject json)
{
if (json != null &&
json["x"] != null &&
json["x"].Type == JTokenType.Integer &&
json["y"] != null &&
json["y"].Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int)json["y"]);
}
return null;
}
27. Null-conditional operators
public static Point FromJson(JObject json)
{
if (json != null &&
json["x"]?.Type == JTokenType.Integer &&
json["y"]?.Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int)json["y"]);
}
return null;
}
28. Null-conditional operators
public static Point FromJson(JObject json)
{
if (json != null &&
json["x"]?.Type == JTokenType.Integer &&
json["y"]?.Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int)json["y"]);
}
return null;
}
?.
29. Null-conditional operators
public static Point FromJson(JObject json)
{
if (json != null &&
json["x"]?.Type == JTokenType.Integer &&
json["y"]?.Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int)json["y"]);
}
return null;
}
30. Null-conditional operators
public static Point FromJson(JObject json)
{
if (json?["x"]?.Type == JTokenType.Integer &&
json?["y"]?.Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int)json["y"]);
}
return null;
}
38. Await in catch and finally
try
{
…
}
catch (ConfigurationException e) if (e.IsSevere)
{
await LogAsync(e);
}
finally
{
await CloseAsync();
}
39. ROSLYN
• Compilador
de C# y Visual Basic
.NET
• APIs para analizar el
código y ayudar a
refactorizarlo
• Open Source
• Adaptar el código a
nosotros
• Multiplataforma
42. • Reescritura total de de ASP .NET
• Incompatible a nivel de código con versiones anteriores
• MVC y Web API se unifican en una sola API “ASP NET
MVC 6”
• WebForms queda Fuera
• Open Souce
• Entity Framework 7 se incluye “dentro” de ASP NET
ASP .NET vNext
42
43. • Un CLR optimo para “CLOUD”
Menos pasado
aplicaciones escalables
No vinculado a IIS
• Desplegable mediante Nuget
ASP .NET vNext
43
44. • Fichero propio de vNext
• Contiene:
– Las referencias Nuget
– Configuración
– Frameworks sobre los cuales
puede correr la aplicación
(.NET Fwk, K runtime, Mono,...)
Novedades: Project.json
44
45. • Web.Config ha muerto
• Nuevo framework de configuración con soporte para json,
command line, xml
• Configuración”hardcoded” en código...
– Bienvenido a un mundo gobernado por Roslyn
– Modifica el código... Y refresca el browser
Novedades: Configuración
45
47. • Clase ServiceCollection se agregan todas las dependencias
• ¿que pasa con nuestros viejos y conocidos contenedores de
dependencias, ya no son necesarios?
– crear nuestra propia implementacion de IServiceProvider
Novedades: Start Up -> Inyección de dependencias
47
48. • Sustituyen a PartialView
• Una clase que puede ser creada:
– Heredando de ViewComponent.
– Decorándola con el atributo [ViewComponent]
– Que nuestra clase termine con el sufijo ViewComponent.
• Una vista que será renderizada por el método Invoke de nuestro
ViewComponent.
Novedades: ViewComponents
48
49. • La nueva versión del ORM de MS se incluye dentro de
ASP.NET vNext
• Totalmente reescrito desde cero
• Incompatible con las versiones anteriores
• Basado en code first y migrations
Entity FrameWork 7.0
49
50. Novedades: Client Server
50
• es una librería JavaScript
• Configurar tareas automáticas
ahorrarnos tiempo en :
nuestro desarrollo
despliegue de aplicaciones web
• Alguna de las tareas:
– preprocesar stylus y convertirlo a CSS,
– minificar el CSS
– Validar Javascript
– Minificar los ficheros JavaScript
51. • Igual que Nuget pero solo para la web
• NPM ?= Bower
– NPM para modulos
– Bower Librerias
• Evita conflicto de librerias
• Estándar web
Novedades: Client Server Bower
51