Solution 1 :
Les sockets Unix sont un peu plus rapides car vous n'avez pas le tcp-overhead. Si vous réalisez que cette perte de performances est une question de charge du serveur. Si vous n'avez pas une charge de serveur très élevée, vous ne le reconnaîtrez pas.
Si vous utilisez Jails (FreeBSD) ou une autre technologie de virtualisation pour séparer par ex. MySQL-Server depuis le serveur Web, vous utilisez souvent la configuration tcp/ip au lieu des sockets. Les règles de pare-feu doivent toutefois restreindre l'accès.
Vous devez savoir si votre système est soumis à une forte charge afin qu'un socket soit indispensable ou si vous pouvez vous concentrer sur une conception de système agréable (séparant les services), alors une solution tcp/ip serait préférable.
Alors faites une longue réponse courte :
Oui, il y a une différence de performances, les sockets sont plus rapides. Si vous ne souffrez pas d'une charge de serveur élevée, choisissez simplement ce qui correspond le mieux à la conception de votre système.
Solution 2 :
C'est essentiellement un compromis entre performance et flexibilité. Les sockets de domaine Unix vous offriront des performances un peu meilleures, tandis qu'un socket connecté à localhost vous offrira une portabilité un peu meilleure. Vous pouvez facilement déplacer l'application serveur vers un autre système d'exploitation en changeant simplement l'adresse IP de localhost en un nom d'hôte différent.
Un socket de domaine Unix utilise le système de fichiers local pour créer un mécanisme IPC entre les processus serveur et client. Vous verrez un fichier dans /var quelque part lorsque le socket de domaine Unix sera connecté.
Si vous recherchez purement la solution de performance ultime, vous voudrez peut-être explorer un IPC à mémoire partagée. Mais, c'est un peu plus complexe.
Solution 3 :
Avantages des sockets de domaine Unix.
- L'accès peut être géré via le système d'autorisation des utilisateurs Unix, soit en définissant les autorisations sur le socket lui-même, soit en lisant le nom d'utilisateur du client qui se connecte au serveur.
- Moins de risque d'exposer par inadvertance la prise au monde extérieur. Par exemple, si le serveur exécute également un proxy Web, cela peut autoriser par inadvertance les connexions aux sockets sur localhost.
Inconvénients des sockets de domaine Unix
- Non portable sur des systèmes non Unix.
- Peut être gênant avec les chroots, les prisons ou similaires