Stack 20/11/2025

WebForms Core 2: PWA, Service Worker e Push Notifications!

WebForms Core 2 revoluciona o desenvolvimento web com PWA, Service Worker e Push Notifications, elevando a experiência do usuário a um novo patamar.
EQ
Por Equipe Midiaville
Especialistas em desenvolvimento web
20 de Novembro de 2025

Stack

O cenário do desenvolvimento web está em constante evolução, e novas tecnologias e abordagens surgem a todo momento. No entanto, algumas tecnologias clássicas, como o WebForms da Microsoft, pareciam fadadas ao esquecimento. Mas, contrariando as expectativas, o WebForms ressurge das cinzas em sua versão Core 2, trazendo consigo uma série de inovações que o colocam em pé de igualdade com as tecnologias mais modernas. A grande novidade é a incorporação de recursos como PWA (Progressive Web App), Service Worker e Push Notifications, transformando a forma como as aplicações web são desenvolvidas e entregues.

WebForms Core 2: Uma Nova Era no Desenvolvimento Server-Side

O WebForms Core 2 não é apenas uma atualização, mas sim uma transformação completa da plataforma. Ele representa um ponto de virada na arquitetura server-side, removendo limitações tradicionais e abrindo um novo leque de possibilidades para os desenvolvedores. Essa nova versão combina as capacidades do servidor e do cliente em um nível sem precedentes, oferecendo uma experiência de desenvolvimento mais fluida e eficiente.

A combinação de PWA, Service Worker e Push Notification, juntamente com uma arquitetura de comunicação inovadora, eleva a experiência de desenvolvimento e execução de software a um novo patamar. O conceito central dessa evolução é o "Server-Command / Client-Execution", que, ao contrário de arquiteturas como Blazor Server ou interfaces baseadas em SignalR, executa comandos do servidor diretamente no cliente, sem a necessidade de reconstruir a interface do usuário. Isso resulta em um sistema incrivelmente rápido, escalável e simples, demonstrando que o conceito original do WebForms pode ser recriado e aprimorado com as tecnologias atuais.

Service Worker no WebForms Core: Controle Total do Servidor

O Service Worker na versão 2 não é apenas uma ferramenta adicional, mas sim uma parte fundamental da arquitetura do WebForms Core. Nesta estrutura, o servidor tem controle total sobre o comportamento do Service Worker, definindo quais arquivos devem ser armazenados em cache, quais caminhos devem ter qual estratégia de cache, quais arquivos devem ser excluídos, qual o TTL (Time To Live) de cada caminho e como as notificações push devem ser gerenciadas.

Essa abordagem resulta em um sistema Service Worker verdadeiramente "server-centric", permitindo que os desenvolvedores controlem todos os aspectos do cache e do comportamento offline da aplicação a partir do servidor. Isso simplifica o processo de desenvolvimento e garante uma experiência de usuário consistente, independentemente da conectividade do cliente.

Principais Características do Novo Service Worker

  • Modular, Rápido e Leve: O Service Worker foi projetado para ser eficiente e não sobrecarregar a aplicação.
  • Sem Frameworks Externos: Funciona sem a necessidade de bibliotecas adicionais.
  • Suporte a Cache Estático, Dinâmico, TTL e Metadados: Oferece flexibilidade para gerenciar diferentes tipos de cache.
  • Armazenamento de Rotas e Aliases em IndexedDB: Garante a persistência das configurações do Service Worker.
  • Suporte a Regex, Wildcard e Roteamento por Alias: Permite definir rotas de cache complexas e flexíveis.
  • RPC Integrado para Comunicação Direta com a Página: Facilita a comunicação entre o Service Worker e a aplicação.
  • Notificação Push Integrada com VAPID: Simplifica a implementação de notificações push.

Com todas essas características, o Service Worker no WebForms Core 2 se equipara a bibliotecas como Workbox, mas com uma API mais simples e controle total do servidor.

Funcionalidades Essenciais do WebForms Core 2

O WebForms Core 2 oferece uma gama de funcionalidades que o tornam uma ferramenta poderosa para o desenvolvimento de aplicações web modernas. As principais funcionalidades incluem:

  • Registro Inteligente e Gerenciamento Completo do Service Worker: Facilita a configuração e o controle do Service Worker.
  • Pré-cache Estático e Cache Dinâmico com TTL: Permite otimizar o desempenho da aplicação, armazenando em cache os recursos mais importantes.
  • Sistema de Roteamento com Suporte a Pattern, Regex e Wildcard: Oferece flexibilidade para definir rotas de cache complexas.
  • Armazenamento Permanente de Rotas e Aliases em IndexedDB: Garante a persistência das configurações de roteamento.
  • Suporte Completo para Push Notification com VAPID: Simplifica a implementação de notificações push.
  • RPC Bidirecional e Seguro entre Página e SW: Facilita a comunicação entre o Service Worker e a aplicação.
  • Gerenciamento Completo de Cache (adicionar/remover/has/list/clear): Permite controlar o cache de forma granular.
  • Carregamento do Service Worker via Blob sem Arquivos Externos: Otimiza o desempenho e a segurança.
  • Design Simples, Transparente e Extensível: Facilita a customização e a integração com outras tecnologias.

Métodos Server-Side: Controle Total na Palma da Mão

O WebForms Core 2 oferece uma série de métodos server-side que permitem controlar o Service Worker de forma precisa e eficiente. Abaixo, detalhamos alguns dos métodos mais importantes:

1) ServiceWorkerRegister()

Registra e ativa o Service Worker no navegador.

Argumentos: Nenhum.

Exemplo:

ServiceWorkerRegister();

2) ServiceWorkerPreCacheStatic(string[] PathList)

Adiciona arquivos ao Cache Estático.

Argumento:

  • PathList: Array de caminhos para serem pré-carregados.

Exemplo:

ServiceWorkerPreCacheStatic(new[]{ "/", "/styles.css", "/app.js" });

3) ServiceWorkerDynamicCache(string Path, int Seconds = 0)

Armazena um caminho no Cache Dinâmico, com um TTL opcional.

Argumentos:

  • Path: Caminho de destino.
  • Seconds: Tempo de vida (TTL) em segundos.

Exemplo:

ServiceWorkerDynamicCache("/api/products", 3600);

4) ServiceWorkerDeleteDynamicCache()

Limpa completamente o Cache Dinâmico.

Exemplo:

ServiceWorkerDeleteDynamicCache();

5) ServiceWorkerDeleteDynamicCache(string Path)

Exclui um caminho específico do Cache Dinâmico.

Argumento:

  • Path: Caminho de destino.

Exemplo:

ServiceWorkerDeleteDynamicCache("/api/products");

6) ServiceWorkerDynamicCacheTTLUpdate(string Path, int Seconds = 0)

Atualiza o TTL de rotas no Cache Dinâmico.

Exemplo:

ServiceWorkerDynamicCacheTTLUpdate("/api/products", 7200);

7) ServiceWorkerRouteSet(string Path, string Type, bool CacheDynamic = false)

Define uma Rota com um padrão de rota e uma estratégia de cache.

Argumentos:

  • Path: Caminho, wildcard ou regex com re:.
  • Type: Tipo de estratégia de cache.
  • CacheDynamic: Armazena respostas de rede bem-sucedidas no Cache Dinâmico.

Estratégias Permitidas:

  • cachefirst: Cache primeiro → depois rede.
  • networkfirst: Rede primeiro → depois cache.
  • cacheonly: Cache apenas.
  • networkonly: Rede apenas.
  • stalerevalidate: Cache rápido + atualização em segundo plano.

Exemplo:

ServiceWorkerRouteSet("/images/*", "cachefirst", true);

Regex:

ServiceWorkerRouteSet("re:^/api/v[0-9]+/.*$", "networkfirst", true);

8) ServiceWorkerRouteAlias(string Path, string To)

Cria um alias entre rotas.

Exemplo:

ServiceWorkerRouteAlias("/content", "/");

9) ServiceWorkerDeleteRoute()

Exclui todas as Rotas e Aliases.

Exemplo:

ServiceWorkerDeleteRoute();

10) ServiceWorkerDeleteRoute(string Path)

Exclui apenas uma rota específica.

Exemplo:

ServiceWorkerDeleteRoute("/images/*");

Configurações do Service Worker no WebFormsJS

O WebFormsJS oferece uma série de opções para configurar o Service Worker de acordo com as necessidades da sua aplicação. Algumas das opções mais importantes incluem:

WebFormsOptions.RegisterServiceWorker = false;
WebFormsOptions.ReloadServiceWorkerIfNeed = true;
WebFormsOptions.ServiceWorkerStaticCacheAssets = ['/', "/index.html", "/styles.css", "/web-forms.js"];
WebFormsOptions.ServiceWorkerStaticCache = "sw-static-v1";
WebFormsOptions.ServiceWorkerDynamicCache = "sw-dynamic-v1";
WebFormsOptions.ServiceWorkerMetaCache = "sw-meta-v1";
WebFormsOptions.ServiceWorkerDefaultIcon = "/icon.png";
WebFormsOptions.ServiceWorkerDefaultBadge = "/badge.png";
WebFormsOptions.ServiceWorkerDefaultUrl = '/';
WebFormsOptions.UseServiceWorkerPush = false;
WebFormsOptions.UseServiceWorkerPushSubscribe = "/subscribe";
WebFormsOptions.ServiceWorkerPushVapidPublicKey = "...";
  • RegisterServiceWorker: Habilita/desabilita o registro automático do SW.
  • ReloadServiceWorkerIfNeed: Recarrega a página para ativar a nova versão do SW.
  • StaticCacheAssets: Arquivos que precisam ser pré-carregados.
  • Static / Dynamic / Meta Cache: Nomes dos três tipos de Cache diferentes.
  • DefaultIcon / DefaultBadge / DefaultUrl: Configurações de Notificação Push.
  • UseServiceWorkerPush: Habilitação de Notificação Push.
  • UseServiceWorkerPushSubscribe: Endereço da API para Registro de Assinatura do Usuário.
  • ServiceWorkerPushVapidPublicKey: Chave Pública VAPID para Push.

Conclusão

O WebForms Core versão 2 oferece aos desenvolvedores um novo nível de controle e poder ao introduzir um Service Worker baseado no servidor. Essa funcionalidade coloca o WebForms Core na categoria de ferramentas avançadas de PWA e aplicações offline, provando que uma arquitetura baseada no servidor também pode ser moderna, rápida, escalável e poderosa. A ressurreição do WebForms, impulsionada pela equipe Elanat, demonstra que tecnologias clássicas podem ser reinventadas e adaptadas para atender às demandas do cenário atual do desenvolvimento web. O futuro do WebForms Core 2 parece promissor, com potencial para se tornar uma ferramenta essencial para desenvolvedores que buscam construir aplicações web robustas, eficientes e com excelente experiência do usuário.

Compartilhe este artigo

Artigos Relacionados

Continue explorando nossos insights sobre desenvolvimento web e estratégias digitais

Precisa de Uma Solução Personalizada?

Nossa equipe especializada está pronta para desenvolver a solução ideal para o seu negócio.