66 votes

Est-il judicieux d'intégrer backbone.js à ASPNET MVC?

Je ne suis pas un expert dans ces blocs de construction, mais à première vue, il me semble:

  • ASPNET MVC veut générer les points de vue et de gérer les modèles pour une application sur le côté serveur. Il considère le navigateur comme un peu stupide de présentation du moteur, une consommation des points de vue qui sont fournis par le serveur.

  • backbone.js souhaitez générer les points de vue et de gérer les modèles dans le navigateur. Il considère le côté serveur comme un assez stupides RESTE basée sur la persistance du moteur.

Cela semble être une vision simpliste. Je suis sûr que c'est pas toute l'histoire.

Quelles sont les réelles opportunités pour l'intégration de ces deux choses? Est-il judicieux de le faire? Ou est il trop de chevauchement entre eux pour qu'elle ait un sens?

J'aime voir l'analyse ou de la discussion de ce, si quelqu'un peut me référer.

58voto

Dan Turner Points 1518

Bien que je ne puisse parler à backbone.js je peux vous dire que j'ai utilisé knock-out pour le grand effet combiné avec ASP.NET MVC. Chaque ASP.NET l'application que j'ai vu à ce jour utilise un mélange de côté client et côté serveur en vue de la génération. Il y aura toujours des moments où son plus pratique pour générer des vues de côté serveur. Prenez par exemple le conditionnel éléments de l'INTERFACE utilisateur basée sur le fait qu'un utilisateur est authentifié, ou s'ils ont une autorisation spécifique. Vous ne voulez pas un web savvy utilisateur d'être en mesure d'explorer votre côté client, les modèles et toutes les fonctionnalités qu'ils ne reçoivent. Bien sûr, vous pourriez obtenir autour de cette asynchrone de chargement différents modèles client, bla bla, ou la liquidation de l'écriture de code côté serveur pour générer votre côté client modèles... de Plus si SEO signifie quelque chose pour vous, vous pouvez embrasser côté client création de modèles (par lui-même) au revoir.

De sorte que le sweet spot, à mon avis, c'est quelque chose qui fait les deux. Dans mon expérience, j'ai trouvé ASP.NET MVC pour exceller à la fois.

Pourquoi ASP.NET MVC est génial

  • Des Mises En Page (MasterPages)
  • Rasoir (type-safe vues avec intellisense bonté)
  • ActionFilters (endroit impressionnant pour l'application des conventions, telles que la journalisation, auth, etc)
  • La sérialisation JSON gratuitement - return Json(model)
  • Modèle de liaison et de validation
  • Cio et MVC sont les meilleurs amis (win)
  • L'authentification + autorisation
  • Pleins d'autres trucs que je ne peux pas penser.

À l'aide d'un framework côté client pour afficher génération, vraiment tout ce que vous êtes absent dehors sur est de Rasoir. Vous pouvez même utiliser des mises en page à un certain degré.

L'approche que je prends pour le développement avec ASP.NET MVC est de commencer par faire le travail d'application côté serveur. Cela vous oblige à penser que vous voulez que votre structure des URL, ce qui mérite un contrôleur, ce que vos itinéraires. Cela signifie également que vous obtenez l'avantage de la sécurité et de l'auto-complétion lors de la première itération de point de vue. À la fin de cet exercice, vous avez un de simple, conforme aux normes de la solution de (espérons-le) qui fonctionne sur n'importe quel dispositif connu de l'homme, que Google ne peut pas obtenir assez de.

J'ai ensuite, en adoptant une approche progressive pour la mise en œuvre des tranches de client-côté de la fonctionnalité. Côté client, j'écris un peu de javascript pour détourner une requête que je veux transformer en une requête AJAX, et de gérer la réponse à l'aide d'une version traduite du Rasoir vue. Sur le côté serveur, je prends une convention basée sur l'approche à l'aide d'un filtre d'actions. Cette action du filtre à environ suivantes:

  • Est le ActionResult un ViewResult?
    • Qu'est-ce que l'Accepter?
      • HTML - Retour d'un PartialViewResult du même nom préfixé par "_" donné le même modèle
      • JSON - Retour d'un JsonResult donné le même modèle
  • Est le ActionResult un RedirectToRoute résultat?
    • Retour EmptyResult (ou éventuellement vous pouviez retourner l'URL dans un JsonResult)

Avec cette approche, vous pouvez ajouter des fonctionnalités AJAX sans changer une seule ligne de code dans les contrôleurs. Une approche alternative est de suivre le Thunderdome Principal et disposent d'une ActionInvoker responsable pour envelopper le modèle dans un type de résultat en fonction du contexte de la demande. Je n'ai pas travaillé sur la façon de serveur de navigation latérale (redirections) ajustement avec cette approche.

Les déchets de départ avec un serveur de mise en œuvre, vous êtes doublement en place en vue de la génération de code (Rasoir + js-en fonction du modèle). Selon la façon dont beaucoup de votre application que vous souhaitez mettre en œuvre chez le client, ce qui peut ou peut ne pas être un problème. La Spark est l'exception à cette règle en ce que vous pouvez faire pour générer des modèles client pour vous! L'inconvénient de l'Étincelle, c'est que vous perdez intellisense (il y a un plugin pour ça, mais sa merde) qui n'est pas négligeable de perte, de plus je préfère juste Rasoir (ses cuit, il ne marche pas besoin d'être configuré, et ne va pas disparaître de si tôt).

2voto

afr0 Points 133

J'ai utilisé asp.net mvc KO et bakcbone pour les différents projets et tout se résume à la nature du projet à la fin. Pile serveur de ne pas sortir de la boîte une fois votre flux de travail de commencer à obtenir complexes ou de vous offrir des UX contrairement aux simples données des applications centrées sur les données. Lorsque votre projet comporte de grands UX backbonejs, vous y.. Inconvénient est qu'il n'y a pas bien défini centralisé des lignes directrices pour vous que vous aurez à passer par l'enfer de blogs pour faire avancer les choses .. classique d'applications que vous pouvez coller à KO. Btw, il y a des plugins qui peuvent se moquer de KO pour backbonejs .. je fais référence à bacjbone.modelbinder à nouveau vous devez intégrer à votre auto Parce que MS ne dérange pas du tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X