您的位置:建站学院首页 >> 文章 >> asp.net >> .NET概论及软件使用
namespace myRemoteService
{
// 有名的 Web 服务对象
public class myRemoteObject : MarshalByRefObject
{
// myRemoteMethod 方法
public String myRemoteMethod(String s)
{
return "Hello World";
}
}
}
访问此对象的客户端代码示例
using System;
using System.Runtime.Remoting;
using myRemoteService;
public class Client
{
public static int Main(string[] args)
{
ChannelServices.RegisterChannel(new HTTPChannel(7055));
// 创建 myRemoteObject 类的实例
myRemoteObject myObj = ( myRemoteObject)Activator.GetObject(typeof(myRemoteObject),
"http://myHost:7021/host/myRemoteObject.soap");
myObj. myRemoteMethod ("Hello World");
return 0;
}
}
租用生存期
对于那些具有在应用程序之外传送的对象引用的对象,将创建一个租用。租用具有一个租用时间。如果租用时间为 0,则租用过期,对象将断开与 .NET Romoting 框架的连接。一旦 AppDomain 内部所有的对象引用都被释放,则下一个 GC 发生时对象将被回收。租用控制了对象的生存期。
对象有默认的租用阶段。当客户端要在同一服务器对象中维护状态信息时,可以通过许多方法扩展租用阶段,使对象继续生存。
可以将服务器对象的租用时间设置为无限,这样 Remoting 在垃圾回收周期中就不会回收此对象。
客户端可以调用 RemotingServices.GetLifetimeService 方法,以从 AppDomain 的租用管理器获取服务器对象的租用时间。然后,客户端便可以通过 Lease 对象来调用 Lease.Renew 方法,以延长租用时间。
客户端可用 AppDomain 的租用管理器为特定的租用注册负责人。当远程对象租用过期时,租用管理器将通知负责人提出更新租用的申请。
如果设置了 ILease::RenewOnCallTime 属性,则每次调用远程对象时,都会用 RenewOnCallTime 属性指定的时间更新租用时间。
单一调用/单一元素对象 客户端激活的对象
客户端激活代码(客户端所需的代码)
有关详细信息,请参阅配置文件的相关小节
a) Activator.GetObject()
b) new() 及 CFG 文件
客户的 CFG 文件引用下列 URL:
Foo= http://localhost:80/ObjectZone/Foo.soap
a) Activator.CreateInstance()
b) new() 及 CFG 文件
客户的 CFG 文件引用服务器数据库以及服务器应用程序的 URL,并提供对象 URI。客户端内置了对这些数据库的引用:
Assembly#MyObjectLibrary#ObjectZone#
MyObjectLibrary.Baz
RemoteApplication#ObjectZone#
HTTP://localhost:80/ObjectZone
服务器对象的激活 在首次调用方法之前,不会在网络上发送激活消息 当客户端创建对象,并且在客户端生成代理之后,激活消息将发送至服务器。支持带参数的构造函数。
Microsoft .NET Romoting 框架简介
namespace myRemoteService
{
// 有名的 Web 服务对象
public class myRemoteObject : MarshalByRefObject
{
// myRemoteMethod 方法
public String myRemoteMethod(String s)
{
return "Hello World";
}
}
}
访问此对象的客户端代码示例
using System;
using System.Runtime.Remoting;
using myRemoteService;
public class Client
{
public static int Main(string[] args)
{
ChannelServices.RegisterChannel(new HTTPChannel(7055));
// 创建 myRemoteObject 类的实例
myRemoteObject myObj = ( myRemoteObject)Activator.GetObject(typeof(myRemoteObject),
"http://myHost:7021/host/myRemoteObject.soap");
myObj. myRemoteMethod ("Hello World");
return 0;
}
}
租用生存期
对于那些具有在应用程序之外传送的对象引用的对象,将创建一个租用。租用具有一个租用时间。如果租用时间为 0,则租用过期,对象将断开与 .NET Romoting 框架的连接。一旦 AppDomain 内部所有的对象引用都被释放,则下一个 GC 发生时对象将被回收。租用控制了对象的生存期。
对象有默认的租用阶段。当客户端要在同一服务器对象中维护状态信息时,可以通过许多方法扩展租用阶段,使对象继续生存。
可以将服务器对象的租用时间设置为无限,这样 Remoting 在垃圾回收周期中就不会回收此对象。
客户端可以调用 RemotingServices.GetLifetimeService 方法,以从 AppDomain 的租用管理器获取服务器对象的租用时间。然后,客户端便可以通过 Lease 对象来调用 Lease.Renew 方法,以延长租用时间。
客户端可用 AppDomain 的租用管理器为特定的租用注册负责人。当远程对象租用过期时,租用管理器将通知负责人提出更新租用的申请。
如果设置了 ILease::RenewOnCallTime 属性,则每次调用远程对象时,都会用 RenewOnCallTime 属性指定的时间更新租用时间。
单一调用/单一元素对象 客户端激活的对象
客户端激活代码(客户端所需的代码)
有关详细信息,请参阅配置文件的相关小节
a) Activator.GetObject()
b) new() 及 CFG 文件
客户的 CFG 文件引用下列 URL:
Foo= http://localhost:80/ObjectZone/Foo.soap
a) Activator.CreateInstance()
b) new() 及 CFG 文件
客户的 CFG 文件引用服务器数据库以及服务器应用程序的 URL,并提供对象 URI。客户端内置了对这些数据库的引用:
Assembly#MyObjectLibrary#ObjectZone#
MyObjectLibrary.Baz
RemoteApplication#ObjectZone#
HTTP://localhost:80/ObjectZone
服务器对象的激活 在首次调用方法之前,不会在网络上发送激活消息 当客户端创建对象,并且在客户端生成代理之后,激活消息将发送至服务器。支持带参数的构造函数。