1 Por que é difícil para a B/S fornecer uma boa experiência de interação com o usuário?
Os maiores problemas aqui são:
(1) Protocolo HTTP sem estado
Os formulários do Windows podem trocar informações diretamente através da memória, mas o HTTP, que é o protocolo básico para comunicação da arquitetura B/S, não tem estado.
Se o navegador for considerado um convidado e o Servidor Web for considerado um hotel, sob o gerenciamento do protocolo HTTP, esta situação ocorrerá: não importa quantas vezes um convidado visite, o Servidor Web o considerará como um primeiro- visitante do tempo. Desta forma, os hóspedes devem trazer sempre consigo os seus documentos de identificação para que os funcionários do hotel “verifiquem a sua identidade”.
A falta de estado do protocolo HTTP leva ao "desrespeito" do Servidor Web. Embora isso possa aumentar o rendimento do Servidor Web, traz problemas para o desenvolvimento de sistemas aplicativos. Porque muitas vezes existem muitos processos de processamento de negócios em sistemas aplicativos, que são inerentemente fluidos de informações, ou seja, os dados originais entram por uma extremidade e deveriam ter passado por determinado processamento quando saem da outra extremidade. as informações em todo o processo de negócios serão perdidas? Portanto, o compartilhamento de informações entre solicitações HTTP torna-se um problema problemático. Este é o problema de "retenção de estado" das solicitações HTTP. Todo sistema B/S deve resolver este problema. A Microsoft pensou em alguns "truques tortuosos", como fazer uso total dos campos ocultos nas páginas HTML e depois fazer alguns truques no servidor Web, então o ASP.NET possui um conjunto de tecnologias para manter o estado entre cada solicitação HTTP: Sessão, Cookie, ViewState, Perfil, Aplicativo.
No entanto, o problema não está completamente resolvido. Por exemplo, nas caixas de diálogo comuns em sistemas C/S que coletam informações de entrada do usuário, há uma troca de informações entre o formulário principal e a caixa de diálogo (que é dividida em dois tipos: modal e não modal. A primeira caixa de diálogo caixa não está fechada. O formulário principal não pode ser ativado). Na arquitetura B/S, como cada solicitação do navegador é independente, a troca direta de informações semelhante a uma caixa de diálogo modal deve ser implementada entre duas janelas independentes do navegador. não sei o que fazer.
AJAX usa o seguinte método para "simular" um formulário modal: "combinar" o formulário principal e a caixa de diálogo em um. A caixa de diálogo é um elemento div em HTML, que geralmente fica oculto e é exibido quando necessário. O AJAX Control Toolkit da Microsoft ainda possui um controle projetado para essa funcionalidade. Existem inúmeros truques como esse no desenvolvimento de B/S.
Pode-se observar que muitas funções que podem ser facilmente implementadas em C/S são muito difíceis de implementar em B/S.
(2) Navegador de ambiente operacional especial
O ambiente operacional front-end do sistema B/S é um navegador, que traz muitas restrições. Ele não pode fazer muitas coisas, como acessar hardware diretamente (como impressoras) e não pode fazer uso total dos recursos de hardware. Por exemplo, os novos computadores de hoje são todos dual-core. Você pode usar JavaScript e HTML diretamente para escrever um programa multithread para aproveitar ao máximo esses dois "núcleos Pentium"?
O sistema C/S é executado diretamente no SO (sistema operacional) e pode chamar todas as funções fornecidas pelo SO. Esta limitação não existe.
(3) A embaraçosa linguagem de programação do cliente Web - JavaScript,
um programa C/S tradicional, pode usar um grande número de várias linguagens de desenvolvimento, especialmente linguagens orientadas a objetos convencionais, como C++, Java e C#, que são poderoso e fácil de usar, várias ferramentas de desenvolvimento estão disponíveis e são muito maduras.
Pelo contrário, JavaScript, a linguagem de programação mais comumente usada no front-end B/S, não é apenas detestado, mas até "odiado" por muitos programadores, que consideram "programar com JavaScript" uma tarefa árdua.
Vamos dar uma olhada nas duas principais deficiências do JavaScript.
Primeiro, falta um modelo de programação claro e unificado.
Embora o JavaScript tenha Java em seu nome e use sintaxe semelhante, ele não tem nada a ver com o Java real. Infelizmente, ela é um patinho feio. Ela sempre quer se tornar um cisne, mas não espera que os outros não acreditem em sua ideia.
JavaScript usa muitos objetos, mas não é realmente convincente dizer que é orientado a objetos (a unidade básica da programação orientada a objetos é uma classe. Por exemplo, ele não possui a palavra-chave class semelhante às principais linguagens orientadas a objetos). como C#. Está em todos os lugares funções uma por uma, o que torna difícil definir claramente todo o código na forma de classes ao mesmo tempo, não é estruturado (a unidade básica da programação estruturada é uma função), porque o navegador usa um fluxo ao analisar documentos HTML. Isso faz com que algum código JavaScript seja colocado fora da função e executado diretamente ao analisar o documento HTML, enquanto a outra parte do código colocada na função é executada principalmente em um evento orientado. maneira, o que traz problemas complexos O fluxo de execução do programa é muito menos conciso do que o uso unificado de chamadas de função em programação puramente estruturada.
Deste ponto de vista, o JavaScript possui as características dos métodos de programação orientados a objetos, estruturados e não estruturados, mas não é peixe nem ave. Não possui um modelo de programação claro e unificado. estrutura e fácil manutenção.
Em segundo lugar, outra falha do JavaScript é o ambiente de execução do navegador.
Devido a razões históricas, navegadores diferentes e até versões diferentes do mesmo navegador têm modelos de programação mais ou menos diferentes. Portanto, precisamos escrever um código para detectar o tipo de navegador. IE, e escreveu outro conjunto para FireFox. Isso é realmente um incômodo.
Os problemas acima são quase os "defeitos" "inerentes" do sistema de arquitetura B/S. As deficiências inatas são complementadas pela criação, e as pessoas inventaram muitos truques para resolver esses problemas. AJAX é a estrela da esperança que todos estão otimistas.
2 Estrela da Esperança - AJAX
Nos últimos dias, aprendi sistematicamente sobre a estrutura AJAX da Microsoft. Descobri que a complexidade desta estrutura excedeu em muito a minha estimativa original. Os engenheiros da Microsoft que projetaram a estrutura AJAX exploraram profundamente o potencial de várias tecnologias de desenvolvimento Web, que em grande medida compensaram os problemas levantados anteriormente.
(1) Expansão da linguagem JavaScript:
a Microsoft aprimorou os recursos orientados a objetos do JavaScript, fornecendo uma biblioteca AJAX encapsulada, que pode implementar facilmente funções como herança, definição de interfaces, serialização de objetos, acionamento de eventos e tipos de reflexão. é menor que o real Ainda existe uma lacuna entre as linguagens orientadas a objetos (como Java/C#), mas ser capaz de transformar JavaScript "feio" em algo visível é considerado extraordinário.
(2) Melhorar significativamente a funcionalidade do código do navegador
Com o suporte da Biblioteca AJAX e a funcionalidade aprimorada do JavaScript, e com o suporte do próprio navegador, você pode escrever scripts JavaScript no navegador para fazer solicitações assíncronas facilmente. para o servidor, realize a atualização parcial da página e possa chamar diretamente o serviço da Web.
(3) A introdução do método de desenvolvimento baseado em componentes (CBD)
O desenvolvimento baseado em componentes (CBD) tem sido o principal método de desenvolvimento para sistemas orientados a objetos. Embora SOA (arquitetura baseada em serviços) seja atualmente muito popular, ainda é necessário. para ser tão maduro como o CBD Até certo ponto, levará tempo.
Para JavaScript, e muito menos SOA, é muito difícil implementar CBD.
Para realizar o CBD, a Microsoft "fez grandes melhorias" no JavaScript e aprimorou muitos recursos. Com base na biblioteca Microsoft AJAX, os programadores podem desenvolver três tipos de componentes reutilizáveis: None_Visual Component (componente invisível, equivalente a um sistema orientado a objetos). deles fornecem funções públicas), Comportamento (comportamento, estendendo as funções de controles da Web existentes) e Controle (controles da Web com elementos de interface visual).
Em particular, as dezenas de controles fornecidos no AJAX Control ToolKit basicamente realizam a simulação B/S da maioria dos recursos da interface de usuário C/S e são um modelo para a aplicação deste novo modelo de programação.
As melhorias da Microsoft no modelo de programação JavaScript permitem que os engenheiros de software finalmente desenvolvam código de cliente Web usando métodos de desenvolvimento CBD. Acho que isso é um progresso.
(4) Capacidades aprimoradas do lado do servidor
Para aprimorar as capacidades do código do lado do navegador, ele deve ser coordenado através do lado do servidor. O próprio AJAX é baseado no modelo de programação no qual o navegador e o servidor da Web se apoiam (o servidor da Web fornece serviços de dados e o navegador fornece objetos XMLHttpRequest para fazer solicitações assíncronas ao servidor da Web. Quando os dados voltam, os programadores podem escrever código em JavaScript para implementar processamento parcial dinâmico de renovação de páginas da web).
Através da extensão AJAX, a Microsoft aprimorou a funcionalidade da estrutura ASP.NET do lado do servidor. E externalize funções comumente usadas em controles Web simples, como o controle principal do AJAX, ScriptManager, UpdatePanel para definir áreas atualizáveis da página e dezenas de AJAX Control Toolkit para aprimorar os controles ASP.NET existentes (ou seja, um controle anexado ao. um controle existente, cujo objetivo é estender novas funções ao controle existente).
Com esses controles, o desenvolvimento de programas front-end da Web é semelhante ao design de formulários em VB. Agora não só é possível desenhar uma interface semelhante ao Windows Forms, mas também usando a solicitação assíncrona do AJAX e a tecnologia de atualização parcial da página, e com a cooperação do servidor Web, a experiência do usuário pode ser forçada no Windows Forms.
Não importa quantas pessoas desprezem o VB, a onda de popularização da programação visual trazida pelo VB realmente teve um impacto de longo alcance. O impulso da Microsoft para a programação JavaScript nesta etapa também é a tendência geral. Para melhorar a eficiência do desenvolvimento Web, este passo deve ser dado.
Porém, é preciso ressaltar que por mais que seja “reabastecido”, afinal, é “congenitamente deficiente” e ainda é muito difícil para a arquitetura B/S superar C/S em termos de experiência do usuário .
3 O futuro: B/S ou C/S, quem está no comando
Devido à simplicidade de gerenciamento e implantação, a arquitetura B/S tornou-se a primeira escolha para muitos sistemas de informação atualmente. Para resumir, existem os seguintes requisitos:
(1) Interface bonita. B/S tem uma vantagem nesse aspecto.
(2) Entrada conveniente. Por exemplo, muitos usuários esperam inserir dados sem usar o mouse ou preencher dados automaticamente por meio de simples cliques. Isso é difícil de implementar em uma arquitetura B/S e pode resolver esse problema até certo ponto.
(3) Velocidade da luz. Para C/S, há muitas maneiras de obter velocidade de resposta rápida, mas não é fácil para B/S. Devido às limitações do navegador, os poderosos recursos de hardware do cliente estão quase ociosos. Além disso, a velocidade da rede é o gargalo da arquitetura B/S. A menos que a largura de banda possa aumentar rapidamente, a WWW será uma espera mundial.
Embora o C/S tenha uma boa experiência de usuário, seu problema é que é difícil desenvolver um sistema distribuído que abranja toda a Internet. Além disso, como o cliente precisa ser instalado, as atualizações do sistema e o gerenciamento de versões de componentes tornam-se um grande problema. Além disso, ao contrário de B. Na arquitetura /S, apenas os problemas do lado do servidor precisam ser considerados. Na arquitetura C/S, devido ao fato de vários usuários acessarem o servidor ao mesmo tempo, as chamadas e dependências entre os componentes são complexas. também deve ser considerado ao lidar com acesso multithread a recursos compartilhados, processamento de transações, etc. No lado do servidor, a taxa de transferência é bastante limitada. Portanto, o C/S é construído principalmente na rede local para uso interno da empresa.
Atualmente, B/S e C/S coexistem basicamente. Com a ampla aplicação de tecnologias B/S como AJAX, B/S continua a ganhar vantagem, mas é impossível "derrotar completamente o C/S". .
O que é mais interessante é: como grandes empresas como a Microsoft veem as perspectivas de desenvolvimento do B/S e do C/S?
Desenvolvedores comuns como eu não têm a oportunidade de conversar diretamente com os executivos da Microsoft, mas podemos ver algumas pistas na rota de desenvolvimento de produtos da empresa:
A Microsoft não parece acreditar que o B/S represente a direção futura do desenvolvimento tecnológico. Pelo contrário, muitas das suas ações caminham no sentido do abandono dos navegadores.
Em primeiro lugar, a Microsoft simplificou o desenvolvimento e implantação do C/S e lançou a tecnologia Smart Client, para que a atualização dos programas clientes C/S possa ser realizada automaticamente sem intervenção manual.
Em segundo lugar, a Microsoft trabalhou duro para preencher a lacuna entre B/S e C/S. Ao projetar o ASP.NET, abandonou resolutamente o ASP, que havia alcançado bons resultados, e adotou diretamente um método de programação semelhante "controle visual + orientado a eventos". para VB. Até as páginas da Web são chamadas de "Formulários" - Web Forms.
Terceiro, a Microsoft pode considerar o AJAX uma tecnologia de transição.
A Microsoft demorou a agir em relação ao AJAX até ver a rápida popularidade do AJAX devido à aplicação bem-sucedida da tecnologia AJAX pelo Google e outras empresas para melhorar a experiência do usuário da Web. Em seguida, ela tomou medidas e adicionou extensões AJAX ao ASP.NET. todo o processo foi obviamente As ações não foram agressivas e não foram investidos muitos recursos. Isso foi completamente diferente de quando a Microsoft e a Netscape lançaram uma guerra de navegadores. No entanto, o fato de ter a extensão AJAX integrada como configuração padrão no VS2008 e integrar diretamente a função de depuração de JavaScript no IDE mostra que a Microsoft ainda está enfrentando a realidade e reconhece que o AJAX tem uma posição importante e um grande potencial de desenvolvimento.
Na verdade, analiso que a ambição da Microsoft é “unificar o mundo”, abandonar o navegador e unificar completamente B/S e C/S.
Isso é visto claramente no .NET 3.0/3.5.
Em primeiro lugar, a Microsoft usou o WCF para unificar DCOM, .NET Remoting e outras tecnologias usadas principalmente para C/S, integrando muitos recursos de desenvolvimento empresarial originalmente localizados em COM+, juntamente com a tecnologia de serviços Web usada principalmente para arquitetura B/S, para unificar. e encapsular em um serviço WCF reutilizável. É óbvio que a Microsoft quer mudar o modelo de desenvolvimento de sistemas de informação de CBD para SOA (ou seja, os sistemas futuros irão montar serviços em vez de componentes).
Em segundo lugar, a Microsoft abandonou o modelo de programação de desktop Windows muito maduro (API Win32 + orientado a mensagens/eventos) e introduziu uma nova estrutura de programação WPF. Uma das principais inovações é o surgimento de XAML (Application Markup Language) que está em conformidade com a especificação XML. . XAML usa arquivos de texto simples em formato XML para descrever interfaces de aplicativos.
Podemos comparar facilmente XAML com XHTML. O navegador analisa o código XHTML e gera uma interface visual da web, enquanto o XAML é analisado pela máquina virtual .NET Framework. No Vista, como o Vista integra diretamente o .NET Framework 3.0, o Vista pode ser considerado um supernavegador. XAML para gerar a interface do usuário e implementar todas as funções do aplicativo.
Como resultado, surgiu um novo modelo de programação Seja um sistema B/S ou C/S, o método é unificado: ler o código XAML à análise à apresentação à recepção da entrada do usuário à exibição dos dados.
Neste modelo de programação, o navegador torna-se um espectador e não é mais o núcleo da aplicação cliente.
O novo modelo de programação é executado em um sistema operacional completo, em vez de em um navegador com funcionalidade limitada. Essa diferença é enorme. Como as funções de um navegador executado em um sistema operacional podem ser comparadas com as do próprio sistema operacional?
Agora você pode facilmente chamar diversas funções do sistema operacional através da API (Application Programming Interface) do sistema operacional organizada de forma orientada a objetos, aproveitando ao máximo os recursos de hardware do cliente (por exemplo, você pode desenvolver facilmente multi-threading no programa .NET Framework, "comprimindo" as capacidades de trabalho da CPU dual-core). As interfaces de usuário são todas descritas usando XAML, que unifica as tecnologias da camada de interface de B/S e C/S.
O ambiente de execução mais adequado para o WPF é o sistema operacional Vista. Um subconjunto de suas funções, agora chamado Silverlight, é implementado como um plug-in de navegador, permitindo que programas WPF sejam executados em navegadores tradicionais. Como tanto o Silverlight quanto o Vista podem analisar XAML sozinhos, agora você pode usar XAML para escrever apenas um conjunto de código de interface, que é aplicável a B/S e C/S e obtém a mesma experiência do usuário.
Devido a algumas deficiências inerentes ao B/S e AJAX, se o sistema B/S aprimorado pelo AJAX for comparado a um dançarino, então é na verdade um dançarino dançando com algemas, e a ideia da Microsoft é, em vez de tentar constantemente aliviar o peso desta algema, por que não jogá-la fora?
O lançamento do WPF e do WCF pela Microsoft é uma dessas tentativas.
Deve-se dizer que a estratégia de desenvolvimento da Microsoft se baseia na análise das vantagens e desvantagens do B/S e C/S existentes. Tem a sua natureza científica e também leva em consideração os seus próprios interesses empresariais. No entanto, ainda existem muitas dificuldades na concretização desta estratégia, porque mesmo sendo tão poderosa como a Microsoft, ela não consegue dominar o mundo. Os adversários da Microsoft são tão inteligentes quanto a Microsoft e a sua tecnologia está a avançar com a mesma rapidez.
Pode-se concluir que, devido à continuidade das aplicações dos sistemas de informação, B/S e C/S coexistirão ao mesmo tempo por um longo período de tempo (talvez três a cinco anos, talvez cinco a dez anos). muitos recursos excelentes do B/S prevalecerão na competição com o C/S, e esta situação não mudará significativamente. Quanto ao AJAX, como arma pesada no sistema B/S, embora seja muito eficaz, tem muitas falhas. Estou cautelosamente otimista quanto ao seu desenvolvimento futuro. No entanto, como desenvolvedor Web, você deve compreender e aplicar esta tecnologia.
Qual será o cenário futuro e se uma determinada tecnologia tem futuro não são decididos pelos indivíduos. Acredito que o padrão final da batalha entre B/S e C/S será o resultado do jogo conjunto entre múltiplos fatores. Para os indivíduos, eles devem acompanhar os tempos e ajustar suas ações e estratégias em tempo hábil. Este é o destino dos desenvolvedores de software contemporâneos.