Blazor vs Razor

asp.net-core blazor c# razor

Question

Avec l'invention de Blazor, je me demande s'il existe des gains d'efficacité significatifs (à la fois dans la création de code et dans la compilation / exécution de code) entre ces deux langages?

https://github.com/SteveSanderson/Blazor

Si quelqu'un l'a réellement implémenté, avez-vous entrepris des tests de performances ou avez-vous des commentaires anecdotiques (oui, excusez-moi de vos excuses) sur le processus d'écriture de code, par rapport à Razor?

Réponse acceptée

Les informations que je présente ci-dessous sont pour la plupart paraphrasées du blog de Steven Anderson du 2 février et de ma propre compréhension des objectifs du projet:

Blazor est destiné à combiner les idées de la pile .NET Razor actuelle avec l’architecture de cadre SPA moderne.

Création de code

se veut flexible et encourage les présentations à base de composants, comme dans cet exemple:

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}

qui crée un composant réutilisable dans le balisage HTML:

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}

Exécution

Blazor devrait être rapide, car webAssembly est rapide. Il est compilé en bytecode directement exécuté par le chargeur wasm du navigateur. En javascript, par exemple, les fichiers .js doivent d'abord être chargés, puis des fichiers séparés sont combinés, puis analysés, décomposés et intégrés dans une arborescence pouvant être interprétée par le moteur JavaScript du navigateur ( le moteur v8 de chrome , par exemple) .

Pour une comparaison approfondie de l'exécution de webAssembly et de javascript, consultez cet article

SPA Architecture et Design

Comme il existe déjà d'excellents frameworks construits en javascript pour le Web, Blazor s'est inspiré des idées déjà utilisées dans les frameworks modernes tels que React, Vue et Angular, et présentera des concepts détaillés dans le post, tels que:

  • Layouts
  • Routage
  • Injection de dépendance
  • Chargement paresseux
  • Tests unitaires

Notez que bien que ces concepts existent pour le côté serveur dans Razor, ils ne existent pas tous du côté client. Le routage frontal n'est pas disponible dans Razor et a souvent été combiné à un framework javascript pour remplir ce scénario.

J'ai personnellement travaillé sur des applications d'entreprise servant des pages Razor avec AngularJs. Il peut parfois devenir désordonné et ne jamais se sentir «propre».

En résumé

Razor est une solution pour architecture basée sur serveur qui peut gérer la logique de l’API et la création de modèles côté serveur, mais ne peut pas offrir de logique côté client en dehors de javascript.

Blazor est la prochaine étape (et son successeur, espérons-le) qui autorisera les mêmes fonctionnalités côté serveur que Razor, mais intégrera la logique côté client en utilisant C# au lieu de javascript.

Je travaille actuellement sur un petit projet test avec Blazor, et je l’ai trouvé jusqu’à présent facile à utiliser. Mais, comme l'indiquent les avertissements sur le blog et la page GitHub, la production n'est pas proche.

Modification par une tierce partie du 2018-09-26

Dans la .NET Conf 2018, il était annoncé que les composants Razor ("serveur côté serveur") feraient partie de .NET Core 3.0 . Ce code a été montré:

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi