Conhecendo o Microsoft Orleans \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 04 Horas 

 57 Min 

 29 Seg 

   Tempo restante da oferta: 04 57 29 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Conhecendo o Microsoft Orleans  [ Infraestrutura e Sistemas Operacionais ](https://www.treinaweb.com.br/blog/categoria/infraestrutura-e-sistemas-operacionais) [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

# Conhecendo o Microsoft Orleans

 Conheça o framework Microsoft Orleans e veja como ele tenta resolver o "problema" dos sistemas distribuídos.

 [ Wladimilson M. Nascimento ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 9 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/04/05114857/ORLEANS.png)  

Quando a Microsoft anunciou que o .NET seria aberto à [comunidade em 2015](https://blogs.msdn.microsoft.com/dotnet/2014/11/12/net-core-is-open-source/), ela abriu várias bibliotecas, entre elas há o Microsoft Orleans, que é o tema deste artigo.

Este é o primeiro artigo sobre este framework, onde conheceremos a sua estrutura. No próximo artigo o utilizaremos em uma aplicação.

[  ![C# (C Sharp) Intermediário](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Intermediário Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-intermediario)

## O que é o Microsoft Orleans?

O [Orleans](https://dotnet.github.io/orleans/) é um framework que permite a criação de aplicações distribuídas e escalares de forma simples e direta. Sem a necessidade de aprender ou se preocupar com as complexidades de concorrência ou escalabilidade.

Atualmente na versão 2.0, este framework é utilizado por várias equipes da Microsoft, mas principalmente na área de games, onde foi utilizado para implementar os recursos de cloud de jogos como Halo 4 e 5 e Guild Wars 2.

## O problema camada intermediária

Aplicações, ou serviços “cloud”, são inerentemente paralelas e distribuídas. Elas também são interativas e dinâmicas; frequentemente requerendo interação em tempo real com outras entidades.

Caso esses aplicativos tenham uma grande demanda, a sua cria criação pode ser bem complexa. Criar uma aplicação com este comportamento de forma otimizada, demanda um grande nível de conhecimento dos programadores e várias interações entre as equipes de design e arquitetura.

Atualmente, a criação de uma aplicação escalável é feita como uma composição de camadas “*stateless*”, onde a lógica de negócio é centrada em uma camada intermediária:

![](https://dkrn4sk0rn31v.cloudfront.net/2018/04/03140456/n-tier.png)

Por mais que seja possível escalar esta camada intermediária, será necessário se preocupar com o banco de dados. Pois a aplicação terá que manter os dados da camada intermediária sincronizados. Caso acesse muito o banco de dados para fazer isso, a performance do banco pode ser um gargalo para a aplicação.

Caso mantenha muitos dados na memória, durante uma atualização, os dados em algumas instâncias desta camada podem ficar defasados. Além de adicionar possíveis problemas de cache.

## Orleans na camada intermediária

Orleans procura resolver os problemas que vimos acima com os seus atores virtuais. Ele permite, de maneira intuitiva, a criação de várias entidades de domínio – atores virtuais, que aparentam ser objetos .NET de várias aplicações distribuídas e insoladas dentro de um cluster (silo):

![](https://dkrn4sk0rn31v.cloudfront.net/2018/04/03140454/actor-middle-tier.png)

Essas entidades de domínio são chamadas pelo Orleans de grãos (*grains*) e trata-se de classes .NET simples, que implementam um ou mais interfaces da biblioteca, que as definem como uma classe “grão”.

Grãos individuais são instâncias de classes “grãos” definidas pela aplicação, que são criadas automaticamente pelo Orleans em tempo de execução, conforme as solicitações. Esses grãos podem ser qualquer tipo de entidade, como: pessoa, pedido, cliente, etc; só é requerido que ele tenha um código de identificação, que pode ser definido, como: um e-mail, um código ou uma identificação do banco. O Orleans garante que cada grão será executado em uma thread separada, que o protegerá de problemas de concorrência ou conflito.

No mundo dos microservices, Orleans é utilizado como uma estrutura para implementar um microservice que pode ser implementado e gerenciado por uma solução de microservice escolhida pelo desenvolvedor.

## Grãos e silos

Um grão pode persistir seu estado na memória ou no banco ou em uma combinação de ambos. Dentro do silo – que é o nome dado para o servidor criado pelo Orleans ao executar a aplicação – um grão pode chamar qualquer outro grão ou pode ser chamado pelo cliente (frontend) utilizando apenas o seu identificador, sem a necessidade de criar ou instanciá-lo.

Não importando onde esteja salvo o estado do grão, o framework fará parecer que ele esteve o tempo todo em memória. Mas na realidade, caso um grão fique muito tempo inativo, ele é removido da memória e seu estado é salvo no banco.

Todo este ciclo é transparente para o código, o que libera o programador de se preocupar com esses detalhes.

Outra vantagem deste comportamento é que o Orleans consegue lidar com uma falha de forma automática. Ao notar que um nó falou, ele reinstala nos demais nós os dados presentes no nó que falhou.

Todos esses detalhes podem parecer complexos em um primeiro momento. No próximo artigo, quando codificaremos uma aplicação simples, eles ficarão mais claros.

Até lá.

[  ![C# (C Sharp) - Introdução ao ASP.NET Core](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) - Introdução ao ASP.NET Core Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-avancado-introducao-ao-aspnet-core)

- [ #C# ](https://www.treinaweb.com.br/blog/tag/csharp)
- [ #Orleans ](https://www.treinaweb.com.br/blog/tag/orleans)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

 Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/04/05114901/ORLEANS-NET-CORE-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Criando uma aplicação distribuída com ASP.NET Core e o Microsoft Orleans ](https://www.treinaweb.com.br/blog/criando-uma-aplicacao-distribuida-com-asp-net-core-e-o-microsoft-orleans) 

     Veja o exemplo de uma aplicação ASP.NET Core acessando os dados de um servidor cluster definido com o Microsoft Orleans.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/08/asp-net-conhecendo-as-minimal-api-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     4 anos atrás

    ##  [ ASP.NET - Conhecendo a Minimal API ](https://www.treinaweb.com.br/blog/asp-net-conhecendo-as-minimal-api) 

     Neste artigo vamos conhecer um dos recursos que foram adicionados no .NET 6/ASP.NET 6, que é um novo template de aplicações Web, a Minimal API.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/como-instalar-o-csharp-e-nosso-primeiro-exemplo-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     4 anos atrás

    ##  [ Guia da linguagem C# ](https://www.treinaweb.com.br/blog/guia-da-linguagem-csharp) 

     Nesse guia de C# você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação C#. Acesse agora mesmo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/10/17134625/MSTEST-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ Testes unitários no C# com MSTest ](https://www.treinaweb.com.br/blog/testes-unitarios-no-c-com-mstest) 

     Testes unitários ajudam a garantir a qualidade de uma aplicação. Uma forma de garantir isso no C# é através da biblioteca MSTest. Veja como como utilizá-la.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/08/14131229/HEALTH-CHECKS-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     7 anos atrás

    ##  [ Verificando a integridade da aplicação ASP.NET Core com Health Checks ](https://www.treinaweb.com.br/blog/verificando-a-integridade-da-aplicacao-asp-net-core-com-health-checks) 

     Verificar e monitorar a integridade de uma aplicação web é algo essencial, principalmente em ambientes distribuídos. O ASP.NET Core facilita esta tarefa através de Health Checks, como você verá neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/O-QUE-E-PHP-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     5 anos atrás

    ##  [ Guia da linguagem PHP ](https://www.treinaweb.com.br/blog/guia-da-linguagem-php) 

     Nesse guia de PHP você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação PHP. Acesse agora mesmo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/03/o-que-e-programacao-reativa-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     6 anos atrás

    ##  [ O que é programação reativa? ](https://www.treinaweb.com.br/blog/o-que-e-programacao-reativa) 

     Confira neste artigo o que vem a ser programação reativa, um princípio de desenvolvimento de software que vem ganhando espaço entre os desenvolvedores.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/02/18175820/RAZOR-COMPONENTS-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     8 anos atrás

    ##  [ .NET Core 3.0 - Razor Components ](https://www.treinaweb.com.br/blog/net-core-3-0-razor-components) 

     Conheça as aplicações Razor Components que serão adicionadas no .NET Core 3.0.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/lendo-dados-do-excel-via-dde-no-java-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ Lendo dados do Excel via DDE no Java ](https://www.treinaweb.com.br/blog/lendo-dados-do-excel-via-dde-no-java) 

     Aprenda como ler dados do Excel via DDE no Java, utilizando a biblioteca JDDE da Pretty Tools.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/08/01172547/NET-CORE-3-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     7 anos atrás

    ##  [ .NET Core 3.0 - Criando tarefas de segundo plano com Worker Service ](https://www.treinaweb.com.br/blog/net-core-3-0-criando-tarefas-de-segundo-plano-com-worker-service) 

     Você já quis criar tarefas em segundo plano com o .NET Core? Na versão 3.0 foi introduzido o template Worker Service que facilita a criação deste tipo de aplicação. Caso tenha passado por uma situação assim, neste artigo mostramos como você pode aproveitar este novo recurso do .NET Core 3.0.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/09/10233409/capa-gantt-400x280.png)  [ Testes e Projetos ](https://www.treinaweb.com.br/blog/categoria/testes-e-projetos) 

     7 anos atrás

    ##  [ Gráfico de Gantt: o que é e por que utilizar? ](https://www.treinaweb.com.br/blog/grafico-de-gantt-o-que-e-e-por-que-utilizar) 

     Veja neste artigo o que é o Gráfico de Gantt e no que ele pode nos ajudar na gestão de projetos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/typescript-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     10 anos atrás

    ##  [ Precisamos falar sobre o TypeScript ](https://www.treinaweb.com.br/blog/precisamos-falar-sobre-o-typescript) 

     O TypeScript é um caso interessante. Ou você o adora ou o odeia. Parece não haver um consenso intermediário de maneira geral na comunidade. Vamos conversar um pouco sobre?

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **04h 57min 29s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
