科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[冷枫]Remoting服务端和客户端程序该这样模式来写

[冷枫]Remoting服务端和客户端程序该这样模式来写

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Remoting服务端和客户端程序该这样模式来写

作者:冷枫 来源:CSDN 2007年9月23日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

2、客户端激活可以调用自定义的构造方法,而不像服务端激活只能使用默认的构造方法

把客户端代码修改如下:
RemoteObject.MyObject app=(RemoteObject.MyObject)Activator.CreateInstance(typeof(RemoteObject.MyObject),new object[]{10},new object[]{new System.Runtime.Remoting.Activation.UrlAttribute(System.Configuration.ConfigurationSettings.AppSettings["ServiceURL"])});
            Console.WriteLine(app.Count());

这里看到我们在CreateInstance方法的第二个参数中提供了10作为构造方法的参数。在服务端激活模式我们不能这么做。

远程对象构造方法修改如下:

public MyObject(int k)
        
{
            
this.i=k;
            Console.WriteLine(
"激活");
        }

毫无疑问,我们运行客户端发现输出的是11而不是1了。

3、通过上面的例子,我们运行多个客户端发现出现的永远是11,因此,客户端激活模式一旦获得客户端的请求,将为每一个客户端都建立一个实例引用。

总结:
1、Remoting支持两种远程对象:知名的和客户激活的。知名的远程对象使用了uri作为标识,客户程序使用这个uri来访问那些远程对象,也正式为什么称作知名的原因。对知名的对象来说2种使用模式:SingleCall和Singleton,对于前者每次调用都会新建对象,因此对象是无状态的。对于后者,对象只被创建一次,所有客户共享对象状态,因此对象是有状态的。另外一种客户端激活对象使用类的类型来激活,uri再后台被动态创建,并且返回给客户程序。客户激活对象是有状态的。
2、对于Singleton对象来说需要考虑伸缩性,Singleton对象不能在多个服务器上被部署,如果要跨服务器就不能使用Singleton了。

备注:个人习惯原因,在我的例子中服务端的配置都是用config文件的,客户端的配置都是基本用程序方式的
使用配置文件的优点:无需重新编译就可以配置通道和远程对象,编写的代码量比较少
使用程序定制的优点:可以获得运行期间的信息,对程序调试有利。

附:msdn有关章节:
http://msdn.microsoft.com/library/CHS/cpguide/html/cpconActivation.asp



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=727800

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章