Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3rd_lecture.doc
Скачиваний:
6
Добавлен:
26.11.2018
Размер:
329.73 Кб
Скачать

2 Разработка многокомпонентной программы с удалённым объектом Удалённый объект – форма

Компонент csComp (SqwComp), удал.объект csServer (Server), сервер(SqwServer), клиент (SqwMain)

Компонент

// C# File csSqw_Dll_Comp_7

using . . .

namespace csComp

{

// Класс компонента

public class SqwComp: Component

{

. . .

// Конструктор

public SqwComp (int NumComp, Point Pnt)

{ . . . }

// Свойство Number

public int Number

{ . . .}

// Свойство Point

public Point Point

{. . .}

}

}

Удалённый объект- форма

/////////////////////////

// C# File csSqw_Dll_7 Удалённый объект

// Подсоединить (Project/AddReference) csSqw_RemObject_Dll_4.dll

// Подсоединить (Project/AddReference) System.Runtime.Remoting.dll

// Подсоединить (Project/AddReference) csSqw_Dll_4.dll

using . . .

using csComp;

namespace csServer

{

// Класс формы - удалённого объекта, содержащей контейнер компонентов.

// В области клиента этой формы отображаются компоненты

public class Server: Form

{

. . .

public SqwComp cs; // Ссылка на компонент

public Container components = null;

// Конструктор

public Server( )

{

components= new Container ( );

. . .

}

// Создать компонент и добавить его в контейнер

public virtual void CreateAdd ( )

{

. . .

SqwComp cmpnt= new SqwComp (numCompnts, point);

components.Add (cmpnt);

Invalidate ( );

}

. . .

// Перерисовать область клиента прикладного окна сервера

protected override void OnPaint (PaintEventArgs e)

{ . . .}

}

}

Сервер

/////////////////////////

// C# File csSqw_Server_7 Сервер

// Подсоединить (Project/AddReference) csSqw__Dll_7.dll

// Подсоединить (Project/AddReference) System.Runtime.Remoting.dll

using . . .

using csServer;

public class SqwServer

{

static void Main ( )

{

Server serv= new Server();

HttpChannel httpChannel;

try

{

httpChannel= new HttpChannel (8080);

ChannelServices.RegisterChannel (httpChannel);

}

catch(Exception e)

{

Console.WriteLine(e.Message);

return;

}

RemotingServices.Marshal (serv, "RemoteServer");

Application.Run(serv);

}

}

Клиент

/////////////////////////

// C# File csSqw_Client_7 Клиент

// Подсоединить (Project/AddReference) csSqw_Dll_7.dll

// Подсоединить (Project/AddReference) csSqw_Dll_Comp_7.dll

// Подсоединить (Project/AddReference) System.Runtime.Remoting.dll

using . . .

using csComp;

using csServer;

public class SqwMain : System.Windows.Forms.Form

{

private csServer.Server serv;

private Button butAdd;

. . .

// Конструктор

public SqwMain ( )

{

butAdd= new Button ( );

butAdd.Click+= new EventHandler (ClickButAdd);

. . .

/////////////////////////////////////////////

HttpChannel httpChannel= new HttpChannel (0);

ChannelServices.RegisterChannel (httpChannel);

serv= (csServer.Server) Activator.GetObject(

typeof (csServer.Server),

"http://localhost:8080/RemoteServer");

}

// Обработчик кнопки

void ClickButAdd (object o, EventArgs e)

{

. . .

serv.CreateAdd ( );

. . .

}

. . .

// Главная функция клиента

static void Main ( )

{

SqwMain sqwMain= new SqwMain ( );

Application.Run(sqwMain);

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]