Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las principales ventajas de Orleans son:
- Productividad del desarrollador: incluso para programadores no expertos.
- Escalabilidad transparente de forma predeterminada: no requiere ningún esfuerzo especial del desarrollador.
Productividad del desarrollador
El Orleans modelo de programación aumenta la productividad, independientemente del nivel de experiencia, proporcionando las siguientes abstracciones clave, garantías y servicios del sistema.
Paradigma familiar de programación orientada a objetos (OOP)
Los granos son clases de .NET que implementan interfaces de grano de .NET declaradas con métodos asincrónicos. Los granos aparecen como objetos remotos cuyos métodos se pueden invocar directamente. Esto proporciona el paradigma POO conocido al convertir las llamadas de método en mensajes, enrutarlos a los puntos de conexión adecuados, invocar los métodos de la instancia de destino y gestionar de manera transparente los fallos y casos límite.
Ejecución de un solo subproceso de granos
El tiempo de ejecución garantiza que un grano nunca se ejecuta en más de un subproceso a la vez. Combinado con el aislamiento de otros granos, los desarrolladores nunca se enfrentan a la simultaneidad en el nivel de grano y nunca necesitan bloqueos u otros mecanismos de sincronización para controlar el acceso a los datos compartidos. Esta característica solo hace que el desarrollo de aplicaciones distribuidas sea manejable, incluso para programadores no expertos.
Activación transparente
El tiempo de ejecución activa un grano solo cuando hay un mensaje para que lo procese. Esto separa limpiamente la creación de una referencia de grano (controlada por código de aplicación) y la activación física del grano en memoria (transparente para la aplicación). Esto es similar a la memoria virtual en la que el sistema operativo decide cuándo traer páginas a la memoria y cuándo expulsar las páginas de la memoria. Del mismo modo, en Orleans, el tiempo de ejecución decide cuándo activar un grano (traerlo a la memoria) y cuándo desactivar un grano (expulsarlo de la memoria). La aplicación tiene acceso ininterrumpido al "espacio de memoria" completo de granos creados lógicamente, independientemente de que estén en memoria física en un momento dado.
La activación transparente permite el equilibrio de carga dinámico y adaptable a través de la colocación y migración de componentes en el grupo de recursos de hardware. Esta característica mejora significativamente en el modelo de actor tradicional, donde la duración del actor es administrada por la aplicación.
Transparencia de ubicación
Una referencia de grano (objeto proxy) que se usa para invocar los métodos de un grano o pasar a otros componentes contiene solo la identidad lógica del grano. El Orleans tiempo de ejecución controla de forma transparente la traducción de la identidad lógica del grano a su ubicación física y enruta los mensajes en consecuencia.
El código de aplicación se comunica con granos sin conocer su ubicación física. Esta ubicación puede cambiar con el tiempo debido a errores, gestión de recursos o porque un 'grain' se desactiva al ser llamado.
Integración transparente con un almacén persistente
Orleans permite asignar mediante declaración el estado en memoria de un grano a un almacén persistente. Sincroniza las actualizaciones, garantizando de manera transparente que los llamadores reciben resultados solo después de que el estado persistente se haya actualizado correctamente. Extender o personalizar el conjunto de proveedores de almacenamiento persistente existentes es sencillo.
Propagación automática de errores
El tiempo de ejecución propaga automáticamente errores no controlados por la cadena de llamadas con la semántica de try/catch asincrónica y distribuida. Como resultado, los errores no se pierden dentro de una aplicación. Esto permite colocar la lógica de control de errores en lugares adecuados sin el trabajo tedioso de propagar manualmente los errores en cada nivel.
Escalabilidad transparente de forma predeterminada
El Orleans modelo de programación guía a los desarrolladores hacia el escalado correcto de aplicaciones o servicios a través de varios órdenes de magnitud. Para ello, incorpora patrones y procedimientos recomendados probados y proporciona una implementación eficaz de la funcionalidad del sistema de nivel inferior.
Estos son algunos factores clave que permiten la escalabilidad y el rendimiento:
Particionamiento específico implícito del estado de la aplicación
El uso de granos como entidades direccionables directamente desglosa implícitamente el estado general de la aplicación. Aunque el Orleans modelo de programación no prescribe el tamaño de grano, en la mayoría de los casos, tiene sentido tener un número relativamente grande de granos (millones o más), con cada uno que represente una entidad de aplicación natural, como una cuenta de usuario o un pedido de compra.
Con los granos direccionables individualmente y su ubicación física abstraída por el tiempo de ejecución, Orleans posee una enorme flexibilidad para equilibrar la carga y gestionar las zonas activas de forma transparente y genérica, sin necesidad de que el desarrollador de la aplicación se preocupe por ello.
Administración de recursos adaptables
Los granos no asumen la localidad de otros granos al interactuar. Debido a esta transparencia de ubicación, el tiempo de ejecución puede administrar y ajustar dinámicamente la asignación de recursos de hardware disponibles. El tiempo de ejecución logra esto mediante la toma de decisiones específicas sobre la colocación y migración de granos en el clúster de computación en reacción a los patrones de carga y comunicación, sin fallar en las solicitudes entrantes. Al crear varias réplicas de un grano en particular, el tiempo de ejecución puede aumentar su capacidad de procesamiento sin necesidad de modificar el código de la aplicación.
Comunicación multiplexada
Los gránulos de Orleans tienen puntos finales lógicos, y la mensajería entre ellos está multiplexada en un conjunto fijo de conexiones físicas de todos a todos (sockets TCP). Esto permite que el entorno de ejecución hospede millones de entidades direccionables con poca sobrecarga del sistema operativo por grano. Además, la activación y desactivación de una unidad no conlleva el costo de registrar o anular el registro de un punto de conexión físico (como un puerto TCP o una URL HTTP) ni siquiera la necesidad de cerrar una conexión TCP.
Programación eficaz
El entorno de ejecución programa la ejecución de muchos granos de ejecución de un solo subproceso mediante el grupo de subprocesos de .NET, que está altamente optimizado para el rendimiento. Cuando el código granular se escribe en el estilo basado en continuaciones (un requisito del modelo de Orleans programación), el código de la aplicación se ejecuta de manera muy eficiente en un entorno de múltiples hilos cooperativos, sin contención. Esto permite al sistema lograr un alto rendimiento y ejecutarse con un uso de CPU muy alto (hasta 90%+) con una gran estabilidad.
El hecho de que el crecimiento en el número de granos y el aumento de la carga no conduce a subprocesos adicionales u otros primitivos del sistema operativo ayuda a la escalabilidad de nodos individuales y al sistema completo.
Asincronía explícita
El Orleans modelo de programación hace que la naturaleza asincrónica de las aplicaciones distribuidas sea explícita y guía a los desarrolladores a escribir código asincrónico sin bloqueo. En combinación con la mensajería asincrónica y la programación eficaz, esto permite un gran grado de paralelismo distribuido y rendimiento general sin necesidad de un multiproceso explícito.