martes, 9 de abril de 2019

Como la asincronía ha llegado para quedarse y aún hay desarrolladores que no lo tienen claro del todo, he pensado que sería interesante traducir y republicar aquí el post, por supuesto, con permiso expreso de su autor (thank you, Mark! ;))
¡Vamos allá!
Publicado por José M. Aguilar a las 8:25 a. m.
Hay
2 comentarios, ¡participa tú también!
Etiquetas: antipatrones, asincronía, c#
lunes, 8 de abril de 2019
Por si te lo perdiste...
- Ilities
José María Aguilar - El nuevo tipo de retorno ActionResult<T> en ASP.NET Core 2.1
José María Aguilar
.NET / .NET Core
- Modernize Your C# Code
Florian Rappl - Getting .NET Core 3 Preview to Work in Visual Studio 2019
Jeremy Clark - How to Beat Array Iteration Performance with Parallelism in C# .NET
Michael Shpilt - Making It Up as You Go Along with ExpandoObjects
Peter Vogel - Kirill’s Whitespace Guidelines for C#
Kirill Osenkov - Task.IsCompletedSuccessfully
Jeremy Clark - List vs IEnumerable vs IQueryable vs ICollection vs IDictionary
Mahsa Hassankashi - New C# 8 Features in Visual Studio 2019
Damir Arh - ConcurrentDictionary + closure = 💔
Gérald Barré
martes, 2 de abril de 2019
El problema
En el escenario concreto que planteaba nuestro querido lector era que quería proporcionar, a los componentes que necesitaban acceder a datos en su aplicación, un acceso limitado al contexto de datos de Entity Framework.Para ello, por un lado definía una interfaz parecida a la siguiente, que proporcionaba acceso a los repositorios:
public interface IUserRepositories
{
DbSet<User> Users { get; }
...
}
Por otra parte, definía otra interfaz que era la que permitía comprometer cambios (adiciones, supresiones, modificaciones) realizadas en el contexto de datos:public interface IUnitOfWork
{
int SaveChanges();
}
La idea de esta separación es que si un componente necesitaba exclusivamente consultar datos relativos a usuarios, sólo recibiría mediante inyección de dependencias la instancia de IUserRepositories
, mientras que si necesitaba persistir datos, recibiría adicionalmente un objeto IUnitOfWork
, por ejemplo:public class UserServices
{
...
public UserServices(IMapper mapper, IUserRepositories userRepos, IUnitOfWork uow)
{
_mapper = mapper;
_userRepos = userRepos;
_uow = uow;
}
public async Task Update(int id, UserDto user)
{
var user = await _userRepos.Users.FirstOrDefaultAsync(u=>u.Id == id);
if(user == null)
throw new Exception();
_mapper.Map(userDto, user);
await _uof.SaveChangesAsync();
}
}
Bien, pues el problema lo tenía precisamente a la hora de registrar las dependencias de forma apropiada.
lunes, 1 de abril de 2019
Por si te lo perdiste...
- Adivina, adivinanza: ¿por qué no compila este código?
José María Aguilar - Inicializar a null propiedades sin tipo
José María Aguilar
.NET / .NET Core
- Accepting Partial Resources with Newtonsoft.Json
Florian Rappl & Manuel Römer - AutoMapper's Design Philosophy
Jimmy Bogard - Using .NET PInvoke for Linux system functions
Tom Deseyn - Hosting DI Container with .NET Core 3.0
Christian Nagel - C# Multithreaded Resource Access – Locks, Monitors and Mutex
John Demetriou - Migrating Delegate.BeginInvoke Calls for .NET Core
Mike Rousos - .NET Core Workers as Windows Services
Glenn Condron
martes, 26 de marzo de 2019
Blogger invitado

Jorge Turrado
Apasionado de la programación, siempre buscando la manera de mejorar el día a día con el desarrollo de tecnologías .NET. Apasionado de este momento tan cambiante y fabuloso para ser desarrollador C#.Para hacer esto tenemos varios caminos posibles, unos más automatizables que otros, y cuál elegiremos dependerá de nuestras necesidades:
- A través de la interfaz web de Azure
- Desde Visual Studio
- Usando Azure Resource Manager (ARM).
lunes, 25 de marzo de 2019
Por si te lo perdiste...
- 10 Diferencias entre .NET Core y .NET Framework
José María Aguilar - ¿Comprometidos o involucrados?
José María Aguilar
.NET / .NET Core
- Async Streams with C# 8
Christian Nagel - Schedule Background Jobs Using Hangfire in .NET Core
Changhui Xu - Perfect console application in .net Core: Set up dependency injection & Add unit tests
Michał Białecki - Demystifying HttpClient Internals: HttpRequestMessage
Steve Gordon - C# 8: nullable reference types
Oli -
How to Port Desktop Applications to .NET Core 3.0
Olia Gavrysh - String comparisons are harder than it seems
Gérald Barré - Profiling .NET Code with PerfView and visualizing it with speedscope.app
Adam Sitnik - Benchmarking performance of your code between release versions
Shannon Deminick - YAML, ventajas, desventajas y cuándo usarlo & Leyendo documentos YAML en .NET Core
Jorge Serrano - LazyCache 2.0 released
Alastair Crabtree - Stop wasting time during .NET Core builds
Donovan Brown