Windows - статьи

Remoting - объект


Любой remoting-объект  должен быть реализован на управляемом коде, поэтому создадим в VS новый проект типа «CLR Class library для С++» и назовем его, например, Rmt_obj.

В старой бизнес-логике рассматриваемого примера имеется два метода, и  для каждого из них  в remoting-объекте должны быть объявлены по одному

  • delegate,
  • event,
  • методу, использующему событие (доступен remoting-клиенту).

    Кроме того, класс   remoting-объекта должен быть наследником MarshalByRefObject, что указывается в его описании.

    Таким образом, получается следующий код на C++/CLI для  remoting-объекта рассматриваемого примера:

    // Rmt_obj.h //объект REMOTING   #pragma once using namespace System;   namespace Rmt_obj {           public ref class CRmtngObj : MarshalByRefObject         {         public:            // Для метода method_PutStr.                 delegate void dlg_method_PutStr(String^ str);                 event dlg_method_PutStr^ ev_method_PutStr;                 void mtd_method_PutStr(String^ str);              // Для метода method_GetStr.                 delegate String^ dlg_method_GetStr();                 event dlg_method_GetStr^ ev_method_GetStr;                 String^ mtd_method_GetStr();         }; }

    // Rmt_obj.cpp //объект REMOTING   // This is the main DLL file.   #include "stdafx.h" #using <mscorlib.dll> #include "Rmt_obj.h"   namespace Rmt_obj {       //Для метода method_PutStr         void CRmtngObj::mtd_method_PutStr(String^ str)         {                 ev_method_PutStr(str);         }         // Для метода method_GetStr         String^ CRmtngObj:: mtd_method_GetStr()         {                 return ev_method_GetStr();         } }

    Приведенный код может быть скомпилирован в Rmt_Obj.dll - объект remoting.



    Содержание раздела