Accueil > .Net, Développement > Partage de sessions : Focus, Couchbase

Partage de sessions : Focus, Couchbase

Ce billet fait partie de la série « Partage de sessions » :

  1. Présentation
  2. Gestion native des sessions en .Net
  3. Focus, State Server
  4. Focus, SQL Server
  5. Focus, Couchbase (ce billet)
  6. Autres possibilités
  7. Conclusion
  8. Annexes

Dans ce billet, nous allons voir ce qu’est Couchbase, ses avantages et inconvénients et comment le mettre en place.

 

Généralités

 

Couchbase Server est une base de données NoSQL distribuée, orientée documents. Elle est également capable de prendre en charge des associations clefs/valeurs.

Vendue comme étant la plus complète, scalable (apte à la montée en charge) et hautement performante, au monde.

C’est donc une base de données orientée documents, au format JSON. Il est a noté que Couchbase utilise une approche « append only », ce qui implique qu’il faut compacter la base de temps à autres (peut-être planifié).

Couchbase Server

Dans ce cadre, Couchbase propose un provider pour le SessionState.
Le provider est disponible directement sur GitHub.
Il existe actuellement deux versions, une version stable 1.2.1 et une version bêta 2.0.

 

Notes Importantes

 

Pour installer le Couchbase Server, il faut avoir 4 coeurs au minimum (sur les postes de développements, par exemple).
Comme sur ma machine, j’ai effectivement 4 coeurs, je ne sais pas dans quelle mesure cela peut s’avérer bloquant.

Couchbase Server utilise un seul et unique compte administrateur qui agit comme un « super utilisateur », c’est-à-dire qu’il a accès à tout sur le serveur (équivalent « sa » dans SQL Server).
Il a par contre un système d’utilisateur en « lecture seule ». Ces utilisateurs peuvent être créés/supprimés via l’IHM Web. Par contre, ce n’est pas le cas du compte administrateur !
De plus, le mot de passe de l’administrateur ne semble pas facile à changer/réinitialiser.

Si un utilisateur en lecture seule est supprimé, les connexions actives avec cet utilisateur ne sont pas désactivées/déconnectées.

 

Avantages et inconvénients

 

Cette solution possède les avantages des solutions « Out-of-Process » : non lié à IIS, résistant au redémarrage du serveur Web… Mais aussi les avantages liés à la solution SQL Server : lieu centralisé, traçabilité, sécurité…
A cela, cette solution ajoute les avantages des performances, de la réplication possible (et simplement) et d’un monitoring (via l’IHM d’administration).

Côté inconvénients, on peut noter le fait que c’est un outil tiers à installer, administrer et maintenir.
Pour bien gérer le Fail Over, il faut à minima deux serveurs (obvious).
Enfin, tout se fait en Append-only et avec compactage obligatoire.
Les deux premiers points sont plutôt du chipotage, pour le troisième, je n’ai pas assez de recul.

 

Installation

 

Outre l’installeur (fichier *.exe), il y a une petite configuration préalable du serveur, comprenant 6 écrans (dont un de présentation), depuis une IHM web.
Je vous mets les 5 étapes importantes, pour donner une idée :
Couchbase - Installation 1

Couchbase - Installation 2

Couchbase - Installation 3

Couchbase - Installation 4

Couchbase - Installation 5

Ce dernier écran qui est TRÈS important, comme mentionné plus haut : c’est lui qui gère le mot de passe administrateur.

Pour configurer et monitorer le serveur, il faut donc se servir de l’IHM web (ou de commandes).
Pour donner une idée, je mets juste une capture de l’écran principal :
Couchabse - IHM

J’avoue que j’ai beaucoup aimé l’outil, il est assez simple à utiliser (même sans lire la doc : c’est pour les faibles ^^).

 

Configuration

 

La configuration est un peu plus développée que pour le State Server ou SQL Server.
Dans l’exemple ici, j’ai pris la version 2.0 (puisqu’elle fonctionne sur WebForm & MVC) :

<?xml version="1.0" encoding="utf-8"?>

  <configSections>
    <section name="couchbase" type="Couchbase.Configuration.Client.Providers.CouchbaseClientSection, Couchbase.NetClient" />
  </configSections>

  <couchbase>
    <servers>
      <add uri="http://localhost:8091"></add>
    </servers>
    <buckets>
      <add name="default"></add>
    </buckets>
  </couchbase>

  <appSettings>
    <add key="ApplicationName" value="ApplicationName" />
  </appSettings>
  <system.web>

    <sessionState customProvider="Couchbase" mode="Custom">
      <providers>
        <add name="Couchbase"
             type="Couchbase.AspNet.SessionState.CouchbaseSessionStateProvider, Couchbase.AspNet"
             section="couchbase"
             factory="Couchbase.AspNet.CouchbaseClientFactory"
             exclusiveAccess="false" />
      </providers>
    </sessionState>

    <machineKey
      validationKey="EB9231989609C0587218913BD4A9CF56A51977A8DCAA04D224AB86581173BDB6A636FFCFC234669049C531EF9C4123883EE9DC509C3E8AE650166476D7FC1AE4"
      decryptionKey="41A0588A0553E66942683538425AF806BA1B89DA6AB70699"
      validation="SHA1" />
  </system.web>

</configuration>

 

Proof of Concept

 

Un aperçu du contenu stocké :
Couchbase - Document Stocké

La version 1.2.1 ne fonctionne pas avec l’ASP.Net WebForm (mais fonctionne bien avec MVC).
J’ai eu l’occasion de relever ce problème lors de la création du PoC : Couchbase session state provider with WebForm.
Jeffry Morris m’a pointé la version bêta qui fonctionne à la fois pour WebForm et MVC (comme on dirait : Work On My Machine).
Comme indiquée dans la même conversation, la version de kendallb (couchbase-aspnet 2.0) fonctionne également. Dans ce cas, la configuration peut être légèrement différente. Il ne fait pas partie des deux PoCs suivants.

L’application d’exemple est disponible v1.2.1. (non fonctionnel avec WebForm).
L’application d’exemple est disponible v2.0.

Catégories :.Net, Développement

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :