NetAccess est un librairie fournissant une méthode d'implémentation d'application client/serveur utilisant le protocole TCP.
La librairie se charge elle même de la gestion de clients, des socket et de toutes les données relative à la communication.
L'intégration de ce système est extrêmement simple puisqu'il vous suffit de créer une classe dans votre application dérivant l'une des deux classe abstraite (NetAccess.Client.ClientManager ou NetAccess.Server.ServerManager).
Parmi les fonctionnalitées de cette version 2 :
-> Possibilité de compression des transmission en utilisant l'algorithme GZip
-> Gestion de la capacité du serveur (en nombre de client)
-> possibilité à l'application de refuser la connexion d'un client
-> vérification de la compatibilité du client et du serveur
-> Ping
Nouveauté de la béta 2
-> Log avec différent niveau de rapport (les log sont désormais basé sur la librairie externe log4net disponible ici : http://logging.apache.org/log4net/)
-> Cryptage des transactions à la demande utilisant du RSA combiné avec Rijndael
-> Meilleur gestion des clients (expulsion avec message,...)
-> Possibilité d'indiquer un message envoyé au client automatique lors de l'arrêt du serveur.
-> Réécriture du système d'envoi/réception des messages pour une montée en charge bien meilleur (correction des mauvaises transmissions lors de la transmission de beaucoup de paquet en peu de temps | prise en charge des données dépassant la taille du buffer)
Des exemples d'implémentation seront fournit par la suite.
=====================================
Je viens de mettre à jour la source vers une nouvelle version qui corrige quelques éléments. Voici le changelog :
 Ajout de la configuration « string ServerConfiguration.StringServerPrivateKey » pour le serveur.
 Ajout de la configuration « string ClientConfiguration.StringServerPublicKey « pour le client.
 Ajout de la méthode « string EncryptionManager.ConvertKeyToString(byte[] key) ».
 Ajout de la méthode « byte[] EcryptionManager.ConvertKeyFromString(string key) ».
 Correction du bug #001.
 Correction du bug #002.
 Correction du bug #003.
 Correction du bug #004.
 Correction du bug #005.
 Ajout de l'évènement StateChanged sur le serveur lancé à chaque changement d'état du serveur.
 Correction du bug #006.
 Correction du bug #007 (l'utilisation de "return" dans la boucle de traitement empêchait l'analyse de tout les packets).
 Passage du tableau de client de HybridDictionnary en Dictionnary<int, Client> afin d'améliorer les performances.
 Passage de l'id client en type Int32 afin d'améliorer les performances.
 Ajout de la méthode SendToRange(ICollection<int> listClient, NetworkPacket packet, bool crypt) permettant d'envoyer un packet à une liste de client.
 Le méthode ClientManager.Close() à été renommée en ClientManager.Disconnect().
 Correction du bug #008.
 Ajout de l'évènement StateChanged sur le client lancé à chaque changement d'état du client.
 ServerManager.Start() transmet maintenant les exceptions lancé durant le démarage à l'application principale.
 Ajout d'une surcharge sur le constructeur de NetworkPakcket : new NetworkPacket(object type, params object[] data)
 Ajout de ServerManager.GetIpEndPointFromId(int clientId)
 Ajout de ServerManager.GetClientIdFromIP(IPAddress ip)
=====================================
A propos de la mise à jour du 4 mars 2008.
C'est ici la version avant publication des sources. Aucune modification d'interface ou de fonctionnalité ne sera fait d'ici la version release.
La dll log4net est fournit dans les sources (log4net.dll.rename à renommé en log4net.dll).
==================================== =
/!\ ATTENTION /!\
Cette source utilise le framework 3.5; La solution quand à elle provient de Visual Studio 2008 dont la version C# Express est disponible ici : http://www.microsoft.com/express/vcsharp/Default.a spx