Iniciando no ambiente WEB. Quais tecnologias utilizar?

Bom dia.

Trabalho com desenvolvimento de aplicações desktop à 3 anos, usando VB6 e C#.

Mesmo me mantendo no ambiente desktop procurei sempre estudar boas práticas de programação, procurando aprofundamento nos conceitos da programação orientada a objetos ( padrões de projeto, arquitetura de software, etc).

Agora tenho como objetivo desenvolver uma aplicação WEB inicialmente de médio porte, porém como descrito, uma aplicação, não é um WebSite. Hipoteticamente, digamos que seja um sistema para automação de padarias.

Já desenvolvi em ASP.NET WebForms, porém tive uma dificuldade imensa em desenvolver interfaces ricas em WEB apenas com html, css, e javascript. Tive uma grande dificuldade em estruturar a visão juntamente com o JS, trabalhar com o ajax, etc. Na minha concepção, criou uma desorganização quando acoplei todo aquele código JS para alguns efeitos que tive que realizar, além de não ser nada produtivo.

Infelizmente não tive outras oportunidades de trabalhar e estou aproximadamente 8 meses sem trabalhar com esse contexto.

Agora novamente com essa oportunidade, gostaria de saber o que utilizar. Já vi tecnologias como:

  • Asp.net MVC: Não gostei. Me pareceu como servlets java, onde se recupera informações no contexto do request pelo id dos elementos envolvidos. Não tem a facilidade que o primefacess ou o asp.net WebForms, mapeando os controles entre tela e camada de transporte mais facilmente.

  • Primefaces: Como estou trabalhando com C#, trabalhar também com JAVA irá dificultar um pouco quando necessitar de algo específico da linguagem, e até em questão de produtividade.

  • Asp.net WebForms: É extremamente simples e se assemelha com o desenvolvimento desktop, e possibilita aplicação de padrões arquiteturais para benefício da manutenção. Minha dúvida é no momento de utilizar outras bibliotecas e frameworks por o webforms ser mais “fechado” que o asp.net mvc.

  • Blootstrap: Pelo que estudei será o ideal para meu caso: Assim como prime, não exige experiência para desenvolver interfaces ricas. Só estou com receio quando for trabalhar com ajax e componentes mais complexos como grids.

Resumo: Quais tecnologias WEB vocês recomendam para desenvolvimento com C#?

você disse interface rica então vamos lá:

MVC 5 e Angular.js ou Web.Api e Angular.js e/ou Signal R 2

Eu faria dessa forma: HTML 5 /Angular/Signal R e Web.api, toda a comunicação via JSON

isso sim daria uma interface super rica.

  • prontos fortes:

  • Interfaces extremamente intuitivas.

  • Grande flexibilidade de animações e eventos js.

  • pontos fracos:

  • Precisa conhecer javascript profundamente.

  • Precisa controlar o código javascript como se fosse um backend.

  • Dificuldade no desenvolvimento em relação a outras tecnologias.

Olá!

Sou novato na área de desenvolvimento, mas, espero deixar minha contribuição aqui.

Bem, mesmo que você não tenha gostado, eu ainda recomendo o uso do Asp.Net MVC. Acho que é uma tecnologia agradável, além de permitir muito mais liberdade na hora de desenvolver a interface se comparado ao Web Forms. Além de não ter os mesmos problemas de ViewState como o WebForms. Assim você terá uma curva de aprendizado bem mais baixa além de poder aproveitar melhor os componentes .Net que existam na sua empresa ou API pessoal, já que trabalha com C#.

Para interfaces, considero o Twitter Boostraps ideal. Mas para que você tenha um bom aproveitamento do framework é preciso que você tenha os conceitos básicos de Web Client muito bem definidos (tableless e noções de jquery ajudam muito no momento de usar Bootstrap).

Como já foi comentado, uma das melhores opções é um Framework javascript, que não fará teus códigos se perderem num mar de “javascriptzinho” por todo o lado.
AngularJS é muito recomendado.
O importante é não pensar o javascript como um recurso pontual para certas situações, e sim tratá-lo com respeito e como uma linguagem como todas as outras. Ai as coisas já melhoram muito, ganham corpo, arquitetura, sentido, segurança.
Tu também reclamou do uso do ajax. Testou usar JQuery? Ajuda bastante também.

JSF (foi sitado Primefaces) dão ao desenvolvedor a interface rica. Para quem é acostumado com o Desktop, desenvolver para WEB é árduo, pois as interfaces são muito mais simples e, comparado ao desktop, é como se precisássemos também desenvolver o interior do componente muitas vezes.

Desconheço tecnologias parecidas ao JSF para outras linguagens.

Agora se tu pretende seguir botando a mão no desenvolvimento web, terá de se acostumar com a realidade dela.
A dica é escolher bem as tecnologias, aceitar que talvez não tenha componentes tão ricos como no desenvolvimento desktop, e aprender a ser feliz nesse novo mundo. :slight_smile:

Obrigado pelas respostas,

Sobre o que passaram além do que já havia levantado, como o angular.js, irei me iterar sobre o assunto.

Podem me recomendar ferramentas e materiais de referência sobre os assuntos tratados? Vídeos em portugues?

[quote=JoaquimGM]Obrigado pelas respostas,

Sobre o que passaram além do que já havia levantado, como o angular.js, irei me iterar sobre o assunto.

Podem me recomendar ferramentas e materiais de referência sobre os assuntos tratados? Vídeos em portugues?

[/quote]

Em português?

Nunca fiz nenhum deles:

www.schoolofnet.com/cursos/angularjs/

www.alura.com.br

O Alura eu assinei por 2 meses, achei os cursos bons, só tenho elogios. Não fiz o curso de AngularJS deles.
As vezes eles atropelam o “porque” e vão direto pro “como”. Pra mim é melhor assim, se ficar dúvida do porque, eu pesquiso mais. Dependendo o nível do aluno, pode dificultar.

Acho que se teu interesse é só AngularJS, um livro é mais barato e tão garantido quanto.

[quote=JoaquimGM]Obrigado pelas respostas,

Sobre o que passaram além do que já havia levantado, como o angular.js, irei me iterar sobre o assunto.

Podem me recomendar ferramentas e materiais de referência sobre os assuntos tratados? Vídeos em portugues?

[/quote]

Meu primeiro contato com Bootstrap foi através do canal Coder’s Guide.

Embora o site oficial do projeto seja uma boa fonte de consulta.

Você também pode acompanhar o site do Maurício Samy Silva para obter dicas de como trabalhar com Web Client e coisas do tipo (ele possui ótimos livros também).

Quanto ao Asp.Net MVC, tive meu start com o livro Programando em ASP.Net MVc - Alfredo Lotar (http://novatec.com.br/livros/programando_aspnet-mvc/). Foi uma boa introdução. Partindo desse ponto, as demais dúvidas podem ser solucionadas rapidamente com uma rápida pesquisa no stackoverflow.

Linguagem javascript é bem rudimentar, talvez isso colabora para projetos desorganizados?

Felizmente HTML/JS não é mais a única opção para interfaces, visto que hoje é muito comum aplicações web publicarem APIs para serem consumidas por clientes das mais diversas tecnologias de interfaces, inclusive opções nativas. Hoje, na minha opinião, não existe mais necessidade de todo esse trabalho pra emular efeitos e componentes de SO nativo, num paradigma que é basicamente textual (o T em HTML é texto). Hoje você pode usar a coisa real, um grande avanço em relação a época do website que era limitado ao browser rodando HTML/JS.

[quote=lkbm]Linguagem javascript é bem rudimentar, talvez isso colabora para projetos desorganizados?

Felizmente HTML/JS não é mais a única opção para interfaces, visto que hoje é muito comum aplicações web publicarem APIs para serem consumidas por clientes das mais diversas tecnologias de interfaces, inclusive opções nativas. Hoje, na minha opinião, não existe mais necessidade de todo esse trabalho pra emular efeitos e componentes de SO nativo, num paradigma que é basicamente textual (o T em HTML é texto). Hoje você pode usar a coisa real, um grande avanço em relação a época do website que era limitado ao browser rodando HTML/JS.[/quote]

Mas quando envolve AJAX geralmente você tem q usar js, seja com um framework como o jquery.

[quote=JoaquimGM]Obrigado pelas respostas,

Sobre o que passaram além do que já havia levantado, como o angular.js, irei me iterar sobre o assunto.

Podem me recomendar ferramentas e materiais de referência sobre os assuntos tratados? Vídeos em portugues?

[/quote]

Se tu não conhece o JQuery, talvez até seja melhor começar por ele, que é mais popular e mais fácil de encontrar material e/ou trocar figurinha com outros desenvolvedores.
Mas são todas tecnologias muito importantes.

[quote=JoaquimGM]Bom dia.

Trabalho com desenvolvimento de aplicações desktop à 3 anos, usando VB6 e C#.

Mesmo me mantendo no ambiente desktop procurei sempre estudar boas práticas de programação, procurando aprofundamento nos conceitos da programação orientada a objetos ( padrões de projeto, arquitetura de software, etc).

Agora tenho como objetivo desenvolver uma aplicação WEB inicialmente de médio porte, porém como descrito, uma aplicação, não é um WebSite. Hipoteticamente, digamos que seja um sistema para automação de padarias.

Já desenvolvi em ASP.NET WebForms, porém tive uma dificuldade imensa em desenvolver interfaces ricas em WEB apenas com html, css, e javascript. Tive uma grande dificuldade em estruturar a visão juntamente com o JS, trabalhar com o ajax, etc. Na minha concepção, criou uma desorganização quando acoplei todo aquele código JS para alguns efeitos que tive que realizar, além de não ser nada produtivo.

Infelizmente não tive outras oportunidades de trabalhar e estou aproximadamente 8 meses sem trabalhar com esse contexto.

Agora novamente com essa oportunidade, gostaria de saber o que utilizar. Já vi tecnologias como:

  • Asp.net MVC: Não gostei. Me pareceu como servlets java, onde se recupera informações no contexto do request pelo id dos elementos envolvidos. Não tem a facilidade que o primefacess ou o asp.net WebForms, mapeando os controles entre tela e camada de transporte mais facilmente.

  • Primefaces: Como estou trabalhando com C#, trabalhar também com JAVA irá dificultar um pouco quando necessitar de algo específico da linguagem, e até em questão de produtividade.

  • Asp.net WebForms: É extremamente simples e se assemelha com o desenvolvimento desktop, e possibilita aplicação de padrões arquiteturais para benefício da manutenção. Minha dúvida é no momento de utilizar outras bibliotecas e frameworks por o webforms ser mais “fechado” que o asp.net mvc.

  • Blootstrap: Pelo que estudei será o ideal para meu caso: Assim como prime, não exige experiência para desenvolver interfaces ricas. Só estou com receio quando for trabalhar com ajax e componentes mais complexos como grids.

Resumo: Quais tecnologias WEB vocês recomendam para desenvolvimento com C#?[/quote]
Primefaces e WebForms são fáceis, mas depois pode te engessar. Component-based é desencorajado pela comunidade .NET faz tempo, só não entendo porque muitos da comunidade Java ainda adotam. Eu aconselho esquecer a cultura desktop se quiser ser desenvolvedor web de verdade.

Como já teve conhecimento de ASP.NET MVC 5 ou anterior, se no momento só está querendo estudar e sem precisar por nada em produção, baixa o Visual Studio 14 CTP2 e leia sobre “Asp.Net vNext” para já seguir estudos com Asp.Net MVC 6, que mudou radicalmente, sendo mais leve de acordo com a necessidade, e pasmem, desacoplado do Windows/IIS.

Sobre a parte client estude algum framework JS como o KnockoutJs ou AngularJs, e o framework UI Bootstrap.

[quote=javaflex]
Primefaces e WebForms são fáceis, mas depois pode te engessar. Component-based é desencorajado pela comunidade .NET faz tempo, só não entendo porque muitos da comunidade Java ainda adotam. Eu aconselho esquecer a cultura desktop se quiser ser desenvolvedor web de verdade.

Como já teve conhecimento de ASP.NET MVC 5 ou anterior, se no momento só está querendo estudar e sem precisar por nada em produção, baixa o Visual Studio 14 CTP2 e leia sobre “Asp.Net vNext” para já seguir estudos com Asp.Net MVC 6, que mudou radicalmente, sendo mais leve de acordo com a necessidade, e pasmem, desacoplado do Windows/IIS.

Sobre a parte client estude algum framework JS como o KnockoutJs ou AngularJs, e o framework UI Bootstrap.[/quote]

O problema não é muitos desenvolvedores Java adotarem frameworks Component-based.
Acho um problema adotar esses frameworks em projetos onde ele não se enquadra no escopo.

Estou fazendo agora um projeto que envolve um pequeno punhado de cadastros e relatórios, alguns gráficos bacanas (os gráficos do primefaces cumprem o pedido e sobram), e integração com app para Android.
Foi levantado o escopo do projeto, foi avisado o cliente as limitações da tecnologia, e tudo ok!

[quote=JoaquimGM][quote=lkbm]Linguagem javascript é bem rudimentar, talvez isso colabora para projetos desorganizados?

Felizmente HTML/JS não é mais a única opção para interfaces, visto que hoje é muito comum aplicações web publicarem APIs para serem consumidas por clientes das mais diversas tecnologias de interfaces, inclusive opções nativas. Hoje, na minha opinião, não existe mais necessidade de todo esse trabalho pra emular efeitos e componentes de SO nativo, num paradigma que é basicamente textual (o T em HTML é texto). Hoje você pode usar a coisa real, um grande avanço em relação a época do website que era limitado ao browser rodando HTML/JS.[/quote]

Mas quando envolve AJAX geralmente você tem q usar js, seja com um framework como o jquery.[/quote]

Mas isso ajuda no backend da sua aplicação, no que diz respeito a criação de interfaces ricas, desenvolvedores js continuam tendo que se virar por conta própria.