[.net3.5] system.io.pipes - utilisation d'un canal nommé

Description

L'espace de nom System.IO.Pipes est apparu avec .net3.5. Il contient des classes fournissant un moyen de communication entre processus via des canaux anonymes et nommés.

Cette démonstration contient un client et un serveur échange au travers un canal nommé.
Le client s'identifie auprès du serveur et celui-ci est chargé de lui répondre en lui fournissant sa clé d'authentification (fictive pour le test).

+ Utilisation de LINQ To XML pour générer la base client sur le serveur et l'intéroger. (voir la classe Helper ci-dessous)
+ Utilisation de syntaxe C# 3.0 dans la méthode de négociation des messages.
Voila les petits plus de cette source.

Le code se veut simple et les commentaires sont présents !.

Source / Exemple :


using System;
using System.IO;
using System.Xml.Serialization;
using System.Linq;
using System.Xml.Linq;

namespace GenKeySrv
{
    public static class Helper
    {
        /// <summary>
        /// Créer un document XML avec une base de quelques utilisateurs pour l'application de test.
        /// (La méthode utilisée pour créer le document est dites "contruction XML fonctionnelle).
        /// </summary>
        /// <returns>Un document XML (LINQ).</returns>
        public static XDocument BuidUsersExample()
        {
            XDocument xdoc = new XDocument(
                new XDeclaration("1.0", "UTF-8", "yes"),
                new XElement("Users",
                new XElement("User",
                    new XAttribute("Name", "Willi"),
                    new XElement("AuthCode", "bird"),
                    new XElement("KeyPass", "aetuo13579")),
                new XElement("User", new XAttribute("Name", "Marcel"),
                    new XElement("AuthCode", "board"),
                    new XElement("KeyPass", "sfhkm02468")),
               new XElement("User", new XAttribute("Name", "Jérémy"),
                    new XElement("AuthCode", "blue"),
                    new XElement("KeyPass", "wcbheo5304"))
                    ));

            return xdoc;
        }

        /// <summary>
        /// Retourne la clé de code de l'utilisateur spécifié.
        /// </summary>
        /// <param name="xdoc">Document XML (LINQ)</param>
        /// <param name="user">Utilisateur.</param>
        /// <param name="authCode">AuthCode.</param>
        /// <returns>Le code KeyPass de l'utilisateur.</returns>
        public static string GetKeyPass(XDocument xdoc, string user, string authCode)
        {
            string szKeyPass = string.Empty;

            if (xdoc != null)
            {
                var result = from u in xdoc.Descendants("User")
                             where u.Attribute("Name").Value == user && u.Element("AuthCode").Value == authCode
                             select u.Element("KeyPass");

                foreach (var item in result)
                    szKeyPass = item.Value;
            }

            return szKeyPass;
        }
    }
}

Conclusion :


Notes commentaires questions n'hésitez pas !!
Bon dév... ;)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.