关于Remoting 中服务端逻辑操作方法与客户端分离
回复 原文 (原创)一步一步学Remoting之一:从简单开始 中极地银狐.NET 的回复
我是remoting的初学者,楼主写的很不错,很通俗.
不过我还是不懂为什么客户端在编译的时候还要把服务端的东西复制进去?如果要复制的话,那DLL已经在客户端的本地可以直接使用了,还要去连接服务端的DLL做啥?
我不明白microsoft为什么要这么设计?
希望楼主指点一下! 回复 更多评论
--------
可以用接口来实现逻辑分离
服务端用接口形式来描述自己的所有操作,并把接口开放给客户端,而不用告诉客户端实际的操作步骤
客户端通过接口去调用服务端的操作,这样子客户端里就不会存在有任务的逻辑操作
如上面的例子可以修改为:
添加一个接口:
Public Interface IRemoteObject
Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
End Interface
服务端的RemoteObject修改为了
Public Class MyObject
Inherits MarshalByRefObject
Implements IRemoteObject
Private Shared hb As New Hashtable
Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer Implements iServer.IRemoteObject.Add
Return a + b
End Function
End Class
客户端调用修改为:
Dim app As iServer.IRemoteObject = CType(Activator.GetObject(GetType(iServer.IRemoteObject), System.Configuration.ConfigurationSettings.AppSettings("ServiceURL")), iServer.IRemoteObject)
在客户端里只有一个exe和一个IRemoteObject.dll
而服务端里就有一个exe,一个IRemoteObject.dll再加上一个RemoteObject.dll
不过我还是不懂为什么客户端在编译的时候还要把服务端的东西复制进去?如果要复制的话,那DLL已经在客户端的本地可以直接使用了,还要去连接服务端的DLL做啥?
我不明白microsoft为什么要这么设计?
希望楼主指点一下! 回复 更多评论
--------
可以用接口来实现逻辑分离
服务端用接口形式来描述自己的所有操作,并把接口开放给客户端,而不用告诉客户端实际的操作步骤
客户端通过接口去调用服务端的操作,这样子客户端里就不会存在有任务的逻辑操作
如上面的例子可以修改为:
添加一个接口:
Public Interface IRemoteObject
Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
End Interface
服务端的RemoteObject修改为了
Public Class MyObject
Inherits MarshalByRefObject
Implements IRemoteObject
Private Shared hb As New Hashtable
Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer Implements iServer.IRemoteObject.Add
Return a + b
End Function
End Class
客户端调用修改为:
Dim app As iServer.IRemoteObject = CType(Activator.GetObject(GetType(iServer.IRemoteObject), System.Configuration.ConfigurationSettings.AppSettings("ServiceURL")), iServer.IRemoteObject)
在客户端里只有一个exe和一个IRemoteObject.dll
而服务端里就有一个exe,一个IRemoteObject.dll再加上一个RemoteObject.dll