Що є найкращим вибором для взаємодії між процесами .NET? [зачинено]


83

Чи повинен я використовувати Named Pipes або .NET Remoting для зв'язку з запущеним процесом на моїй машині?


1
Ого, я просто в основному задав те саме питання ... stackoverflow.com/questions/84860/…
Kris Erickson,

Відповіді:


58

WCF - найкращий вибір. Він підтримує низку різних транспортних механізмів ( включаючи іменовані труби ) і може повністю керуватися конфігурацією. Я настійно рекомендую вам поглянути на WCF.

Ось блог, в якому проводиться порівняння продуктивності WCF проти віддаленого .

Цитата з блогу:

Віддалення WCF та .NET дійсно є порівнянними за продуктивністю. Відмінності настільки малі (вимірювання затримки клієнта), що не має значення, який з них трохи швидший. Хоча WCF має набагато кращу пропускну здатність сервера, ніж віддалене .NET. Якби я розпочав абсолютно новий проект, то обрав би WCF. У будь-якому випадку WCF робить набагато більше, ніж віддалення, і для всіх цих функцій я люблю це.

Розділ MSDN для WCF


1
Подальші докази на користь віддалення. Від когось із команди Microsoft Remoting / WCF: "На Remoting вкладається дуже мало інвестицій. WCF є наступником Remoting". Звідси stackoverflow.com/questions/1294494 / ...
MarkJ


5

Якщо ви маєте на увазі міжпроцесний зв’язок, я поки що без проблем використовував .NET Remoting. Якщо два процеси на одній машині, зв’язок відбувається досить швидко.

Іменовані труби, безумовно, ефективніші, але вони вимагають розробки принаймні базового протоколу програми, що може бути недоцільним. Віддалення дозволяє легко викликати віддалені методи.


3
WCF над названими трубами це теж дозволяє. І ви можете просто використовувати однакові збірки контрактів в обох процесах.
Кент Бугаарт,

3

Віддалення в .NET Framework 2.0 забезпечує канал IPC для міжпроцесорного зв'язку в межах однієї машини.


3

Якщо ви використовуєте .NET Framework 3.0 або новішої версії, я б використовував WCF. Використовуючи WCF, ви можете використовувати різні прив'язки залежно від компромісу між продуктивністю / взаємодією / тощо. що вам потрібно.

Якщо продуктивність не є критичною, і вам потрібна взаємодія з іншими технологіями веб-служб, ви захочете використовувати прив'язку WS-HTTP. Для вашого випадку ви можете використовувати WCF або з прив'язкою net-tcp, або з прив'язкою до іменованої труби. Або має працювати.

Я особисто вважаю, що підхід WCF є більш чистим, оскільки ви можете робити послуги, керовані контрактом, і зосереджуватись на повідомленнях, а не на об'єктах (я роблю узагальнення тут на основі стандартних моделей програмування WCF / .NET Remoting). Мені не подобається надсилати об'єкти по дроту, тому що багато семантичної інформації втрачається або незрозуміло. Коли все, що ви робите - це надсилання повідомлення, як у WCF, стає простіше розділити свої проблеми між зв'язком та класами / інфраструктурою, з яких складається один вузол.


2

WCF також забезпечує гнучкість. Просто змінивши деяку конфігурацію (прив'язку), ви можете мати ту саму службу на якійсь іншій машині замість IPC на тій самій машині. Тому ваш код залишається гнучким.



1

. Net віддалення не є протоколом сам по собі. Це дозволяє вибрати, який протокол використовувати: SOAP, named-pipe тощо.


0

Віддалене управління .net вбудоване в .net для внутрішнього обміну інформацією. Якщо ви використовуєте це, вони продовжуватимуть підтримувати та, можливо, вдосконалювати його в наступних версіях. Іменовані канали не дають вам обіцянок вдосконалення в майбутніх версіях .net


2
Навряд чи вони покращать віддалення. Від когось із команди віддалених / WCF: "На Remoting витрачається дуже мало інвестицій. WCF є наступником Remoting". Звідси stackoverflow.com/questions/1294494 / ...
MarkJ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.