Este es un post invitado del equipo de Orleans. Orleans es un marco multiplataforma para crear aplicaciones distribuidas usando .NET. Consulte https://github.com/dotnet/orleans para obtener m谩s informaci贸n.Nos complace anunciar el lanzamiento de Orleans 3.0. En comparaci贸n con Orleans 2.0, tiene muchas mejoras y correcciones, as铆 como varias caracter铆sticas nuevas. Estos cambios est谩n dictados por la experiencia de muchas personas que usan aplicaciones basadas en Orleans en la producci贸n en una amplia gama de escenarios y entornos, as铆 como el entusiasmo de la comunidad global de Orleans, que ayuda a que el marco sea mejor, m谩s r谩pido y m谩s flexible. 隆Muchas gracias a todos los que contribuyeron a este lanzamiento de varias maneras!

Cambios importantes en comparaci贸n con Orleans 2.0
Orleans 2.0 se lanz贸 hace poco m谩s de 18 meses, y el marco ha progresado significativamente desde entonces. Algunos cambios en comparaci贸n con 2.0:
- Transacciones ACID distribuidas
- Un nuevo planificador que en algunos casos ha aumentado la productividad en m谩s del 30%.
- Nuevo generador de c贸digo basado en Roslyn
- Reescritura de membres铆a de cl煤ster para mejorar la velocidad de recuperaci贸n
- Soporte de cohospedaje
As铆 como muchas otras mejoras y correcciones.
Sustituci贸n de la capa de red con ASP.NET Bedrock
Mantener comunicaciones seguras usando
TLS ha sido una preocupaci贸n importante por alg煤n tiempo. Adem谩s, tanto de la
comunidad como de los socios internos. En la versi贸n 3.0, agregamos compatibilidad con TLS, disponible a trav茅s del paquete
Microsoft.Orleans.Connections.Security . Vea el
ejemplo de TransportLayerSecurity para m谩s informaci贸n.
La implementaci贸n del soporte TLS fue una preocupaci贸n importante debido a c贸mo se implement贸 la capa de red en versiones anteriores de Orleans: no pod铆a adaptarse f谩cilmente para usar
SslStream
, que es el m茅todo m谩s com煤n para implementar TLS. Usando TLS como fuerza impulsora, reescribimos la capa de red de Orleans.
En Orleans 3.0, toda la capa de red se reemplaza con una capa creada sobre la base de
Project Bedrock , una caracter铆stica del grupo ASP.NET. El objetivo de Bedrock es ayudar a los desarrolladores a crear clientes y servidores de red r谩pidos y confiables.
El equipo de ASP.NET y el equipo de Orleans trabajaron juntos para crear abstracciones que admitan tanto los clientes como los servidores de la red, sean independientes del transporte y se puedan configurar mediante middleware. Estas abstracciones nos permiten cambiar el "transporte" de la red a trav茅s de la configuraci贸n sin cambiar el c贸digo de red interno espec铆fico de Orleans. El soporte Orleans TLS se implementa como middleware Bedrock, y tenemos la intenci贸n de hacerlo universal para que pueda compartirse con otros en el ecosistema .NET.
Aunque el incentivo para esta innovaci贸n fue la incorporaci贸n del soporte TLS, en nuestras pruebas de carga por la noche, el rendimiento promedio aumenta en aproximadamente un 30%.
La reescritura de la capa de red tambi茅n incluy贸 la sustituci贸n de nuestra agrupaci贸n de b煤feres personalizada con un
MemoryPool<byte>
, y con este cambio, la serializaci贸n ahora aprovecha m谩s
Span<T>
. Algunas rutas de c贸digo que anteriormente depend铆an del bloqueo a trav茅s de hilos dedicados que llaman a
BlockingCollection<T>
ahora usan el
Channel<T>
para pasar mensajes asincr贸nicos. Esto da como resultado hilos menos dedicados, en lugar de mover el trabajo al grupo de hilos .NET.
Cohospedaje a trav茅s del host gen茅rico
Coorganizar Orleans con otras plataformas como ASP.NET Core en el mismo proceso ahora es m谩s f谩cil que antes gracias a
.NET Generic Host .
Aqu铆 hay un ejemplo de
UseOrleans
agregar Orleans junto con ASP.NET Core a un host usando
UseOrleans
:
var host = new HostBuilder() .ConfigureWebHostDefaults(webBuilder => {
Esta funcionalidad se puede usar para simplificar la topolog铆a de implementaci贸n o para agregar caracter铆sticas adicionales a una aplicaci贸n existente. Algunos equipos usan alojamiento compartido internamente para agregar
pruebas de Kubernetes a sus proyectos de Orleans utilizando las
comprobaciones de estado de
ASP.NET Core .
Mejoras de confiabilidad
Los cl煤steres ahora se recuperan m谩s r谩pido de las fallas gracias a los chismes avanzados. Adem谩s, los errores de mensajer铆a ahora se manejan de manera m谩s consistente, lo que resulta en errores que se devuelven a la persona que llama. Esto ayuda a los desarrolladores a encontrar errores m谩s r谩pido. Por ejemplo, cuando un mensaje no se puede serializar o deserializar por completo, se devolver谩 una excepci贸n detallada al llamante original.
Extensibilidad mejorada
Las transmisiones ahora pueden tener sus propios adaptadores de datos, lo que les permite recibir datos en cualquier formato. Esto brinda a los desarrolladores m谩s control sobre c贸mo se representan los elementos de flujo en el repositorio. Tambi茅n le da al proveedor de flujo control sobre c贸mo se escriben los datos, permitiendo que los flujos se integren con los sistemas existentes y / o servicios que no son de Orleans.
El estado personalizado de la transacci贸n ahora puede declarar qu茅 roles puede jugar en la transacci贸n. Por ejemplo, una implementaci贸n de un estado de transacci贸n que escribe eventos del ciclo de vida de la transacci贸n en la cola del bus de servicio no puede cumplir con las obligaciones de un administrador de transacciones porque es de solo escritura.
脷nete ahora!
Ahora que se ha lanzado Orleans 3.0, estamos dirigiendo nuestra atenci贸n a futuras versiones, 隆y tenemos algunos planes emocionantes! 脷nete a nuestra c谩lida y acogedora comunidad en
GitHub .
Ver tambi茅n: 7 cursos gratuitos para desarrolladores