Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КОП-Примеры / УдалОбъект

.doc
Скачиваний:
20
Добавлен:
12.03.2015
Размер:
100.86 Кб
Скачать

Пример 13.1. Удалённый объект.

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

// C# File csRemOb

using System;

namespace csRemObj

{

public interface IRemObj

{

int GetAdd (int par);

}

public class RemObj : MarshalByRefObject, IRemObj

{

private int n= 0;

public RemObj ( )

{

Console.WriteLine ("Constructor");

}

public int GetAdd (int par)

{

n++;

Console.WriteLine ("\nGetAdd n= " + n

+ " par= " + par + " return " + (n + par));

return n + par;

}

}

}

Пример 13.2. Серверная активизация удалённого объекта разновидности Singleton. Сервер использует RemotingConfiguration.Register-

Well KnownServiceType().

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

// C# File csServer_Singleton

// Подключить (AddReferance) библиотеку System.Runtime.Remoting.dll.

// Подключить (AddReferance) библиотеку csRemObj.dll.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using csRemObj;

namespace csServer_Singleton

{

class RemObjServer

{

static void Main (string[] args)

{

HttpChannel httpChannel= new HttpChannel (8080);

ChannelServices.RegisterChannel (httpChannel, false);

RemotingConfiguration.RegisterWellKnownServiceType (

typeof (csRemObj_Dll_a.RemObj),

"RemoteObject",

WellKnownObjectMode.Singleton);

System.Console.WriteLine ("Wait to exit");

System.Console.ReadLine ( );

}

}

}

Пример 13.3. Серверная активизация удалённого объекта разновидности SingleCall. Сервер использует RemotingConfiguration.RegisterWellKnownServiceType().

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

// C# File csServer_SingleCall

// Подключить (AddReferance) библиотеку System.Runtime.Remoting.dll.

// Подключить (AddReferance) библиотеку csRemObj.dll.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using csRemObj;

namespace csServer_SingleCall

{

class RemObjServer

{

static void Main (string[] args)

{

HttpChannel httpChannel= new HttpChannel (8080);

ChannelServices.RegisterChannel (httpChannel);

RemotingConfiguration.RegisterWellKnownServiceType (

typeof (csRemObj_Dll_a.RemObj),

"RemoteObject",

WellKnownObjectMode.SingleCall);

System.Console.WriteLine ("Wait to exit");

System.Console.ReadLine ( );

}

}

}

Пример 13.4. Серверная активизация удалённого объекта разновидности Singleton. Клиент использует Activator.GetObject().

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

// C# File csRemObj

// Файл используемого удалённого объекта из примера 13.1.

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

// C# File csServer_Singleton

// Файл используемого сервера из примера 13.2.

// Результат выполнения сервера csServer_Singleton

// совместно с клиентом csClient_ Singleton

/*

Result:

Wait to exit

Constructor

GetAdd n= 1 par= 5 return 6

GetAdd n= 2 par= 10 return 12

*/

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

// C# File csClien

// Подсоединить (AddReference) библиотеку System.Runtime.Remoting.dll и

// подсоединить библиотеку csRemObj.dll.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using csRemObj;

namespace csClient_Singleton

{

class RemObjClient

{

static void Main (string[] args)

{

RemObj objServ;

HttpChannel httpChannel= new HttpChannel (0);

ChannelServices.RegisterChannel (httpChannel, false);

objServ= (RemObj) Activator.GetObject (

typeof (RemObj),

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

Console.WriteLine ("результат objServ.GetAdd (5))= " +

objServ.GetAdd (5));

Console.WriteLine ("результат objServ.GetAdd (10))= " +

objServ.GetAdd (10));

Console.WriteLine ("Press ENTER to exit");

Console.ReadLine ( );

}

}

}

Пример 13.5. Серверная активизация удалённого объекта разновидности SingleCall. Клиент использует Activator.GetObject().

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

// C# File csRemObj

// Файл используемого удалённого объекта из примера 13.1.

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

// C# File csServer_SingleCall

// Файл используемого сервера из примера 13.3.

// Результат выполнения сервера csServer_SingleCall совместно

// с клиентом csClientl

/*

Result:

Wait to exit

Constructor

Constructor

GetAdd n= 1 par= 5 return 6

Constructor

GetAdd n= 1 par= 10 return 11

*/

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

// C# File csClient

// Файл используемого клиента из примера 13.4.

// Результат выполнения клиента csClient совместно с сервером

// csServer_SingleCall

/*

Result:

результат objServ.GetAdd (5) = 6

результат objServ.GetAdd (10)= 11

Press ENTER to exit

*/

Пример 13.6. Серверная активизация удалённого объекта разновидности Singleton. Клиент использует RemotingServices.Connect().

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

// C# File csRemObj

// Файл используемого удалённого объекта из примера 13.1.

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

// C# File csServer_Singleton

// Файл используемого сервера из примера 13.2.

// Результат выполнения сервера csServer_Singleton совместно

// с клиентом csClient_Connect

/*

Result:

Wait to exit

Constructor

GetAdd n= 1 par= 5 return 6

GetAdd n= 2 par= 10 return 12

*/

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

// C# File csClient_Connect

// Подсоединить (AddReference) библиотеку System.Runtime.Remoting.dll и

// подсоединить библиотеку csRemObj.dll.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using csRemObj;

namespace csClient_Connect

{

class RemObjClient

{

static void Main (string[] args)

{

HttpChannel httpChannel= new HttpChannel (0);

ChannelServices.RegisterChannel (httpChannel, false);

RemObj objServ= (RemObj) RemotingServices.Connect

(typeof (csRemObj.IRemObj),

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

Console.WriteLine ("результат objServ.GetAdd (5))= " +

objServ.GetAdd (5));

Console.WriteLine ("результат objServ.GetAdd(10))= " +

objServ.GetAdd (10));

Console.WriteLine ("Press ENTER to exit");

Console.ReadLine ( );

}

}

}

Пример 13.7. Серверная активизация удалённого объекта разновидности SingleCall. Клиент использует RemotingServices.Connect().

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

// C# File csRemObj

// Файл используемого удалённого объекта из примера 13.1.

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

// C# File csServer_SingleCall

// Файл используемого сервера из примера 13.3.

// Результат выполнения сервера csServer_SingleCall совместно

// с клиентом csClient

/*

Result:

Wait to exit

Constructor

Constructor

GetAdd n= 1 par= 5 return 6

Constructor

GetAdd n= 1 par= 10 return 11

*/

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

// C# File csClient_Connect

// Файл используемого клиента из примера 13.6.

// Результат выполнения клиента csClient_Connect совместно с сервером

// csServer_SingleCall

Пример 13.8. Клиентская активизация удалённого объекта. Клиент использует RemotingConfiguration.RegisterActivatedClientType().

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

// C# File csRemObj

// Файл используемого удалённого объекта из примера 13.1.

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

// C# File cs_Server_CA

// Подключить (AddReferance) библиотеку System.Runtime.Remoting.dll.

// Подключить (AddReferance) библиотеку csRemObj.dll.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using csRemObj;

namespace csServer_CA

{

class RemObjServer

{

static void Main (string[] args)

{

HttpChannel httpChannel= new HttpChannel (8080);

ChannelServices.RegisterChannel (httpChannel, false);

RemotingConfiguration.ApplicationName="RemoteObject";

Type remType= typeof (RemObj);

RemotingConfiguration.RegisterActivatedServiceType (remType);

System.Console.WriteLine ("Wait to exit");

System.Console.ReadLine ( );

}

}

}

// Результат выполнения сервера csServer_CA совместно

// с клиентом cClient_CA

/*

Result:

Wait to exit

Constructor

GetAdd n= 1 par= 5 return 6

GetAdd n= 2 par= 10 return 12

*/

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

// C# File csClient_CA

// Подсоединить (AddReference) библиотеку System.Runtime.Remoting.dll и

// подсоединить библиотеку csRemObj.dll.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Activation;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using csRemObj;

namespace csClient_CA

{

class RemObjClient

{

static void Main (string[] args)

{

HttpChannel httpChannel= new HttpChannel (0);

ChannelServices.RegisterChannel (httpChannel, false);

RemotingConfiguration.RegisterActivatedClientType (

typeof (csRemObj_Dll_a.RemObj),

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

RemObj objServ= new RemObj ( );

Console.WriteLine ("результат objServ.GetAdd (5))= " +

objServ.GetAdd (5));

Console.WriteLine ("результат objServ.GetAdd (10))= " +

objServ.GetAdd (10));

Console.WriteLine ("Press ENTER to exit");

Console.ReadLine ( );

}

}

}

Пример 13.9. Клиентская активизация удалённого объекта. Клиент использует Activator.CreateInstance().

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

// C# File csRemObj

// Файл используемого удалённого объекта из примера 13.1.

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

// C# File csServer_CA

// Файл используемого сервера csServer_CA из примера 13.8(13.6.1).

// Результат выполнения сервера csServer_CA совместно

// с клиентом csClient_CI

/*

Result:

Wait to exit

Constructor

GetAdd n= 1 par= 5 return 6

GetAdd n= 2 par= 10 return 12

*/

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

// C# File csClient_CI

// Подсоединить (AddReference) библиотеку System.Runtime.Remoting.dll и

// подсоединить библиотеку csRemObj.dll.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Activation;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using System.Security.Permissions;

using csRemObj;

namespace csClient_CI

{

class RemObjClient

{

static void Main(string[] args)

{

HttpChannel httpChannel= new HttpChannel (0);

ChannelServices.RegisterChannel (httpChannel, false);

object [] attrs={new UrlAttribute

("http://localhost:8080/RemoteObject")};

ObjectHandle oh= Activator.CreateInstance (

"csRemObj",

"csRemObj.RemObj",

attrs);

RemObj objServ= (RemObj) oh.Unwrap ( );

Console.WriteLine ("результат objServ.GetAdd (5))= " +

objServ.GetAdd (5));

Console.WriteLine ("результат objServ.GetAdd (10))= " +

objServ.GetAdd (10));

Console.WriteLine ("Press ENTER to exit");

Console.ReadLine ( );

}

}

}

Соседние файлы в папке КОП-Примеры