Именованные каналы или TCP для связи клиент / сервер - PullRequest
5 голосов
/ 04 октября 2011

Мое приложение поддерживает несколько экземпляров одного и того же процесса сервера (службы Windows), как, например, f.e. SQL Server.

Обмен данными между клиентом и сервером будет происходить только в одной сети.

Я могу использовать TCP, но затем мне нужно настроить отдельные IP-порты для каждого экземпляра сервера. Однако я могу просто использовать именованные каналы, поэтому мне не нужно думать о номерах портов и просто использовать имя экземпляра сервера.

Не будет очень частой и / или большой передачи данных клиент / сервер. Это своего рода ERP-приложение, которое будет общаться в среднем раз в 30 секунд.

Кроме того, я хочу предотвратить любое взаимодействие клиент / сервер вне сети (интрасети).

Какой здесь мудрый выбор?

Обновление: и клиент, и сервер написаны с использованием .NET 4, и никакие сторонние клиенты не смогут использовать сервер.

Ответы [ 2 ]

4 голосов
/ 04 октября 2011

Я использую именованные каналы .net 4.0 ( System.IO.Pipes ) в нескольких моих личных проектах, и с ними приятно работать. Вы можете использовать именованные каналы во всей интрасети и очень эффективно, поэтому мой личный совет - использовать именованные каналы.

Также клиенты именованных каналов .net 4.0 используют базовый WinAPI, так что вы также можете общаться с собственными приложениями из приложения .NET.

2 голосов
/ 04 октября 2011

Это будет зависеть от технологии клиента.

Если сервер и клиент заполнены .NET Framework, именованные каналы звучат нормально.

Но если некоторые из клиентов могут быть чем-то, что не является .NET Framework (веб-клиент, Silverlight или что-то в этом роде), именованные каналы будет лишним страданием, поскольку не все клиентские технологии имеют какой-либо вид сетевое подключение или готовый API для любых действий.

Резюме:

  • Используйте именованные каналы, если клиент и сервер используют .NET Framework, и так будет всегда, и не планируется реализовывать что-либо отличное от этого сценария.

  • Используйте TCP, если вы хотите, чтобы ваш сервер мог взаимодействовать с любым видом клиентской технологии.

В любом случае, вы собираетесь делать это с WCF? Возможно, использование TCP или именованных каналов может быть просто вопросом конфигурации. Проверьте эту статью MSDN:

...