Desvantagens do mvc

Vantagens? Cuida do gerenciamento de contas, vários idiomas e afins. O cínico em mim pensa que existe apenas para ganhar dinheiro para vendedores ambulantes de frameworks.

Desvantagens?

Restritivo, supercomplicado, força o estilo OO quando não é apropriado, código inchado, ...

Melhor?

Isto é difícil. MVC é uma boa ideia, mas foi terrivelmente mal implementado, principalmente pela Microsoft

Maior vantagem: quando os desenvolvedores usam MVC, o código é muito mais organizado, mais fácil de navegar e mais fácil de entender onde devem colocar as coisas.

Maior desvantagem: sua natureza fortemente acoplada. Embora eu pessoalmente não tenha tido muitos problemas com isso em 25 anos, há momentos em que você tem que ir mais longe, passando informações apenas para seguir as convenções.

HTH

Eu sou muito novo no MVC e absolutamente amo isso. Adoro o fato de que a vinculação de modelos é automática. Tudo que você precisa fazer é definir o atributo de nome na marcação HTML. Eu vejo muitas pessoas fazendo perguntas sobre javascript e ainda com MVC, acho que preciso escrever muito pouco sobre isso. Quando o usuário invoca um POST, descubro que posso fazer muito processamento no controlador e usar a riqueza do barbeador para preencher o HTML para o GET.

Você pode usar adaptadores de dados para chamar procedimentos armazenados que fornecem muito mais poder e flexibilidade do que a estrutura de entidade.

Infelizmente, como sou novo no desenvolvimento web, não conheço as desvantagens do MVC. Então, de mim, a mensagem é apenas positiva.

A arquitetura MVC é ótima para trabalhar, mas como qualquer outra plataforma, ela tem seus prós e contras. Vamos discuti-los um por um.

Vantagens

A principal vantagem do MVC é a preocupação com a separação, o que significa que o aplicativo pode ser dividido em modelo, visualização e controlador. Isso também torna mais fácil manter o aplicativo. Ele também oferece suporte ao desenvolvimento orientado a testes ou TTD, que ajuda os desenvolvedores a criar aplicativos com testes de unidade. A versão mais recente do MVC também oferece suporte a sites responsivos padrão e modelos móveis. Com MVC, você também pode criar seu próprio mecanismo de visualização. Ele tem uma sintaxe simplista e fácil de comparar aos mecanismos de exibição tradicionais.

Desvantagens

É impossível ver uma visualização da página de design como a página .aspx. Você tem que executar a página o tempo todo para dar uma olhada no design. É difícil colocar isso em uso porque o fluxo do aplicativo é muito difícil de entender. Não é de todo adequado para aplicações de pequeno nível. Além disso, a implantação é extremamente difícil.

Considerando essas desvantagens, as melhores alternativas para MVC são-

  • Apresentador de visualização de modelo
  • Model View ViewModel
  • Arquitetura de orientação a serviços
  • Objetos nus
  • Controle de abstração de apresentação

Para saber mais sobre essas alternativas, contamos com uma equipe de talentosos e proficientes doadores de conhecimento.

Sinta-se livre para nos contatar.

Bem, MVC não tem tantas desvantagens e se tiver, eu não consigo pensar em nenhuma no topo da minha cabeça. MVC é realmente uma ótima maneira de separar lógicas e mantém seu código limpo. Dependendo do idioma, o MVC já pode estar implementado no idioma automaticamente. Tome C # por exemplo, quando você cria um formulário em branco, o que você vê visualmente são as visualizações. O código por trás é o controlador. Então você pode anexar um modelo ao seu controlador, se desejar. Isso já está integrado ao IDE que você está usando, portanto, você ganha automaticamente essa vantagem. Linguagens que não têm IDEs adequados serão um pouco mais difíceis de implementar MVC, uma vez que não vem para você em uma folha de prata, então você terá que escrever tudo sozinho.

MVC é um padrão bastante padrão que a maioria dos usuários, empresas e linguagens usam. Acredito que existam outros como PAC, MVP, etc. Eu não me aprofundei muito em nenhum desses padrões de design, então realmente não sei como eles realmente diferem do MVC.

Vantagens do MVC:

  • é um padrão bem conhecido
  • organização
  • separação de código
  • menos sujeito a erros
  • transparência
  • manutenção
  • melhor fluxo de trabalho
  • possibilidade de divisão de trabalho (particularmente as vistas podem ser tratadas por designers)
  • reutilização (modelo particular, e possivelmente serviços se outros padrões de design forem usados)

Desvantagens do MVC que encontrei:

  • spaghetti-code tende a ser difícil de refatorar em MVC
  • limitações da divisão Controller-View (você precisa pensar como os dados são passados ​​para views com antecedência)
  • limitações da divisão Controlador-Modelo (como você pode não ter esse controle sobre a otimização)
  • coisas adicionais para lidar, por exemplo, cache de visualizações
  • mais arquivos :)

MVC impõe uma “separação de interesses”. Cada parte de um aplicativo (construída em uma estrutura) tem uma tarefa, há um lugar para ir para cada tipo de informação, etc.

Como desenvolvedor de um aplicativo não trivial, é um sonho, porque você não precisa construir muitos encanamentos para realizar nada. E você obtém um monte de coisas repetitivas (que você pode esquecer de fazer um trabalho completo) automatizadas para você.

Se você está, no entanto, tentando construir um aplicativo trivial, digamos, apenas manipulando um formulário de contato, então pode parecer muito esforço extra (dividir todas as partes, só porque "é assim que se faz") . Mas quando o seu script trivial de 1 arquivo se torna o ponto de entrada para um ataque direcionado (já que você não obteve os brindes CSRF e SQL de injeção gratuitos que o framework lhe daria), então você pode repensar o custo dessa economia de configuração Tempo.

MVC está morto. A pilha moderna usa uma API JSON HTTP e um CDN para servir conteúdo estático que é compactado com gzip. O usuário nunca acessa diretamente o servidor ... o aplicativo o faz.

Veja o Gmail como exemplo. OK, o Gmail é servido a você por meio de um arquivo compactado estático que é servido por um nó CDN local. Você acessa o URL dele e sua solicitação é roteada para esse nó e você recebe o aplicativo de página única do Gmail. O aplicativo carrega e começa a fazer todos os tipos de solicitações AJAX para preencher o aplicativo com dados. MVC está longe de ser encontrado.

Portanto, a arquitetura de servidor moderna parece ser mais sobre MC, mas não V. Os modelos são usados ​​para se comunicar com o banco de dados no back-end do servidor e a API HTTP no cliente do servidor. O View foi mais ou menos eliminado dos servidores e agora é servido estaticamente pelos CDNs porque os CDNs oferecem a melhor experiência do cliente. Essa abordagem também torna o código do servidor mais modular, especialmente na era dos microsserviços, melhorando o desempenho do servidor e tornando o código do servidor mais ágil no processo.

Primeiro, vamos estipular que estou falando sobre MVC como foi originalmente definido no ambiente Smalltalk. Se você quiser falar sobre software da web, o que as pessoas chamam de MVC pode ser uma série de coisas. É possível fazer MVC de verdade em software da web (procure VisualWave), mas não é isso que a maioria das pessoas quer dizer quando fala sobre MVC no contexto da web.

Na maioria dos conjuntos de componentes, o V e o C no MVC são agrupados em um objeto. Vamos chamá-lo de ViewControl. A vantagem disso é que você tem apenas um objeto para lidar com a sua IU. A desvantagem é que sua fonte de controle está praticamente bloqueada e, portanto, difícil de alterar, aumentar ou anular. Por exemplo, no verdadeiro estilo MVC, a maneira de tornar qualquer View somente leitura é dar a ela um NoController (um objeto legítimo, não o mesmo que não dar nada como um Controller). Ao trabalhar com ViewControls, você deve ter um monte de código para ativar / desativar a entrada de controle. Em outro exemplo, se você tivesse um dispositivo de entrada de gesto 3D no espaço (procure por Leap), você poderia escrever um Controlador bastante genérico que seria fácil de se adaptar a qualquer Visualização que você já possui. Ao trabalhar com ViewControls, trabalhar com o maquinário de controle existente pode não ser tão fácil.

A verdadeira desvantagem do verdadeiro MVC é que você precisa entendê-lo e, então, decidir realmente usá-lo. Isso é mais do que a maioria das pessoas parece querer fazer, na suposição talvez não reconhecida de que nossos ambientes de computação agora estão praticamente consertados e nunca irão mudar.

O que é MVC?

Model-View-Controller é um padrão de design cujo objetivo principal é isolar diferentes partes de um aplicativo ou processo e é frequentemente usado no desenvolvimento web. O modelo contém os dados usados, que geralmente são recuperados de um banco de dados por meio de uma camada de negócios e mapeador de objetos. A visualização é usada para renderizar os dados, principalmente em uma interface de usuário. O controlador contém os terminais que recuperam um modelo específico e o vincula a uma visualização que o apresenta ao usuário. Essa separação de interesses é um aspecto muito importante do desenvolvimento de software sustentável e é um assunto recorrente na arquitetura de software.

Frameworks

Existem muitos frameworks MVC. Alguns muito populares são

.

NET MVC, Java Server Pages, Ruby on Rails e Symphony. Vou usar o .NET MVC como exemplo aqui, pois tenho alguma experiência com ele e é meu framework preferido para desenvolvimento web.

Vantagens

O objetivo principal do isolamento de partes do código é reduzir muito a complexidade e, assim, aumentar a capacidade de manutenção. Um desenvolvedor front-end agora pode modificar as partes da visualização modificando o código HTML sem ter que se preocupar com a lógica de negócios ou como os dados são recuperados, enquanto um desenvolvedor de back-end pode facilmente alterar a lógica de negócios sem afetar a apresentação. E se você quiser mudar para um banco de dados diferente, você pode trocar a camada de acesso a dados por uma diferente sem ter que fazer alterações no resto do aplicativo.

Desvantagens

No MVC, o aplicativo segue um fluxo de trabalho rígido. Cada solicitação é roteada para uma ação, uma função na classe do controlador. Onde um conjunto de dados é recuperado com base nos parâmetros e renderizado para uma visualização. Quando uma nova parte visual do aplicativo é solicitada, ela precisa passar por esse processo novamente, que pode ser lento e consumir muitos recursos se houver muitas solicitações da interface do usuário para o back-end.

Alternativas

MVVM

Um padrão mais adequado para aplicativos com muita interação é MVVM, Model-View-ViewModel. Esse padrão é muito parecido com o MVC, mas facilita a comunicação entre a visualização e o modelo de visualização, que é basicamente um modelo preparado para a visualização. Como um viewmodel não está diretamente vinculado a um banco de dados, ele pode ser manipulado e até ter funções nele. Um exemplo moderno disso é o Angular, uma estrutura de front-end Javascript para escrever aplicativos da web. No Angular, cada componente contém uma visualização / modelo HTML e um arquivo Javascript / Typescript que pode ser acessado a partir da visualização e manipular os dados do modelo de visualização (que geralmente fazem parte do próprio componente).

O MVVM pode ser usado em combinação com o .NET MVC ou uma API da web, de modo que, uma vez que os dados cheguem ao front-end, eles possam ser usados ​​de uma forma mais versátil sem ter que fazer chamadas caras de servidor o tempo todo.

MVP

Outra alternativa é MVP, Model-View-Presenter. Neste padrão, o apresentador lida com a vinculação com a vista, portanto, em vez de passar o modelo para o renderizador da vista, o apresentador preenche os campos do modelo na vista com as propriedades do modelo. Isso impõe uma abordagem de cima para baixo, bem como MVC.

Nenhum padrão

Em muitos aplicativos legados, não há nenhum padrão usado. Muitos aplicativos PHP seguem um estilo em que a parte superior da página contém algum código de back-end para preparar os dados, seguido por um pedaço de HTML que é misturado com o código PHP para exibir as propriedades dinâmicas. Para aplicações pequenas e simples, isso pode ser viável, mas tende a sair do controle muito rápido e geralmente termina em uma grande bola de barbante.

O Ruby Language Developer deu início a todo o mito de como seu Ruby poderia realizar a perfeição de um site ao incorporar o que foi denominado o primeiro site MVC. Honestamente, tudo o que fez foi dividir o site em centenas de pequenos pedaços para classificar tudo dentro do servidor em uma fração de segundo para enviar o modelo de documento solicitado ao navegador do destinatário.

Mas isso nunca foi MVC e nunca será. A questão é que quando o Request Object Model é solicitado por um navegador, o servidor de sites envia apenas um único Document Object Model chamado simplesmente de “Model”. E se você tem bom senso para saber que esse é o “Modelo”. Então você deve saber que o “View” é o Browser na máquina cliente e o “Controller” deveria ser o Servidor servindo o Model solicitado para o View.

Para lhe dar uma ideia do que acontece quando você faz isso no lado do servidor e afirma que é MVC. Tudo o que eles estão realmente fazendo é tentar replicar o que o servidor já faz e é uma perda de tempo para o site e um desperdício ainda maior de recursos e ponteiros na máquina dos servidores.

Você quer ver quem são os mais inteligentes, então dê uma olhada no Yahoo, Facebook e todos os WordPress Online. Todos eles usam Php de campo plano sem absolutamente nenhum MVC Frameworks de qualquer tipo. Eles fazem, entretanto, como o Ruby fez - usam um “Roteador” que tudo o que ele faz é pegar pedaços parciais do modelo de objeto no lado do servidor e empilhá-los juntos.

Mas o ponto principal é que o próprio servidor não se importa em saber como obterá o Model, porque tudo o que ele sabe fazer é enviar um único Model para a View do controlador. Os desenvolvedores de php ainda pensam que estão salvando o mundo com isso, mas na verdade eles estão apenas cortando pequenas partes da página e desperdiçando ponteiros na memória da CPU dos servidores.

O suficiente dos métodos de classe, como 20 a 50 construções de classe por cada clique do usuário em qualquer página, irá somar e dobrar os servidores ao ponto de bloquear em um grande site. E por que muitos são banidos de servidores como BlueHost e Godaddy por uso excessivo também.

A melhor coisa a fazer é ficar Flat Filed com Php e ou Python. Googles Python já sabe disso muito bem. O Facebook também.