关于.net remoting技术(分不是问题-希望大家帮忙-准备500分)

icedut 2005-07-27 02:32:38
最近在了解remoting方面的一些内容
不知道个位大侠在做3层结构的系统的时候具体怎么应用remoting

问题1:什么情况下用服务器端激活,什么情况下用客户端激活
看了LoveCherry的专栏,我还是不清楚,谁能根据自己的实际项目应用情况给我简单说一下
-----msdn--------------------------------
客户端请求服务器激活的类型实例时,只在客户端应用程序域中创建一个代理。然而,这也意味着当您使用默认实现时,只允许对服务器激活的类型使用默认构造函数。若要发布其实例将使用带参数的特定构造函数创建的类型,可以使用客户端激活或者动态地发布您的特定实例。
----LoveCherry的专栏的部分内容-----------
客户端激活和Singleton是有状态的,而客户端激活和Singleton区别在于Singleton是共享对象的。因此我们可以选择符合自己条件的激活方式:
状态 拥有各自实例
Singleton 有 无
SingleCall 无 有
客户端激活 有 有
-----------------------------------------

问题2:如果1的问题解决了
是否需要把激活方式不同的类分到不同的项目中

问题3:
看到网上的一些例子,一个命名空间中有一个类,还有一个配置文件(里面也有命名空间和类名),难道每个类都要一个配置文件么

...全文
327 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Duwamish 2005-07-28
  • 打赏
  • 举报
回复
学习
seekg 2005-07-28
  • 打赏
  • 举报
回复
旁听
DalyQiao 2005-07-28
  • 打赏
  • 举报
回复
正在思考中,也才接触哦
一般使用服务端激活吧,不用考虑对象的生存期,对服务器影响也不大.
所以我绝大部分会使用服务产端激活方式

我这个想法应该是正确的:-P
icedut 2005-07-28
  • 打赏
  • 举报
回复
谁能根据自己的实际项目应用情况给我简单说一下
icedut 2005-07-28
  • 打赏
  • 举报
回复
DragonYingzi()
有点过分吧
跑我这里来拉人啊
和我的题意差不多就算了
竟然相差这么远

:)
icedut 2005-07-28
  • 打赏
  • 举报
回复
我也想用配置文件的方式
就在在具体类的设计上,不知道用什么激活方式
DalyQiao 2005-07-28
  • 打赏
  • 举报
回复
建议使用配置文件,以便实现无差别的代码,另外发布一个相关的配置程序,以便修改客户端配置
DalyQiao 2005-07-28
  • 打赏
  • 举报
回复
如果使用配置文件的话,这些激活设置可以随时改,而不管是服务端激活还是客户端激活,都可以使用
new 的方式,关键在于对象生存期的管理不同.在服务器上保存状态就只有客户端激活了.
每个类都应该可以定义相关的激活方式(没试过),只在配置文件中写清楚就可以了,而客户端配置文件也相对应进行设置,跟项目应该没什么关系!
DragonYingzi 2005-07-28
  • 打赏
  • 举报
回复
想来这里都是高手,所以....不好意思了,我急....
DragonYingzi 2005-07-28
  • 打赏
  • 举报
回复
public Form1()
{
InitializeComponent();
BorderPanel eee = new BorderPanel();
eee.Height =200;
eee.Width = 200;
eee.BorderStyle =BorderStyle.Fixed3D ;
eee.Parent = this;
eee.Left =200;

InitializeComponent();
BorderPanel eee2 = new BorderPanel();
eee2.Height =200;
eee2.Width = 200;
eee2.BorderStyle =BorderStyle.Fixed3D ;
eee2.Parent = this;

BorderPanel sss = new BorderPanel();
sss.Parent = this;
sss.Height =200;
sss.Width = 200;
sss.BorderStyle =BorderStyle.Fixed3D ;
sss.Top = 220;
sss.Left = 400;
}
单击Panel后在其周围画一个有颜色的框,表示选中,单击下一个时,去掉上一个周围的框......
如果不这样搞,有没有其他办法,谢谢!
szj820 2005-07-28
  • 打赏
  • 举报
回复
收藏
icedut 2005-07-28
  • 打赏
  • 举报
回复
感谢楼上几位的帮助

特别感谢 LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) 的耐心讲解
icedut 2005-07-28
  • 打赏
  • 举报
回复
class:FormInfoCreator(一个方法创建FormInfo实例),FormInfo(只有带参数构造函数),
还有FormInfo的属性是一些自定义类(ClassA...)(在执行构造函数的时候生成),---

客户端
ESAPForm 构造函数的参数是FormInfo类型

客户端需要创建实例FormInfoCreator(默认构造函数),然后调用其方法生成FormInfo(用于客户端类的参数)

现在代码如下
FormInfoCreator _finfocreator =new FormInfoCreator(); EsapForm f=new EsapForm(_finfocreator.GetFormInfo(mn.Form_Id,FormType.EsapForm,EsapSession.DFactory));

----
1 把FormInfoCreator 做为远程对象正确么
FormInfoCreator可以用SingleTon

2 FormInfo 和FormInfo用到的ClassA...这些类要怎么处理呢,只要序列化就行了么


icedut 2005-07-27
  • 打赏
  • 举报
回复
谢谢大家的关注
wxqq2001 2005-07-27
  • 打赏
  • 举报
回复
关注一下.
whmjw 2005-07-27
  • 打赏
  • 举报
回复
http://www.cnblogs.com/rickie/category/5082.html
cdo 2005-07-27
  • 打赏
  • 举报
回复
http://www.daima.com.cn/Info/80/Info28275/
icedut 2005-07-27
  • 打赏
  • 举报
回复
举个例子 接口InterfaceA
类 ClassA,ClassAB,ClassAC,ClassAD,
ClassAB,ClassAC,ClassAD 继承ClassA
ClassA 实现 InterfaceA

ClassAB,ClassAC,ClassAD都有带参数的构造函数,可以考虑用CAO
那ClassA,InterfaceA也要CAO么


qiezic 2005-07-27
  • 打赏
  • 举报
回复
我使用过TcpChannel,应该是属于服务器端激活。
其实就是在服务器端代理一个类,然后客户端声明这个类就可以通过类里面的成员实现与服务器通话。

客户端激活,这个不清楚

可以需要配置文件,也可以不需要。如果有配置文件当服务器地址(或者其他变量)变更时你就无需重新编译,在配置文件里面更改IP就可以了
LoveCherry 2005-07-27
  • 打赏
  • 举报
回复
1、客户端激活可以调用自定义的构造方法,而不像服务端激活只能使用默认的构造方法
2、SingleCall和Singleton,对于前者每次调用都会新建对象,因此对象是无状态的。对于后者,对象只被创建一次,所有客户共享对象状态,因此对象是有状态的。另外一种客户端激活对象使用类的类型来激活,uri再后台被动态创建,并且返回给客户程序,客户激活对象是有状态的
3、对于Singleton对象来说需要考虑伸缩性,Singleton对象不能在多个服务器上被部署,如果要跨服务器就不能使用Singleton了
加载更多回复(1)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧