. NET Remoting - компонент, створений компанією Microsoft. API для між процесами взаємодії. Реалізація від Microsoft протоколу SOAP (веб-сервіси). Випущений в 2002 разом з версією 1.0 пакету . NET Framework. Це одна із серії технологій від Microsoft, розпочатої в 1990 першою версією OLE для 16-розрядної Windows. Проміжними кроками в розробці подібних технологій були COM, випущена в 1993 і допрацьована в 1995 під назвою COM-95, DCOM, випущена в 1997 (і перейменована в ActiveX), і COM + з її Microsoft Transaction Server (MTS), випущена в 2000. [1] В даний момент на зміну. ​​NET Remoting прийшов WCF, що є частиною . NET Framework 3.0.

Так само, як і всі члени даного сімейства і подібні технології, наприклад CORBA і RMI, функція. NET Remoting полягає в наступному: при підтримці з боку інфраструктури. NET Remoting, клієнтський процес відправляє повідомлення серверного процесу і отримує відповідь. [2] [3]


Короткий огляд

. NET Remoting дозволяє додатку створити об'єкт (іменований remotable object) доступний в рамках remoting boundaries і розташований в домені додатку усередині одного процесу, іншому процесі, виконуючий на цьому комп'ютері, або навіть на іншому комп'ютері, з'єднаному мережею. [4] Процес. NET Remoting містить приймач запитів до об'єкта в домені серверного додатка. На стороні клієнта будь-які запити до віддаленого об'єкту направляються середовищем виконання. NET Remoting через об'єкти Channel, що є обгорткою для засобів транспортного рівня, таких як потоки TCP, потоки HTTP і іменовані канали. В результаті, запити до віддалених об'єктів для клієнтського коду нічим не відрізняються від локальних викликів, а створенням екземпляра потрібного Channel -об'єкта, додаток. NET Remoting можна без перекомпіляції перевести на інший комунікаційний протокол. Середа виконання сама по собі виконує етапи серіалізациі і маршалинга об'єктів в середовищі між клієнтським і серверним доменами додатка. [4]

. NET Remoting робить посилання на віддалений (remotable) об'єкт доступною клієнтського додатку, яке потім направляє запити до примірника віддаленого об'єкта так, як якщо б це був локальний об'єкт. [4] Однак, фактичне виконання коду відбувається на серверній стороні. Віддалений об'єкт має ідентифікатори у формі URL активації. Залежно від конфігурації серверного процесу, екземпляр віддаленого об'єкта створюється при підключенні за даними URL, [5] в момент створення посилання на віддалений об'єкт або в момент першого звернення до віддаленого об'єкту. Прослуховує приймач (listener) для об'єкта створюється виконуючою середовищем. NET Remoting в момент, коли сервер реєструє канал, який буде використовуватися для підключення до віддаленого об'єкту. На клієнтській стороні інфраструктура. NET Remoting створює об'єкт-заступник ( proxy), який є псевдоекземпляром замещаемого об'єкта. Він не реалізує функціональність видаленого об'єкту, але надає схожий інтерфейс, перенаправляючи всі запити серверного об'єкту і повертаючи результати від нього клієнтові. Як наслідок, інфраструктурі. NET Remoting для створення заступника потрібно володіти метаданими, що описують публічний інтерфейс віддаленого об'єкта. Це можна забезпечити статичним зв'язуванням зі збіркою, що містить метадані, під час компіляції або динамічним отриманням метаданих у вигляді WSDL або пропрієтарного формату, розробленого фірмою Microsoft.

У процесі виконання запитів будь-які виклики методів, спрямовані об'єкту, включаючи ідентифікатор методу і будь передані параметри, серіалізуются в байтовий потік і передаються за допомогою каналу зв'язку, реалізованого для конкретного протоколу, що приймає проксі-об'єкту на серверній стороні (" маршалізіруются "). Передача відбувається шляхом запису даних в транспортний введення каналу. [5] На серверній стороні проксі читає потік даних з виведення каналу і виконує виклик віддаленого компонента від імені клієнта. Результати серіалізуются і передаються через канал клієнтові, де проксі читає результат і передає його зухвалому додатком. [5] Якщо віддаленого об'єкту потрібно забезпечити зворотний виклик (callback) клієнтського об'єкту, клієнтський об'єкт зворотного виклику повинен бути помічений як remotable, а інфраструктура. NET Remoting повинна бути налаштована на створення прослуховувачі для нього. [5] Сервер може підключитися до нього по іншому каналу, або по вже існуючому, якщо з'єднання, на якому він базується, підтримує двонаправлений обмін даними. [5] Канал може бути складений з декількох канальних об'єктів, можливо, навіть із різними транспортними механізмами. Таким чином, система, заснована на. NET Remoting, може складатися з декількох підсистем, пов'язаних підключеними друг до друга гетерогенними мережами, включаючи Інтернет. [5]


Примітки

  1. Cornella-Dorda, Santiago Component Object Model AND Related Capabilities - www.sei.cmu.edu / str / descriptions / com_body.html. Carnegie-Mellon Software Engineering Institute (13 березня 2001). Читальний - web.archive.org/web/20080515233825/http :/ / www.sei.cmu.edu / str / descriptions / com_body.html з першоджерела 15 травня 2008.
  2. Scott McLean, James Naftel and Kim Williams Microsoft. NET Remoting. - Microsoft Press, 2002.
  3. Ingo Rammer and Mario Szpuszta Advanced. NET Remoting. - Apress, 2005.
  4. 1 2 3 . NET Remoting Overview - msdn2.microsoft.com/en-us/library/kwdt6w2k (VS.71). aspx. Читальний - www.webcitation.org/65bQiE1qE з першоджерела 21 лютого 2012.
  5. 1 2 3 4 5 6 . NET Remoting Architecture - msdn2.microsoft.com/en-us/library/2e7z38xb (VS.71). aspx. Читальний - www.webcitation.org/65bQirRzb з першоджерела 21 лютого 2012.
Перегляд цього шаблону . NET Framework
Архітектура Base Class Library Common Language Infrastructure . NET Assembly метадані COM Interop
Інфраструктура Common Language Runtime Common Type System Common Intermediate Language Virtual Execution System Dynamic Language Runtime
Мови Microsoft C # Visual Basic. NET C + + / CLI ( Managed) Visual J # JScript. NET Windows PowerShell IronPython IronRuby F # Spec # Sing #
Інші мови A # Boo IronLisp L # Nemerle P # PascalABC.NET PHP Scala Delphi Prism
Windows Foundations Presentation Communication Workflow
Компоненти ADO.NET ( Entity Framework Data Services) ASP.NET ( AJAX MVC Dynamic Data) . NET Remoting Language Integrated Query Windows CardSpace Windows Forms XAML ClickOnce Dynamic Language Runtime Parallel FX Library (PLINQ TPL)
Реалізації DotGNU Mono . NET Compact Framework ( Xbox 360) . NET Micro Framework Portable.NET XNA Framework Silverlight Shared Source Common Language Infrastructure
Порівняння C # і Java C # і Visual Basic. NET
Майбутні технології Acropolis Jasper
Перегляд цього шаблону Програмні інтерфейси і фреймворки Microsoft Windows
Графіка Провідник Windows DirectX Direct3D GDI Windows Presentation Foundation Windows Color System Windows Image Acquisition Windows Imaging Component
Звук DirectSound DirectMusic XACT Speech API MME
Мультимедіа DirectShow Windows Media Media Foundation
Веб MSHTML MSXML Платформа RSS для Windows JScript ActiveX XMLHttpRequest Гаджети
Доступ до даних Компоненти Microsoft Data Access Extensible Storage Engine ADO.NET Sync Framework Jet-механізм
Мережі Winsock ( LSP) Filtering Platform NDIS Windows Rally Сервіс фонової інтелектуалів передачі даних P2P API
Комунікації TAPI
Адміністрування Консоль Win32 Windows Script Host Інструментарій управління Windows PowerShell Планувальник завдань Offline Files Тіньове копіювання Windows Installer Диспетчер помилок Windows Журнал подій Windows
Модель компонентів COM COM + DCOM . NET Framework
Бібліотеки Microsoft Foundation Classes (MFC) Active Template Library (ATL) Windows Template Library (WTL) Base Class Library (BCL)
Розробка драйверів Windows Driver Model Windows Driver Foundation (KMDF UMDF)
Безпека CryptoAPI ( CAPICOM) Windows CardSpace Data Protection API Security Support Provider Interface
. NET . NET Framework ASP.NET ADO.NET . NET Remoting Windows Presentation Foundation Windows Workflow Foundation Windows Communication Foundation Windows CardSpace XNA Framework Silverlight Бібліотека паралельного програмування
Межпроцессное
взаємодія
Dynamic Data Exchange (DDE) MSRPC Іменовані канали
Текст і
підтримка мов
Framework Текстових сервісів Об'єктна модель текстів Редактор методу введення Мовні пакети Багатомовний інтерфейс
Ігри XNA Framework DirectX
Перегляд цього шаблону API і фреймворки Microsoft
Графіка Desktop Window Manager Direct2D Direct3D (extensions) GDI / GDI + WPF Windows Color System Windows Image Acquisition Windows Imaging Component
Аудіо DirectMusic DirectSound DirectX plugin XACT Speech API XAudio2
Мультимедіа DirectX (Media Objects Video Acceleration) DirectInput DirectShow Image Mastering API Managed DirectX Media Foundation XNA Windows Media Video for Windows
Web MSHTML RSS Platform JScript VBScript BHO XDR SideBar Gadgets
Доступ до даних Data Access Components Extensible Storage Engine ADO.NET ADO.NET Entity Framework Sync Framework Jet Engine MSXML OLE DB OPC
Мережа Winsock ( LSP) Winsock Kernel Filtering Platform Network Driver Interface Specification Windows Rally BITS P2P API MSMQ MS MPI DirectPlay
Комунікації Messaging API Telephony API WCF
Win32 console Windows Script Host WMI (extensions) PowerShell Task Scheduler Offline Files Shadow Copy Windows Installer Error Reporting Event Log Common Log File System
Компонентна модель COM COM + ActiveX Distributed Component Object Model . NET Framework
Бібліотеки Base Class Library (BCL) Microsoft Foundation Classes (MFC) Active Template Library (ATL) Windows Template Library (WTL)
Драйвери пристроїв Windows Driver Model Windows Driver Foundation (KMDF UMDF) WDDM NDIS UAA Broadcast Driver Architecture VxD
Безпека Crypto API ( CAPICOM) Windows CardSpace Data Protection API Security Support Provider Interface (SSPI)
. NET ASP.NET ADO.NET Base Class Library (BCL) Remoting Silverlight TPL WCF WCS WPF WF
Програмне забезпечення EFx Factory Enterprise Library Composite UI CCF CSF
IPC MSRPC Dynamic Data Exchange (DDE) Remoting WCF
Доступність Active Accessibility UI Automation
Текст і многоязная
підтримка
DirectWrite Text Services Framework Text Object Model Input method editor Language Interface Pack Multilingual User Interface Uniscribe