Skip to content

Instantly share code, notes, and snippets.

@lucasp90
Created July 2, 2017 05:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucasp90/043ba95d14c8b1ba6e5ea58f1c03fcc9 to your computer and use it in GitHub Desktop.
Save lucasp90/043ba95d14c8b1ba6e5ea58f1c03fcc9 to your computer and use it in GitHub Desktop.
NET Conf AR 2017

NETConfAR2017

Going Pixel Perfect with Xamarin and MVVMCross

Nicolas Milcoff (@nmilcoff) - DGenix

Slides

Problemas en desarrollo mobile actual

  • Diversidad de dispositivos a soportar (SO, equipos, resoluciones de pantalla, etc)
  • Requerimientos técnicos
  • Actualizaciones continuas
  • Sencillez de uso, experiencia rápida y rica (el usuario tiene que hacer mucho en poco tiempo)
  • Competitividad: Todos podemos subir cosas a la AppStore o PlayStore y competir contra los grandes de la industria... pero también contra otros miles de proveedores como nosotros.

Arquitecturas mobile usando Xamarin

  • UI Platform + App Logic
  • UI Platform + Xamarin Forms + App logic

Usar plain Xamarin es útil para apps de usuarios finales, que puedan escalar en el tiempo y que hagan uso de APIs específicas de cada plataforma (geolocation, camera, etc). Otro buen motivo para optar por Xamarin es cuando hay necesidad de mantenerse al día con los sistemas operativos a soportar, así como también si la app manejará gran cantidad de datos.

Usar Xamarin.Forms sirve si nuestra app tiene un scope acotado y especialmente si los usuarios van a estar obligados a usarla (ej, app corporativa)

MVVMCross

  • Framework MVVM
  • Soporta iOS, ANdroid, Forms, tvOS, Mac y más...
  • Gran comunidad
  • Features: Data binding, value converters, IoC container, DI engine, Unit testing, Plugins
  • Flexible (Reactive, Xamarin.Forms, SQLite, etc)

Build OO JavaScript Apps with TypeScript and VS Code

Rachel Appel @RachelAppel - Microsoft

  • Typescript es un superset de Javascript que permite desarrollar teniendo tipos de datos y otras funcionalidades propias de los lenguajes orientados a objetos.
  • Se escriben archivos .ts y se transpilan a .js

Typescript con Visual Studio Code

  • tsconfig.json es el archivo que usa vscode para detectar cómo transpilar nuestros scripts al hacer un build.
  • ctrl+shift+p brinda opciones para trabajar con Typescript
  • ctrl+shift+b build

Features interesantes

  • Null y Undefined son tipos
  • Never sirve para definir que no se va a devolver nada en una función (ni siquiera Undefined)
  • Aliases: una variable puede aceptar ciertos tipos de datos especificados al momento de declararla.
  • Acceso y visibilidad restringida sobre properties de un objeto.

Cómo se escribe Typescript

  • En general se suelen desarrollar módulos que exportan clases o interfaces
  • Se recomienda generar sourcemaps para nuestros archivos Typescript para poder utilizar esa info al momento de debuggear. Caso contrario, vamos a estar debuggeando el archivo Javascript que genera Typescript al transpilar.

Conecta Microsoft Flow, PowerApps y PowerBI a los procesos de negocio y datos corporativos

Fabián Imaz (@fabianimaz) - Siderys

  • PowerApps permite crear aplicaciones web o mobile con una GUI Web, utilizando diversos servicios de Microsoft como data sources, como por ejemplo, Sharepoint o SQL Server.
  • Flow agrega listeners a las power apps, los cuales disparan workflows en función de los eventos definidos, como por ejemplo cambios en Sharepoint, envío de mails, Tweets, Inserts en bases de datos.
  • Power BI brinda visualizaciones de los datos generados mediante PowerApps y Flow.
  • Estas heramientas pueden integrarse con servicios que no estén en la nube.

Mejorando el rendimiento de App .NET con Caching

Fernando Sonego, Nicolas Granata - Algeiba IT

  • Problema: muchos recursos para aplicaciones poco performantes en lugar de aplicaciones optimizadas con los recursos necesarios y suficientes.
  • Caching: almacenamiento temporal de información procesada para obtener rápido acceso.
  • Beneficios: menos latencia, menos tráfico de red (importante para cloud!), menos recursos de hardware.
  • Tipos de caché (web):
    • Browser
    • Proxy intermedio: Guarda en memoria (ej, redis)
    • Caché inverso: Dentro de la infraestructura del server (ej cdn)
  • Demo:
    • Cargar contenido estático por un tiempo definido
    • Cargar en caché datos de una base
    • Cachear paginado en función de parámetros recibidos en un querystring (útil si el contenido paginado no se modifica)
  • Redis: caché distribuido
  • Redis + Azure
    • Agregar NuGet pkg (.NET Core)
    • Configurar conexión e instancia de Redis
    • Inyectar a controllers
    • Uso: cuando se solicita el contenido que se quiere cachear, primero consultar si existe la key en redis, caso contrario, traer los datos de la base y guardarlos en cache con un tiempo de expiración definido.
  • Cosas importantes para tener en cuenta:
    • Cosas a cachear: Contenido estático, contenido que no se modifica
    • Cache + https es viable: no se debería guardar contenido sensible.
    • Versionado de archivos y necesidad de cambio de los datos en caché.

Angular en un mundo Typescript

Jorge Cano (GDE) - Bytedefault

  • ATScript ES5 con annotations y types
  • Jonathan Turner explicó que era una paja laburar con ATScript
  • Partnership entre Angular y Microsoft: Typescript
  • Rehacer Angular usando TS.
  • Beneficios: types, tools, backend-friendly.
  • Inspección de complejidad de apps de angular: ngworld - ngrev
  • Angular ecosystem: Nativescript, Rxjs, Ionic, Firebase (angular-fire), ngrx, electron

Real time applications using SignalR, .NET Core and Angular

SignalR

Nicolás Granata - Florencia Nodar - Algeiba IT

  • Protocolos de comunicación
    • websockets: comunicación bidireccional entre cliente y servidores, soportado a partir de HTML5
    • server sent events
    • forever frame (antiguo)
    • long polling (antiguo)
  • SignalR es una Lib para añadir comportamiento real-time
  • Dos tipos de Conexiones: persistentes o hubs
  • Arranca por websockets (lightweight), luego por server-sent events, forever frames o long polling como último recurso

Conexiones persistentes

  • API de bajo nivel
  • Mensajes raw y personalizados
  • Proocolo definido por usuario

Hubs

  • Api de alto nivel
  • Mensajes de alto nivel
  • Protocolo definido por SignalR

SignalR Core no va a depender de JQuery, reescrito con la nueva API de .NET. Saldría para .NET Core 2.0

Scaling an Engineering Team without sacrificing Quality

Johnny Halife (@johnnyhalife)

La charla consistió en la necesidad de delegar control en herramientas automáticas a la hora de estandarizar flujos de trabajo y buenas prácticas a la hora de escribir código en equipos grandes.

Algo que se mencionó es que encarar un proceso para garantizar la calidad de código no implica revisar el código viejo (siempre hay cosas que van a estar mal hechas y hacer refactoring sin reglas claras va a hacernos volver a ese código eventualmente). Nosotros podemos garantizar que lo que se toque a partir de que arrancamos el proceso, va a ser de mejor calidad. El resto, se mejorará en caso de que haya que trabajar en ese código.

Para agilizar los chequeos funcionales, se propone ser más laxo con los chequeos en branches no productivos. De esta manera, podemos deployar en staging para validaciones funcionales sin necesidad de pasar por el proceso de chequeo de calidad en el código (eso quedará para cuando haya que subir a master)

Algunas herramientas que se nombraron fueron las siguientes:

  • Mentionbot
  • Code climate
  • Coveralls: evolución del code coverage
  • Travis
  • Zappr
  • Pull approve: define reglas de aprobación de PRs
  • Greenkeeper
  • Snyk

Es necesario actualizar PRs si hubo cambios sobre master. Tenemos que garantizar de que los vistos buenos fueron dados por los cambios que se van a impactar en master al momento en que se está por mergear.

Web API con .NET Core

Mariano Sánchez (@marianosz)

  • .NET Core: Multiplatform, open source, lightweight, composable
  • Requisitos: .NET core runtime engine + sdk
  • MS Cambió el paradigma: Soporte multiplataforma, todo abierto. Ahora apuestan a vender su plataforma (Azure)
  • La CLI de dotnet tiene todo lo necesario para poder generar una aplicación de ASP.NET Core (package manager, run, build)

WebAPI

  • Cross platform. Se aleja del webserver de Windows y tiene su propio webserver.
  • Más rápido: IIS procesa muchas cosas antes de emitir respuesta, ya sea por contenido estático o petición a un controller.
  • Open source.
  • El archivo Program.cs de un proyecto WebAPI levanta un webserver (no estaba en los proyectos .NET viejos), lo mismo para configurar dependencias.
  • Para deployar en producción, hay que poner un webserver posta (Reverse Proxy)
  • Para inyectar dependencias, sólo se agrega la referencia al proyecto y se inyecta en donde corresponda.

Deploy en Docker

  • Crear el Dockerfile
  • Agregar el Dockerfile a los archivos incluidos en el Publish de la aplicación
  • Comando de publicación: dotnet publish
  • Comando de compilación: dotnet build
  • Se puede deployar en cualquier servicio, Azure, AWS, Containers de docker en Azure, etc.

CosmosDB

Matías Quaranta (Microsoft) @ealsur - @AzureCosmosDB

Ejemplos de uso de CosmosDB

  • Desafíos actuales, tráfico de datos de forma rápida, confiable y disponible
  • Solución, Azure Cosmos DB: DBaaS (?)
    • Distribución global
    • Multimodelo
    • Escalable (tamaño y performance)
    • Disponibilidad 7x24
    • Particionado transparente de las bases de datos
    • Consistencia personalizable: eventual, fuerte
    • Baja latencia operativa: 10ms en 99%, 15ms en 99% (Esto no garantiza la velocidad de la app, e.g. si tengo la app en Brasil y la db en USA 🧌)
    • SLA en 4 dimensiones (Latencia, Disponibilidad, Ancho de banda, Consistencia)

Multimodelo

  • Todos los datos están guardados en JSON más allá del modelo de información guardado
  • Indexado en real-time
  • DocumentDB (SQL+JS)
  • Bases de datos y colecciones (pagás por las colecciones)
  • Las colecciones guardan datos, funciones, triggerers y stored procedures

Tools/Benefits

  • Azure portal: Data explorer - muestra los datos como documentos. Esquemas dinámicos.
  • Consultas en formato SQL
  • Obtención de datos en función de la ubicación del cliente. Menos latencia.
  • Interfaz DocumentDB: SDKs + REST API -> Cosmos DB
  • Interfaz mongoDB: SDK + Wire Protocol -> Cosmos DB
  • Premium Tables API. Mismos beneficios que cosmosDB pero para reemplazar Azure Table Storage.
  • Graph API (Gremlin). Corre en cosmosDB. Queries en Gremlin o SQL, escalabilidad usando Apache tinkerpop. Distribuido, escalable.
  • Encryption as Rest: Guardás la info encriptada al persistir, en real-time y sin penalidad en la performance.

Charging

  • RU/m request unit per minute: pagás por un servicio regular, si tenés picos de tráfico abonás el escalado sólo por el tiempo en el que lo usás.

Usos de CosmosDB

  • Apps globales de critical mission
  • IoT
  • Personalización de servicios
  • Retail/e-commerce
  • Gaming

Ejemplo, Toyota guarda telemetría, Jet, Next Games (TWD Game)

Kubernetes

  • Master + minions/workers
  • Continuous Delivery + Continuous Deployment = develpment - artifact - docker container - kubernetes descriptor (forma en que se deploya) - helm chart (configuración de ambientes en los que se deploya) - deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment