Orleans Fördelar
De största fördelarna med Orleans är:
- Utvecklarproduktivitet, även för programmerare som inte är experter.
- Transparent skalbarhet som standard utan särskilt arbete från programmeraren.
Utvecklarnas produktivitet
Programmeringsmodellen Orleans ökar produktiviteten för både expertprogrammerare och icke-expertprogrammerare genom att tillhandahålla följande viktiga abstraktioner, garantier och systemtjänster.
Välbekanta objektorienterade programmeringsparadigm (OOP)
Korn är .NET-klasser som implementerar deklarerade .NET-korngränssnitt med asynkrona metoder. Korn visas för programmeraren som fjärrobjekt vars metoder kan anropas direkt. Detta ger programmeraren det välbekanta OOP-paradigmet genom att omvandla metodanrop till meddelanden, dirigera dem till rätt slutpunkter, anropa målkornets metoder och hantera fel och hörnfall transparent.
Entrådad körning av korn
Körningen garanterar att ett korn aldrig körs på fler än en tråd i taget. I kombination med isoleringen från andra korn står programmeraren aldrig inför samtidighet på kornnivå och behöver aldrig använda lås eller andra synkroniseringsmekanismer för att kontrollera åtkomsten till delade data. Enbart den här funktionen gör utvecklingen av distribuerade program lätthanterlig för icke-expertprogram programmerare.
Transparent aktivering
Körningen aktiverar endast ett korn när det finns ett meddelande som den ska bearbeta. Detta separerar rent begreppet att skapa en referens till ett korn, som är synligt för och styrs av programkod, och fysisk aktivering av kornet i minnet, vilket är transparent för programmet. Detta liknar virtuellt minne eftersom det bestämmer när du ska "ta en sida ut" (inaktivera) eller "sida i" (aktivera) ett korn; Programmet har oavbruten åtkomst till det fullständiga "minnesutrymmet" för logiskt skapade korn, oavsett om de finns i det fysiska minnet vid en viss tidpunkt eller inte.
Transparent aktivering möjliggör dynamisk, anpassningsbar belastningsutjämning via placering och migrering av korn i poolen med maskinvaruresurser. Den här funktionen är en betydande förbättring av den traditionella aktörsmodellen, där aktörens livslängd är programhanterad.
Platstransparens
En kornreferens (proxyobjekt) som programmeraren använder för att anropa kornets metoder eller skicka till andra komponenter innehåller endast kornets logiska identitet. Översättningen av kornets logiska identitet till dess fysiska plats och motsvarande routning av meddelanden görs transparent av körningen Orleans .
Programkoden kommunicerar med korn medan den förblir omedveten om deras fysiska plats, vilket kan ändras över tid på grund av fel eller resurshantering eller på grund av att ett korn inaktiveras vid den tidpunkt då det anropas.
Transparent integrering med ett beständigt lager
Orleans tillåter deklarativ mappning av ett korns minnesinterna tillstånd till ett beständigt lager. Den synkroniserar uppdateringar och garanterar transparent att anropare får resultat först efter att det beständiga tillståndet har uppdaterats. Det är enkelt att utöka och/eller anpassa uppsättningen befintliga beständiga lagringsproviders.
Automatisk spridning av fel
Körningen sprider automatiskt ohanterade fel i anropskedjan med semantiken för asynkron och distribuerad try/catch. Det innebär att fel inte går förlorade i ett program. Detta gör att programmeraren kan placera felhanteringslogik på lämpliga platser, utan det omständliga arbetet med att manuellt sprida fel på varje nivå.
Transparent skalbarhet som standard
Programmeringsmodellen Orleans är utformad för att vägleda programmeraren på en väg som sannolikt lyckas skala ett program eller en tjänst genom flera storleksordningar. Detta görs genom att använda beprövade metodtips och mönster och genom att tillhandahålla en effektiv implementering av systemfunktioner på lägre nivå.
Här följer några viktiga faktorer som möjliggör skalbarhet och prestanda:
Implicit detaljerad partitionering av programtillstånd
Genom att använda korn som direkt adresserbara entiteter delar programmeraren implicit upp programmets övergripande tillstånd. Orleans Även om programmeringsmodellen inte anger hur stor eller liten ett korn ska vara, är det i de flesta fall vettigt att ha ett relativt stort antal korn – miljoner eller mer – där var och en representerar en naturlig entitet i programmet, till exempel ett användarkonto eller en inköpsorder.
Med korn som är individuellt adresserbara och deras fysiska plats abstraheras bort av körningen, Orleans har enorm flexibilitet i att balansera belastning och hantera hot spots transparent och allmänt utan någon tanke från programutvecklaren.
Anpassningsbar resurshantering
Korn förutsätter inte platsen för andra korn när de interagerar med dem. På grund av den här platstransparensen kan körningen hantera och justera allokeringen av tillgängliga maskinvaruresurser dynamiskt. Körningen gör detta genom att fatta detaljerade beslut om placering och migrering av korn i beräkningsklustret som en reaktion på belastnings- och kommunikationsmönster – utan att inkommande begäranden misslyckas. Genom att skapa flera repliker av ett visst korn kan körningen öka dataflödet för kornet utan att göra några ändringar i programkoden.
Multiplexerad kommunikation
Korn i Orleans har logiska slutpunkter, och meddelanden bland dem multiplexeras över en fast uppsättning fysiska anslutningar (TCP-socketar). På så sätt kan körningen vara värd för miljontals adresserbara entiteter med låg os-omkostnad per korn. Dessutom medför aktivering och inaktivering av ett korn inte kostnaden för att registrera/avregistrera en fysisk slutpunkt, till exempel en TCP-port eller HTTP-URL eller ens stänga en TCP-anslutning.
Effektiv schemaläggning
Körningen schemalägger körningen av ett stort antal entrådade korn med hjälp av .NET-trådpoolen, som är mycket optimerad för prestanda. Med kornkod skriven i icke-blockerande, fortsättningsbaserad stil (ett krav i programmeringsmodellen Orleans ) körs programkoden på ett mycket effektivt "samarbetsindelade" multitrådat sätt utan konkurrens. Detta gör att systemet kan nå högt dataflöde och köras med mycket hög CPU-användning (upp till 90 %+) med stor stabilitet.
Det faktum att ökningen av antalet korn i systemet och en ökning av belastningen inte leder till ytterligare trådar eller andra os-primitiver hjälper skalbarheten för enskilda noder och hela systemet.
Explicit asynkron
Programmeringsmodellen Orleans gör ett distribuerat programs asynkrona karaktär explicit och vägleder programmerare att skriva icke-blockerande asynkron kod. I kombination med asynkrona meddelanden och effektiv schemaläggning möjliggör detta en stor grad av distribuerad parallellitet och övergripande dataflöde utan explicit användning av flera trådar.