.NET Remoting

Поделись знанием:
Перейти к: навигация, поиск

.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]

Напишите отзыв о статье ".NET Remoting"

Примечания

  1. Cornella-Dorda, Santiago. [www.sei.cmu.edu/str/descriptions/com_body.html Component Object Model and Related Capabilities]. Carnegie-Mellon Software Engineering Institute (13 марта 2001). [web.archive.org/web/20080515233825/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 [msdn2.microsoft.com/en-us/library/kwdt6w2k(VS.71).aspx .NET Remoting Overview]. Проверено 23 октября 2007. [www.webcitation.org/65bQiE1qE Архивировано из первоисточника 21 февраля 2012].
  5. 1 2 3 4 5 6 [msdn2.microsoft.com/en-us/library/2e7z38xb(VS.71).aspx .NET Remoting Architecture]. Проверено 23 октября 2007. [www.webcitation.org/65bQirRzb Архивировано из первоисточника 21 февраля 2012].


Отрывок, характеризующий .NET Remoting

– «Господи боже сил, боже спасения нашего, – начал священник тем ясным, ненапыщенным и кротким голосом, которым читают только одни духовные славянские чтецы и который так неотразимо действует на русское сердце. – Господи боже сил, боже спасения нашего! Призри ныне в милости и щедротах на смиренные люди твоя, и человеколюбно услыши, и пощади, и помилуй нас. Се враг смущаяй землю твою и хотяй положити вселенную всю пусту, восста на ны; се людие беззаконии собрашася, еже погубити достояние твое, разорити честный Иерусалим твой, возлюбленную тебе Россию: осквернити храмы твои, раскопати алтари и поругатися святыне нашей. Доколе, господи, доколе грешницы восхвалятся? Доколе употребляти имать законопреступный власть?
Владыко господи! Услыши нас, молящихся тебе: укрепи силою твоею благочестивейшего, самодержавнейшего великого государя нашего императора Александра Павловича; помяни правду его и кротость, воздаждь ему по благости его, ею же хранит ны, твой возлюбленный Израиль. Благослови его советы, начинания и дела; утверди всемогущною твоею десницею царство его и подаждь ему победу на врага, яко же Моисею на Амалика, Гедеону на Мадиама и Давиду на Голиафа. Сохрани воинство его; положи лук медян мышцам, во имя твое ополчившихся, и препояши их силою на брань. Приими оружие и щит, и восстани в помощь нашу, да постыдятся и посрамятся мыслящий нам злая, да будут пред лицем верного ти воинства, яко прах пред лицем ветра, и ангел твой сильный да будет оскорбляяй и погоняяй их; да приидет им сеть, юже не сведают, и их ловитва, юже сокрыша, да обымет их; да падут под ногами рабов твоих и в попрание воем нашим да будут. Господи! не изнеможет у тебе спасати во многих и в малых; ты еси бог, да не превозможет противу тебе человек.
Боже отец наших! Помяни щедроты твоя и милости, яже от века суть: не отвержи нас от лица твоего, ниже возгнушайся недостоинством нашим, но помилуй нас по велицей милости твоей и по множеству щедрот твоих презри беззакония и грехи наша. Сердце чисто созижди в нас, и дух прав обнови во утробе нашей; всех нас укрепи верою в тя, утверди надеждою, одушеви истинною друг ко другу любовию, вооружи единодушием на праведное защищение одержания, еже дал еси нам и отцем нашим, да не вознесется жезл нечестивых на жребий освященных.
Господи боже наш, в него же веруем и на него же уповаем, не посрами нас от чаяния милости твоея и сотвори знамение во благо, яко да видят ненавидящий нас и православную веру нашу, и посрамятся и погибнут; и да уведят все страны, яко имя тебе господь, и мы людие твои. Яви нам, господи, ныне милость твою и спасение твое даждь нам; возвесели сердце рабов твоих о милости твоей; порази враги наши, и сокруши их под ноги верных твоих вскоре. Ты бо еси заступление, помощь и победа уповающим на тя, и тебе славу воссылаем, отцу и сыну и святому духу и ныне, и присно, и во веки веков. Аминь».
В том состоянии раскрытости душевной, в котором находилась Наташа, эта молитва сильно подействовала на нее. Она слушала каждое слово о победе Моисея на Амалика, и Гедеона на Мадиама, и Давида на Голиафа, и о разорении Иерусалима твоего и просила бога с той нежностью и размягченностью, которою было переполнено ее сердце; но не понимала хорошенько, о чем она просила бога в этой молитве. Она всей душой участвовала в прошении о духе правом, об укреплении сердца верою, надеждою и о воодушевлении их любовью. Но она не могла молиться о попрании под ноги врагов своих, когда она за несколько минут перед этим только желала иметь их больше, чтобы любить их, молиться за них. Но она тоже не могла сомневаться в правоте читаемой колено преклонной молитвы. Она ощущала в душе своей благоговейный и трепетный ужас перед наказанием, постигшим людей за их грехи, и в особенности за свои грехи, и просила бога о том, чтобы он простил их всех и ее и дал бы им всем и ей спокойствия и счастия в жизни. И ей казалось, что бог слышит ее молитву.


С того дня, как Пьер, уезжая от Ростовых и вспоминая благодарный взгляд Наташи, смотрел на комету, стоявшую на небе, и почувствовал, что для него открылось что то новое, – вечно мучивший его вопрос о тщете и безумности всего земного перестал представляться ему. Этот страшный вопрос: зачем? к чему? – который прежде представлялся ему в середине всякого занятия, теперь заменился для него не другим вопросом и не ответом на прежний вопрос, а представлением ее. Слышал ли он, и сам ли вел ничтожные разговоры, читал ли он, или узнавал про подлость и бессмысленность людскую, он не ужасался, как прежде; не спрашивал себя, из чего хлопочут люди, когда все так кратко и неизвестно, но вспоминал ее в том виде, в котором он видел ее в последний раз, и все сомнения его исчезали, не потому, что она отвечала на вопросы, которые представлялись ему, но потому, что представление о ней переносило его мгновенно в другую, светлую область душевной деятельности, в которой не могло быть правого или виноватого, в область красоты и любви, для которой стоило жить. Какая бы мерзость житейская ни представлялась ему, он говорил себе:
«Ну и пускай такой то обокрал государство и царя, а государство и царь воздают ему почести; а она вчера улыбнулась мне и просила приехать, и я люблю ее, и никто никогда не узнает этого», – думал он.
Пьер все так же ездил в общество, так же много пил и вел ту же праздную и рассеянную жизнь, потому что, кроме тех часов, которые он проводил у Ростовых, надо было проводить и остальное время, и привычки и знакомства, сделанные им в Москве, непреодолимо влекли его к той жизни, которая захватила его. Но в последнее время, когда с театра войны приходили все более и более тревожные слухи и когда здоровье Наташи стало поправляться и она перестала возбуждать в нем прежнее чувство бережливой жалости, им стало овладевать более и более непонятное для него беспокойство. Он чувствовал, что то положение, в котором он находился, не могло продолжаться долго, что наступает катастрофа, долженствующая изменить всю его жизнь, и с нетерпением отыскивал во всем признаки этой приближающейся катастрофы. Пьеру было открыто одним из братьев масонов следующее, выведенное из Апокалипсиса Иоанна Богослова, пророчество относительно Наполеона.