Mis à jour le mardi 23 mai 2017
  • 20 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

Introduction à la communication

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

L'informatique actuelle n'est que communication. Il y a de la communication entre les composants de notre ordinateur (carte-mère <=> processeur…) jusqu'à l'immense réseau de communication qu'est internet. La communication peut être interne à un PC ou via le réseau.

La communication, pourquoi ?

Communication interne

Ce que je qualifie de « communication interne » désigne une communication sur une seule et même machine (un seul PC).
Exemple, vous avez développé au cours de ce tutoriel la bibliothèque de films ZBiblio et le navigateur web. Pourquoi ne pas ajouter un bouton qui permet, lorsque vous êtes sur la fiche d'un film sur Allociné, d'ajouter automatiquement ce film à votre bibliothèque ?

Cependant, avec notre ancienne version de ZBilblio, il aurait fallu implémenter une communication afin de transmettre des données du navigateur vers la bibliothèque. Et cela sur votre seul PC.

Il s'agit donc de communication interne.

Vous admettrez que ce n'est pas réellement intéressant, surtout à notre époque.
La chose réellement intéressante est alors la communication réseau !

Communication réseau

Vous avez de la communication par votre réseau dès que vous allez sur internet, votre navigateur (le client) va communiquer avec un serveur avec lequel vous allez échanger des données (une requête pour voir les photos de vos amis sur Facebook va être transmise au serveur et ce dernier vous répondra en vous envoyant lesdites photos).

Ainsi est la communication réseau : un ou des clients effectuent des transferts de données avec un serveur.

Les sockets

Les sockets ne sont pas une abréviation de chaussettes. C'est le nom barbare d'un objet destiné à permettre une communication inter-processus.

La communication peut s'effectuer en utilisant le protocole UDP ou TCP. Je vais vous les exposer tout de suite.

TCP : mode connecté

Le Transmission Control Protocol (TCP, en français « protocole de contrôle de transmissions ») est un protocole de communication utilisant les IP. Le mode « connecté » signifie que l'établissement de la connexion est requise avant de pouvoir transmettre des données. Ce protocole utilise un port pour communiquer.

L'avantage est la fiabilité des données. Une fois la connexion établie, ce protocole offre une certitude dans l'acheminement des données.

UDP : mode déconnecté

Le User Datagram Protocol (UDP, en français « protocole de datagramme utilisateur ») est un protocole basé sur le mode déconnecté. Cela signifie que l'on peut s'affranchir de toute la procédure de connexion requise par le protocole TCP.
Le grand avantage de ce protocole est la rapidité pour transmettre de petites quantités de données. Il est fortement employé dans les jeux vidéos où les données à transmettre entre le client et le serveur sont peu volumineuses mais doivent être acheminées très rapidement.

Et les sockets dans tout ça ?

J'y viens, les sockets vont nous permettre de grandement simplifier les opérations de communication. On s'en servira notamment pour le protocole TCP. Comme je viens de l'expliquer, en TCP une connexion est requise. Les sockets vont nous permettre d'effectuer rapidement les procédures de demande de connexion, d'acceptation de la connexion, etc.

Les utiliser est un très bon compromis entre temps de développement et fiabilité de la connexion.

.NET remoting

Je vais passer très rapidement sur cette méthode de communication. Elle était très utilisée lors des premières années d'utilisation de la technologie .NET et est désormais dépassée.

Le concept innovateur de .NET remoting à l'époque venait du fait que, une fois la connexion d'une application client et serveur effectuée, les deux programmes pouvaient utiliser des objets « partagés » entre les deux applications. C'est un peu comme si une sérialisation de la classe était effectuée à tout moment et était synchronisée avec l'autre application (pour faire simple).

Contrairement aux sockets, cette méthode de communication imposait aux programmes d'utiliser la technologie .NET s'ils souhaitaient communiquer. Si vous utilisez les sockets, vous pouvez avoir une application cliente utilisant VB .NET et une application serveur codée en C par exemple (ou inversement). La seule contrainte est de faire correspondre le type de socket, le port et le protocole sur les deux programmes. Mais nous verrons cela en temps voulu.

Cette API (interface de programmation) a désormais été supplantée par WCF, que je vais vous présenter tout de suite.
Je ne ferai pas de chapitre sur .Net remoting, mais libre à vous d'effectuer vos propres recherches si vous souhaitez l'utiliser. ;)

WCF, Windows Communication Fundation

Depuis le framework .NET v3.0 existe WCF, qui est censé remplacer .NET remoting. La grande force du WCF est la flexibilité de la configuration. En effet, vous pouvez développer votre méthode de communication basée sur un protocole HTTP, puis changer pour utiliser un autre port via TCP, tout cela s'effectue de manière transparente pour le développeur. Cela peut être très utile si vous vous rendez compte que sur un réseau public le port utilisé par votre application est bloqué.

Sinon, WCF, ça fonctionne comment ?

WCF va utiliser des messages SOAP (ancien acronyme de Simple Object Access Protocol). Ces messages SOAP sont en fait des messages basés sur la structure XML (comme pour notre sérialisation). Ces messages vont être échangés de manière totalement transparente pour nous, utilisant les protocoles et autres niveaux de sécurité requis.

Contrairement aux sockets qui sont considérés comme de la programmation « bas niveau », c'est-à-dire très près du matériel, WCF va être de « haut niveau ».

Bref, tout ça semble plutôt beau, mais nous n'allons pas aborder cette méthode de communication dans ce cours. Tout d'abord parce que sa mise en œuvre n'est pas possible avec la version Express de Visual Basic. Et ensuite parce que je trouve que c'est très très complexe à mettre en œuvre et que vous n'en aurez pas l'utilité dans l'immédiat.

Pour résumer, nous allons donc uniquement nous concentrer sur les sockets. La communication est une très vaste partie, et les sockets vous apporteront le minimum vital pour faire communiquer des applications en toute simplicité.
Je rappelle que seuls les sockets seront étudiés dans ce cours, si vous avez des besoins spécifiques, tournez-vous vers le WCF. Mais attention, notre version de Visual Studio ne suffit pas pour ce type de développement.

  • Les sockets vont nous permettre d'effectuer une communication réseau.

  • Les autres technologies Microsoft pour la communication sont .NET remoting et WCF.

Exemple de certificat de réussite
Exemple de certificat de réussite