Чи повинен я використовувати Named Pipes або .NET Remoting для зв'язку з запущеним процесом на моїй машині?
Чи повинен я використовувати Named Pipes або .NET Remoting для зв'язку з запущеним процесом на моїй машині?
Відповіді:
WCF - найкращий вибір. Він підтримує низку різних транспортних механізмів ( включаючи іменовані труби ) і може повністю керуватися конфігурацією. Я настійно рекомендую вам поглянути на WCF.
Ось блог, в якому проводиться порівняння продуктивності WCF проти віддаленого .
Цитата з блогу:
Віддалення WCF та .NET дійсно є порівнянними за продуктивністю. Відмінності настільки малі (вимірювання затримки клієнта), що не має значення, який з них трохи швидший. Хоча WCF має набагато кращу пропускну здатність сервера, ніж віддалене .NET. Якби я розпочав абсолютно новий проект, то обрав би WCF. У будь-якому випадку WCF робить набагато більше, ніж віддалення, і для всіх цих функцій я люблю це.
Якщо це на одній машині, Named Pipes забезпечує кращу продуктивність і може бути реалізований за допомогою віддаленої інфраструктури , а також WCF. Або ви можете просто використовувати System.IO.Pipes .
Якщо ви маєте на увазі міжпроцесний зв’язок, я поки що без проблем використовував .NET Remoting. Якщо два процеси на одній машині, зв’язок відбувається досить швидко.
Іменовані труби, безумовно, ефективніші, але вони вимагають розробки принаймні базового протоколу програми, що може бути недоцільним. Віддалення дозволяє легко викликати віддалені методи.
Якщо ви використовуєте .NET Framework 3.0 або новішої версії, я б використовував WCF. Використовуючи WCF, ви можете використовувати різні прив'язки залежно від компромісу між продуктивністю / взаємодією / тощо. що вам потрібно.
Якщо продуктивність не є критичною, і вам потрібна взаємодія з іншими технологіями веб-служб, ви захочете використовувати прив'язку WS-HTTP. Для вашого випадку ви можете використовувати WCF або з прив'язкою net-tcp, або з прив'язкою до іменованої труби. Або має працювати.
Я особисто вважаю, що підхід WCF є більш чистим, оскільки ви можете робити послуги, керовані контрактом, і зосереджуватись на повідомленнях, а не на об'єктах (я роблю узагальнення тут на основі стандартних моделей програмування WCF / .NET Remoting). Мені не подобається надсилати об'єкти по дроту, тому що багато семантичної інформації втрачається або незрозуміло. Коли все, що ви робите - це надсилання повідомлення, як у WCF, стає простіше розділити свої проблеми між зв'язком та класами / інфраструктурою, з яких складається один вузол.
WCF також забезпечує гнучкість. Просто змінивши деяку конфігурацію (прив'язку), ви можете мати ту саму службу на якійсь іншій машині замість IPC на тій самій машині. Тому ваш код залишається гнучким.
. Net віддалення не є протоколом сам по собі. Це дозволяє вибрати, який протокол використовувати: SOAP, named-pipe тощо.
Віддалене управління .net вбудоване в .net для внутрішнього обміну інформацією. Якщо ви використовуєте це, вони продовжуватимуть підтримувати та, можливо, вдосконалювати його в наступних версіях. Іменовані канали не дають вам обіцянок вдосконалення в майбутніх версіях .net