7
Context
I saw a Steve Sanderson’s article about an experimental project called Webwindow that uses a Webview component available on the operating system to use as the UI of an application.
This is all about the Blazor that allows you to use your model in different ways. I think I understand the advantages and disadvantages of each way to use:
1 Servidor impõe penalidade. O WebAssembly é sempre inferior ao nativo para sua aplicação, mas o que mais importa é a UI
2 Só por causa da UI. O ideal seria ter parâmetros mais precisos
3 Carga inicial do *runtime*. Fora a aplicação em si. Dados bem aproximados. Server: fica maior que 0 se usar Angular, React, etc.
4 Aqui é sobre a carga para uso e não o primeiro uso que depende de baixar algo. Server: as trocas de página são lentas. Tem tecnologia que não é tão baixo assim e pode ser maior que web em alguns casos
5 Se precisa de alguma ação do usuário entre ele chegar onde tem a aplicação e começar usar (não é sobre precisar de um instalador)
6 Se você decide quando o renderizador final (gráfico) muda a versão e possivelmente cria falhas na aplicação. O SO pode mudar algo, mas é raro quebrar compatibilidade, web não é assim, ainda que melhorou
7 Problemas diferentes em cada um, pode faltar componente ou não ser na versão desejada e executar algum um pouco diferente do esperado, até falhar, em alguns casos por ação indevida do usuário
8 Como se parece e interage? Fica como é a plataforma base que está rodando? Web já é meio padronizado, próprio não. Nativo é bom pra plataforma, mas não ajuda quem usa mais de uma
9 Usa de forma simples e sem sobressaltos? Faz tudo o que deve fazer sem perceber nada esquisito, demoras, ou gerar algum mínimo desconforto comparando com outras opções (por exemplo poder cometer erros porque tem controle sobre o que não é bem sua aplicação, ex.: navegação do browser)
10 Minha percepção da satisfação do usuário usando (não confio na opinião dele, ele se engana quando comenta sobre, é quase subliminar)
11 O usuário tem que tomar algum cuidado? Ele pode causar problema na hora de começar usar ou depois fazer algo errado, precisa de esforço adicional para atualizar, por parte do usuário ou do programador? Tem facilidade de manter tudo protegido (um só arquivo)?
12 Por busca ou canal próprio de divulgação sempre dá por padrão. Estou desconsiderando que a Play Store não serve pra divulgar nada e fora a App Store as outras quase não são usadas
13 A UI roda no Windows, Android, iOS, Linux, MacOS sem grandes alterações?
14 Dá muito trabalho para fazer o código se comportar bem em todas plataformas que ele roda? Nativo: Considerando que cada plataforma tem uma base de código e uma não atrapalha a outra
15 Se usa HTML/CSS ou outra forma (XAML, código, etc.)
16 Se tem acesso nativo ao OS roda direto na API do SO ou tem alguma camada entre ela
17 Aqui vai além da UI, dá para acessar qualquer recurso da máquina? Fazer cache? Comunicar por protocolo mais eficiente que HTTP?
18 É fácil modelar e estilizar a UI? Ou seja, tem que mexer com CSS? :) Ou como dizem "responsivo" argh. Lida bem com mudança de orientação (Isso vale mais pra mobile, mas em certa medida desktop também porque não é só sobre orientação, se ele se vira sozinho quando "o formato da tela" muda)
19 Dentro do normal que se faz precisa atualizar a aplicação quando muda a composição da UI ou é possível trocar sem mexer na aplicação. Pode contornar dificuldades de atualização com Store. Claro que é possível dar dinamismo em qualquer caso, mas alguns não é comum e depende de esforço extra
20 Depende de conexão de internet para funcionar? Desde que faça algum sentido a aplicação rodar isolada
21 Para aplicação não costuma importar, mas não deixa de ser um critério a ser pesado se for necessário
22 Como é estruturado e manipulado o DOM ou algo semelhante que controla o layout
23 Isso tem a ver principalmente com tempo, mas também pode envolver outras variáveis como custo do profissional ou infra necessária
24 Se é fácil mexer depois de pronto? Tem muito caso que depois vira um drama arrumar mesmo que seja "fácil" fazer. Se tem que arrumar coisas por culpa do modelo adotado na tecnologia escolhida
25 Cada modelo impõe uma forma de debugar o código e tem melhores ou piores ferramentas
26 Minha percepção do que a comunidade usa e sustenta, principalmente mantendo a tecnologia fresca. Não é só documentação, qualquer coisa que ajude o desenvolvimento
27 Minha percepção da quantidade e qualidade dos profissionais trabalhando com isso (não estou olhando proporção)
28
Server: SSR, a renderização do layout é no servidor e o gráfico visível é no cliente
Browser: WebAssembly com .NET
PWA: O mesmo com alguns detalhes extras para habilitar esta tecnologia
Desktop: Electron
Webview: Novo WebWindow (link do Sanderson)
Nativo: Blazor experimental que abstrai a UI nativa do OS (provavelmente)
OS Nativo: WinForms, WPF, WinUI, GTK, Xamarin, etc.
Abstração do nativo: Eto Forms, Xamarin Forms, Uno, etc.
Renderização própria: Avalonia...
O que tem "talvez" é que depende de algum esforço próprio ou dependência.
"varia" depende de onde está rodando. Alguns casos talvez fosse melhor separar por tecnologia ou modelo específico, mas ficaria uma tabela muito grande e o foco é Blazor.
O "?" é que não se tem informação suficiente.
Não tome a tabela como correta.
Só considere a UI e a capacidade de ir além, mas não como vai além, especialmente em pontos como performance (não importa o resto do processamento.
Não considerei o fato de algumas formas destas não estarem prontas e até podem não se tornar produtos viáveis, minha visão é para longo prazo. Considerei tecnologias base disponíveis para o sistema operacional para uso com C#.
Note que usar C# (quando o Blazor pronto) no lugar de JS é teme muito mais performance, mas não sei bem o quanto. Poderia ter comparado com outras tecnologias, mas meu foco é este.
Não estou considerando o uso para aplicações muito complexas e de alta necessidade, só para uso mais normal de aplicativos comuns.
Sorry for the abuse of snippet, but I thought it best this way.
For those who do not know Blazor is just the programming model and he does not take care of the final rendering. It can structure how the screens will be mounted but does not do this job which is always done by the same component as the browser or operating system component.
The question
My question is regarding the Webview that has been around for some time (it’s not about Blazor, just about the decision to use it in it), I’ve seen criticism and praise, and from everything I’ve read it seems to be one of those technologies that people love or hate.
It seems that this technique is proliferating (it is no longer a use only in mobile and mainly it seems that it is no longer punctual).
I even saw in android documentation, who seems to have popularized the technique, saying that it is not so recommended:
In Most cases, we recommend using a standard web browser, like Chrome, to Deliver content to the user
Not only that, I have seen many debates on the subject, but some admit that in the past it was worse and improved.
I’m not talking about using Webview for something punctual when it would be difficult or impossible to do differently, I’m talking about using as the main and even unique UI of your application. I also don’t talk about the general issue that I think I’ve helped with the table above. So the question is for those who have experience using Webview in this way and can say something grounded in this experience about the specific use.
Webview itself has a problem being used as an application UI?
And yet, sees some problem in the approach that the article linked above shows that will be used?
It’s not fundamental to the question but is there any point about table Webview that deserves a better specification within the context of the question? For example about performance, it may be true, but it’s a significant difference?
Is there anything in the table regarding Webview that isn’t true, even if it was one day? (only if it helps the context of the question).
A balanced response without tending to one side, if possible, has more value. In general technologies do not have only advantages or only disadvantages.
Disclaimer: I think it is wrong to use web as UI of anything that is not casual or punctual, I just want to understand better, even to soften my position, if applicable.
Dude, I used Webview when this started many years ago, Today I do the application in PWA -> TWA format, I know it requires the client’s mobile phone to have a PWA compatible browser, but, analyzing the access metrics of a mobile app, who doesn’t use Chome? is rare even in iPhone, I’m not an Android developer, I’ve worked with it but I saw no extreme reasons not to do it in Web format and today as PWA -> TWA are very good, I didn’t see why learn, I know the limitations of not having one
– flourigh
@flourigh the iPhone Chrome does not use the same engine, it is practically a "skin" of Webkit. PWA on iOS is still problematic (and from what "they say around", Apple wants it that way).
– Bacco
yes indeed, one example is that there is no banner on the iPhone but the add button works almost the same
– flourigh
Who negatively could give me feedback to improve, right? Can you tell that you had a lot of research effort? Doesn’t an answer here teach a lot of people a lot? Isn’t it good information for the community? The negative is there for these two things. If the person is negative for other reasons is using the resource wrong.
– Maniero
It is very common to use Webview to display a help text, for example, because everyone knows how to format HTML, while a rich text can be more complicated.
– epx