Accueil > .Net, Développement > Partage de sessions : Présentation

Partage de sessions : Présentation

Il y a quelques temps, j’ai eu l’occasion de travailler sur un sujet assez sympa mais un peu complexe : le partage de session en différents applicatifs.
J’ai eu à fournir un bon gros document pour l’état de l’art, des démonstrations (POC) et sur la possibilité de l’appliquer chez le client où je suis actuellement.
Du coup, je me suis dis qu’une (petite) partie du travail réalisé pourrait intéresser d’autres personnes.

Je vais tenter de faire quelque chose de digeste, mais vu le sujet, c’est pas garantie ! ^^
Donc, le tout sera éclaté en plusieurs parties que je vais publier au fil de mes relectures.

Dans ce premier billet, je vais présenter le plan ainsi que de brefs résumés de ce qui sera traité dans chaque partie, ainsi que le tronc commun des différents POCs.
Quand je parle de différents applicatifs, cela peut aller d’un mix PHP/ASP.Net WebForm, ASP/ASP.Net WebForm, ASP.Net WebForm/ASP.Net MVC…

Les POCs traiteront uniquement du cas ASP.Net WebForm vs ASP.Net MVC.

 

Sommaire

 

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

 

Résumé des différents billets

 

Gestion native des sessions en .Net
Petit rappel toujours utile sur comment la session est gérée de façon native dans le Framework .Net et leurs différents avantages/inconvénients.
Le tout de façon généraliste.

Focus, State Server
Gestion native du Framework : explications de ce qu’est le State Server et comment le mettre en place, avec un POC.

Focus, SQL Server
Gestion native du Framework : explications de ce qu’est le SQL Server Session et comment le mettre en place, avec un POC.

Focus, Couchbase
Explications de ce qu’est Couchbase et comment le mettre en place, avec un POC.

Focus, Autres possibilités
D’autres possibilités qui en sont pas sujettes à POCs ainsi que les justifications de cette absence.

Conclusion
Une petite conclusion, avec récapitulatif et mon ressentis sur les différentes solutions.

Annexes
Outre les informations sur le partage de sessions, quelques points satellites pouvant toujours être utiles.
Des pistes, également pour approfondir le sujet.

 

Code commun des POCs

 

Côté code :

// ASP.Net WebForm
        protected void Page_Load(object sender, EventArgs e)
        {
            ButtonSubmit.Click += ButtonSubmitClick;
        }

        void ButtonSubmitClick(object sender, EventArgs e)
        {
            var value = InputSession.Text;
            Session["TestSample"] = value;
            Response.Redirect("Default.aspx");
        }

// ASP.Net MVC
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(HomeIndexViewModel model)
        {
            var value = model.InputSession;
            Session["TestSample"] = value;
            return RedirectToAction("Index");
        }
    }

Côté IHM :

// ASP.Net WebForm
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CouchBaseServerSample.AspNet.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <h1>Application ASP.Net WebForm</h1>
    <p><b>Entrer une valeur à mettre en session :</b></p>
    <p><asp:TextBox runat="server" ID="InputSession" /></p>
    <p><asp:Button runat="server" ID="ButtonSubmit" Text="Poster"/></p>
    <p><b>Informations sur la session :</b></p>
    <p>Nouvelle session : <%: Session.IsNewSession ? "Oui" : "Non" %></p>
    <p>Identifiant : <%: Session.SessionID %></p>
    <p>Valeur : <%: Session["TestSample"] %></p>
    </form>
</body>
</html>

// ASP.Net MVC
@model CouchBaseServerSample.AspMvc.Models.HomeIndexViewModel
@{
    ViewBag.Title = "Index";
}

<h1>Application ASP.Net MVC</h1>
@using (Html.BeginForm("Index", "Home", new { ViewBag.ReturnUrl }, FormMethod.Post))
{
    <p><b>Entrer une valeur à mettre en session :</b></p>
    <p>@Html.EditorFor(m => m.InputSession)</p>
    <p><input type="submit" value="Poster"/></p>
}

<p><b>Informations sur la session :</b></p>
<p>Nouvelle session : @(Session.IsNewSession ? Html.Raw("Oui") : Html.Raw("Non"))</p>
<p>Identifiant : @Session.SessionID</p>
<p>Valeur : @Html.Raw(Session["TestSample"])</p>

Le but sera de modifier la variable de session d’un côté pour la voir répercutée de l’autre côté.
C’est relativement simpl(ist)e, sur des objets plus complexes qu’une chaîne de caractères, il peut y avoir des surprises.

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 :