Utilisation uniquement de ServiceStack pour le web et les services web
Soutien à le nouveau moteur de vue Razor de ServiceStack
Une amélioration significative de l'histoire HTML de ServiceStack a été ajoutée dans v3.9.11 dans le paquet nuget ServiceStack.Razor. Avec ce soutien, ServiceStack gradué maintenant vers un framework complet de site web et de services web qui offre un remplacement beaucoup plus simple à WCF, MVC et WebApi.
La documentation complète expliquant la nouvelle histoire HTML de ServiceStack avec le support de Razor est maintenue sur le site de démonstration Razor Rockstars :
La documentation complète expliquant le support de Razor et décrivant ses fonctionnalités est expliquée dans les liens ci-dessus.
Juste un framework de services REST avec un format HTML
Le Type de Contenu HTML a été ajouté à ServiceStack de la même manière que vous vous y attendez d'un vrai framework de services REST, c'est-à-dire que vous pouvez simplement ajouter des vues Razor pour améliorer vos services existants qui ne seront utilisées que lorsque le client demandera le Type de Contenu text/html
(sans effet sur les formats enregistrés existants). Par exemple, ce service REST /rockstars peut toujours être consulté dans tous les autres Types de Contenu :
De plus, si vos services ont l'attribut [ClientCanSwapTemplates]
, le client peut échanger les vues et modèles des pages à l'exécution, par exemple voici la même page ci-dessus avec :
L'adoption naturelle de ServiceStack du format HTML de cette manière, rend trivial le développement d'un ensemble de services qui peuvent servir à la fois le HTML et les clients mobiles et desktop natifs.
D'autres façons de servir du HTML
Avant l'ajout de la prise en charge de Razor, il y a quelques stratégies pour servir des pages HTML avec ServiceStack :
Utiliser une page html statique avec des appels ajax
Si vous faites une requête web pour un fichier existant, il est renvoyé avec le Gestionnaire de Fichiers Statiques. Vous pouvez alors simplement faire des appels json ajax à vos services web pour générer dynamiquement une page.
L'application TODO Backbone dans le Modèle de Démarrage de l'Application Service Windows fonctionne de cette manière. (ainsi que la plupart des autres projets d'exemple dans ServiceStack :-)
Retourner une chaine de caractères
Toute chaîne de caractères retournée par vos services web est directement écrite dans le flux de réponse 'tel quel', vous pouvez donc simplement retourner du html en utilisant votre propre solution de modélisation html.
Voici une liste de autres types de retour possibles dans ServiceStack et comment ils sont traités.
Utilisation de Markdown Razor
Le moteur de vue intégré à ServiceStack est Markdown Razor - qui s'inspire du Razor de MVC mais en utilisant la syntaxe Markdown. Il est très extensible supportant une classe de base personnalisée et des méthodes/utilitaires d'extension.
Une caractéristique intéressante de l'utilisation de Markdown Razor est que le même service web qui renvoie du json, xml, etc peut également être un modèle de vue pour une page html générée dynamiquement à la même URL.
Un exemple de ceci est le service web des catégories dont vous pouvez voir les résultats ici : http://www.servicestack.net/docs/category/Framework
et le même service encore une fois en JSON, XML, etc. Vous pouvez également récupérer la page html partiellement générée (sans le modèle) ainsi que le markdown généré dynamiquement.
La page a été créée en utilisant le DTO/modèle de vue des services web qui a été envoyé à cette vue MarkdownRazor https://raw.github.com/ServiceStack/ServiceStack.Examples/master/src/Docs/Views/Category.md
Si vous avez spécifié une page Markdown Razor pour votre service web, elle est utilisée à la place du Rapport HTML5 JSON par défaut que vous voyez maintenant.
L'ordre de résolution utilisé par ServiceStack pour résoudre le modèle Markdown approprié à utiliser pour le rendu HTML est :
- Si le service web spécifie un modèle (via une réponse personnalisée IHttpResult.TemplateName) - alors une vue avec ce nom.
- Une vue avec le même nom que le DTO de réponse, en cherchant d'abord dans /Views puis dans /Views/Shared
- Une vue avec le même nom que le DTO de requête, en cherchant d'abord dans /Views puis dans /Views/Shared
Héberger ServiceStack sur un /chemincustom
ServiceStack peut être utilisé avec ou sans une application web ASP.NET existante. Si votre application est riche en HTML et légère en services REST, une approche courante est d'héberger ServiceStack sur un /chemincustom (par exemple /api) afin que vous puissiez utiliser ASP.NET pour toute la génération de pages HTML.
Si vous utilisez plutôt ASP.NET MVC, vous devez ignorer la route dans le Global.asax RegisterRoutes() de MVC :
routes.IgnoreRoute ("servicestack/{*pathInfo}");