Esta página contém o artigo Alta disponibilidade e .NET Framework.
...
Introdução
Uma característica que permanece inalterada em aplicações industriais e de missão crítica é que a estabilidade operacional, segurança e proteção são seus principais requisitos. Mecanismos relacionados ao aumento da garantia de estabilidade estão entre as principais mudanças arquitetônicas possibilitadas por novas tecnologias, especificamente em software. O advento do Microsoft .NET Framework introduziu recursos mais altos e exclusivos para a criação de sistemas de alta disponibilidade.
...
Gerenciando várias versões de sistemas operacionais, ferramentas de software e projetos
...
Segurança de software
Software intrinsecamente seguro
Na instrumentação de campo, a segurança é garantida por procedimentos internos ou garantias dos fabricantes e principalmente pela arquitetura do sistema, que utiliza tensões e correntes que são "intrinsecamente seguras" no ambiente onde a instrumentação irá operar. Isso garante que o sistema permaneça protegido mesmo em caso de falha específica do equipamento.
...
A geração anterior de tecnologia dependia de C/C++, ponteiros e vários módulos compartilhando a mesma área de memória, com acesso direto aos recursos de hardware e sistema operacional. Embora esses métodos fossem necessários na época, eles são considerados intrinsecamente inseguros pelos padrões atuais.
Nova Geração x Geração Anterior
A nova geração de software utiliza ambientes computacionais como o .NET Framework, onde os processos são isolados nativamente uns dos outros e do sistema operacional, independentemente do programador. Essa abordagem permite uma melhor utilização de computadores com vários núcleos de processador. Ele garante maior estabilidade operacional, mesmo diante de possíveis erros ou falhas de driver e hardware em módulos individuais do sistema. Isso também se aplica a scripts de usuário em aplicativos.
...
A capacidade de detectar possíveis erros durante a engenharia e de recuperar e isolar erros durante o tempo de execução é fundamental para a segurança e a estabilidade operacional. Esse nível de garantia só pode ser alcançado migrando scripts interpretados legados para linguagens compiladas e gerenciadas mais recentes.
...
Lançamentos e compatibilidade
Alta disponibilidade
Uma consideração importante em relação à alta disponibilidade é o gerenciamento de novas versões e o gerenciamento do ciclo de vida do sistema.
...
Durante o desenvolvimento inicial de nossa plataforma, passamos muitos meses estudando como gerenciar melhor esse problema e como ambientes de programação virtualizados como .NET e Java poderiam ajudar a atingir esse objetivo. Por fim, descobrimos que começar com um design limpo permite incorporar componentes arquitetônicos que facilitam lançamentos e atualizações futuras, melhorando assim o gerenciamento de alterações do sistema e mantendo a alta disponibilidade.
Disponibilidade do sistema
A plataforma .NET provou ser uma estrutura de execução altamente eficaz devido a várias vantagens, incluindo suporte para várias linguagens de programação, integração mais fácil com componentes de servidor e cliente da Microsoft, ferramentas gráficas mais rápidas e avançadas e um ambiente de desenvolvimento altamente produtivo.
...
O uso de tecnologias consolidadas, como bancos de dados SQL, para armazenar a programação e a configuração de aplicativos ajuda a manter a compatibilidade com versões anteriores à medida que o produto evolui. No entanto, este artigo explicará as três técnicas mais relevantes para novas versões do .NET e possíveis métodos preteridos.
...
Camada de aplicativo no .NET Framework
Camada de Aplicação Independente
O primeiro requisito de design é garantir que a ferramenta de software usada para criar o aplicativo esteja inteiramente em . NET. Por exemplo, nossa versão 2014.1 foi totalmente desenvolvida em C# usando o .NET Framework 4.0. O conceito envolve o uso da ferramenta de software para criar projetos de aplicativos finais, expondo a maioria das funcionalidades não como chamadas de plataforma de baixo nível, mas como uma "Camada de Aplicativo Independente". Vamos explorar e entender esse conceito.
...
Assim, quando uma classe interna do .NET é alterada, o software pode manter as mesmas configurações do usuário, mas implementar internamente o recurso usando as novas classes do .NET. Essa abordagem nos permite criar desenhos de exibição que são executados nativamente no Microsoft .NET WPF e no Apple iOS Cocoa.
Exemplo
Vamos usar o exemplo do "efeito Bevel Bitmap", obsoleto na versão 4.0, para ilustrar esse conceito. Suponha que seu aplicativo estava usando esse efeito.
...
Essa abordagem garante que a experiência do usuário permaneça consistente, apesar das mudanças na tecnologia subjacente. O mesmo conceito se aplica a outros problemas potenciais. Ter uma camada de abstração entre o desenvolvimento do projeto e a plataforma permite manter a compatibilidade do projeto e gerenciar as alterações necessárias internamente. Isso possibilita manter a configuração do projeto compatível com versões futuras do .NET de uma forma transparente para os engenheiros de aplicativos.
...
Multi-Segmentação
Geração de código e classes de compilação
Outra vantagem significativa da plataforma .NET é seu suporte para geração de código e classes de compilação, o que permite incorporar um compilador .NET completo em uma ferramenta de Configuração de Projeto. Esse recurso fornece controle completo sobre como o sistema analisa e compila scripts criados pelo usuário, incluindo a opção de compilar o código para diferentes versões do Microsoft .NET Framework.
Por padrão, o sistema compila scripts de aplicativo para corresponder à versão do .NET usada pela ferramenta de software mais recente, executando-os em seu próprio AppDomain. No entanto, esse controle permite que o sistema compile scripts para uma versão anterior do .NET Framework, se necessário.
Independência do sistema operacional
Com o .NET 8, você pode executar o mesmo código em computadores Linux, macOS e Windows.
Exemplo
Vamos explorar um cenário de caso: imagine que você tenha um sistema criado no Microsoft .NET versão 4.0 e precise migrá-lo para um novo .NET versão 4.X. Para esta discussão, vamos supor que o aplicativo que você criou tenha scripts usando métodos que foram preteridos no .NET Framework atualizado. E agora?
...
Solução B — A ferramenta de configuração do projeto pode permitir que os usuários selecionem o .NET TARGET dos scripts do projeto. Assim como o Visual Studio pode criar DLLs para .NET 2.0, 3.5, 4.0 ou 4.5 com base na seleção do usuário, o compilador .NET inserido na ferramenta de Desenvolvimento de Projetos pode usar recursos semelhantes. Portanto, se necessário, podemos habilitar seu projeto para compilar os scripts em ambas as versões distintas do .NET, mesmo usando a ferramenta de configuração de software mais recente, de acordo com a seleção do TARGET pelo usuário. É possível ter o mesmo projeto rodando lado a lado com algumas tarefas de script na versão 4.0 e outras na versão 4.X, como veremos na próxima seção.
...
Execução lado a lado
Várias versões
Por fim, o .NET tem um recurso potencial que deve ser aproveitado em um design de plataforma de desenvolvimento de projeto: ele pode executar diferentes versões do mesmo componente simultaneamente ou ter vários processos usando diferentes versões do .NET Action.NET em execução simultaneamente.
.NET Framework
Para mais detalhes, consulte o Execução lado a lado no .NET Framework artigo da Microsoft.
Por exemplo, usando os componentes principais incluídos nos serviços de gerenciamento de projetos e interface do usuário de nossa plataforma, diferentes versões do produto podem ser executadas simultaneamente no mesmo computador. Além disso, ao executar um projeto, os vários módulos, bancos de dados em tempo real, scripts e componentes de comunicação não são executados nos mesmos processos do Windows; eles são isolados em seus processos, trocando dados por meio de uma conexão WCF (Windows Communication Foundation).
Da mesma forma, a comunicação do dispositivo cria um processo separado do Windows (um .NET AppDomain) para cada protocolo, que também pode ser aplicado a diferentes scripts de usuário no projeto, um compilado e em execução para o .NET 4.0 e outro para outras versões. Ambos os processos são executados lado a lado, sem conflito, cada um em seu domínio, e ambos acessam tags em tempo real no processo do servidor.
32 e 64 bits
Outro cenário semelhante é o recurso que nos permite gerenciar a execução de 32 bits e 64 bits dentro da mesma configuração de projeto.
...
Por exemplo, se você estiver usando uma DLL de código externo ou um componente gráfico de terceiros que funciona apenas no modo de 32 bits, fornecemos uma versão RunModule32.exe para permitir que esse componente específico do projeto, como scripts, exibições ou comunicação de dispositivo, seja executado em um processo de 32 bits. Em contraste, o restante do aplicativo é executado no modo de 64 bits. A comunicação entre esses processos utiliza o WCF, garantindo o isolamento completo entre os processos.
...
Aplicação confiável
É crucial criar um aplicativo confiável que seja gerenciável durante todo o seu ciclo de vida. Esse é um dos principais benefícios de usar o .NET para criar novas ferramentas de software do zero, em vez de migrar o código anterior. Projetar um pacote de configuração de projeto para aproveitar as tecnologias atualmente disponíveis é essencial.
...