很久以前我写的一个东西。。
一直没时间整理放出来
今晚无聊就把它弄出来了。。给大家参考参考。。如果需要源码请上我的博客下:http://www.jiamaocode.com/Pros/1131.shtml
我们来用一个实例来讲一下这个系统的使用方法:
首先建一个接口
折叠展开C# 代码
namespace ITestDll
{
public interface ITest
{
int TestServer(int a, int b);
}
}
里面有一个测试方法TestServer,
再创建一个类:
折叠展开C# 代码
namespace TestDll
{
public class Test:MarshalByRefObject, ITestDll.ITest
{
public int TestServer(int a, int b)
{
BASECOMMON.ProcessManager.ShowNormalInfo("我现在在服务器端执行!");
BASECOMMON.ProcessManager.ShowNormalInfo("您输入的a=" + a);
BASECOMMON.ProcessManager.ShowNormalInfo("您输入的b=" + b);
int c = a + b;
BASECOMMON.ProcessManager.ShowNormalInfo("执行的结果为:" + c);
return c;
}
}
}
它只是简单对上面的接口进行实现,别忘了继承MarshalByRefObject,这是每个remoting代理类必须的。
编译好它们后,把它们一起拷贝到BaseSystemService的debug目录下
配置好BaseSystemService中的RemotingConfig.xml文件
其内容如下:
折叠展开XML/HTML 代码
<?xml version="1.0" encoding="utf-8" ?>
<RemotingConfig>
<!--服务配置-->
<ServerConfig>
<Name value="RemoteingServer" description="信道名称" />
<ChannelType value="TCP" description="服务注册协议类型" />
<Port value="8081" description="远程代理端口" />
</ServerConfig>
<!--需要注册的远程代理-->
<RegisterWellKnownServiceType>
<TestDll Register="true">
<Path value="TestDll.dll" description="对象文件的路径" />
<ClassName value="TestDll.Test" description="要注册对象的类全路径" />
<UriName value="TestDll" description="要注册成URI的名称" />
<WellKnownObjectMode value="Singleton" description="为每个连接提供实例方式" />
</TestDll>
</RegisterWellKnownServiceType>
</RemotingConfig>
其它的就不多说了。。
<Path value="TestDll.dll" description="对象文件的路径" /> 这里是你们注册为服务的DLL的路径,一般最好在根目录下。
<ClassName value="TestDll.Test" description="要注册对象的类全路径" /> 这个是你们注册此DLL中的类的名。包含命名空间
<UriName value="TestDll" description="要注册成URI的名称" /> 这里是此类注册成服务的标识,相当于网站的url路径一样。访问是通过IP端口和它
这些节点是可以重复配置多个的。比如你还要注册另一个DLL中的类的话。只要在里面加
折叠展开XML/HTML 代码
<?xml version="1.0" encoding="utf-8" ?>
<RemotingConfig>
<!--服务配置-->
<ServerConfig>
<Name value="RemoteingServer" description="信道名称" />
<ChannelType value="TCP" description="服务注册协议类型" />
<Port value="8081" description="远程代理端口" />
</ServerConfig>
<!--需要注册的远程代理-->
<RegisterWellKnownServiceType>
<TestDll Register="true">
<Path value="TestDll.dll" description="对象文件的路径" />
<ClassName value="TestDll.Test" description="要注册对象的类全路径" />
<UriName value="TestDll" description="要注册成URI的名称" />
<WellKnownObjectMode value="Singleton" description="为每个连接提供实例方式" />
</TestDll>
<TestDll2 Register="true">
<Path value="TestDll2.dll" description="对象文件的路径" />
<ClassName value="TestDll2.Test2" description="要注册对象的类全路径" />
<UriName value="TestDll2" description="要注册成URI的名称" />
<WellKnownObjectMode value="Singleton" description="为每个连接提供实例方式" />
</TestDll2>
</RegisterWellKnownServiceType>
</RemotingConfig>
•
配置好它后
就可以创建一个测试的客户端
如下:
打开其中的LocalObjectConfig.xml
配置你可以访问的服务端代理,此项目别忘了引用代理对象所实现的那个接口,也就是我们第一个创建的ITestDll
折叠展开XML/HTML 代码
<?xml version="1.0" encoding="utf-8" ?>
<LocalConfig>
<!--远程代理对象-->
<RemoteObject>
<TestDll>
<Protocol value="TCP" description="代理对象采用的协议" />
<NetAddress value="127.0.0.1" description="代理服务器的IP地址" />
<Port value="8081" description="代理服务器采用的端口" />
<Uri value="TestDll" description="代理对象的标识路径" />
</TestDll>
</RemoteObject>
<!--本地对象-->
<LocalObject>
<ObjectName>
<Path value="" />
<ClassName value="" />
</ObjectName>
</LocalObject>
</LocalConfig>
<RemoteObject> 就是我们用来访问远程代码的配置,当然这里跟SERVER端配置一样。可以重复配置多个访问代理
下面就看我们怎么从客户端访问远程 了
折叠展开C# 代码
static void Main(string[] args)
{
ITestDll.ITest test = BASECOMMON.RemoteObjectManager.CreateRemoteObject("TestDll",typeof(ITestDll.ITest)) as ITestDll.ITest;
int c = test.TestServer(10,20);
Console.WriteLine("返回的结果为:" + c);
Console.ReadLine();
}
利用我封装好的RemoteObjectManager就可以轻松实现
获取一个对象。
其中“TestDll”就是我们配置的节点
<TestDll>
• <Protocol value="TCP" description="代理对象采用的协议" />
• <NetAddress value="127.0.0.1" description="代理服务器的IP地址" />
• <Port value="8081" description="代理服务器采用的端口" />
• <Uri value="TestDll" description="代理对象的标识路径" />
• </TestDll>
下面看看执行结果:
并且此服务还支持,注册成系统服务。停止启动服务和卸载它本身。
普通启动是带参数/debug,注册成系统服务是用参数/install启动,卸载是参数/unstall
注册服务前需要修改好ServiceConfig.xml
折叠展开XML/HTML 代码
01.<?xml version="1.0" encoding="utf-8" ?>
02.<Service>
03. <ServiceName value="SERVICE1" description="系统服务名" />
04. <ServiceDescription value="test" description="服务说明" />
05. <ServiceDisplayName value="Test" description="服务简介" />
06.</Service>
此就不多讲了。。
一直没时间整理放出来
今晚无聊就把它弄出来了。。给大家参考参考。。如果需要源码请上我的博客下:http://www.jiamaocode.com/Pros/1131.shtml
我们来用一个实例来讲一下这个系统的使用方法:
首先建一个接口
折叠展开C# 代码
namespace ITestDll
{
public interface ITest
{
int TestServer(int a, int b);
}
}
里面有一个测试方法TestServer,
再创建一个类:
折叠展开C# 代码
namespace TestDll
{
public class Test:MarshalByRefObject, ITestDll.ITest
{
public int TestServer(int a, int b)
{
BASECOMMON.ProcessManager.ShowNormalInfo("我现在在服务器端执行!");
BASECOMMON.ProcessManager.ShowNormalInfo("您输入的a=" + a);
BASECOMMON.ProcessManager.ShowNormalInfo("您输入的b=" + b);
int c = a + b;
BASECOMMON.ProcessManager.ShowNormalInfo("执行的结果为:" + c);
return c;
}
}
}
它只是简单对上面的接口进行实现,别忘了继承MarshalByRefObject,这是每个remoting代理类必须的。
编译好它们后,把它们一起拷贝到BaseSystemService的debug目录下
配置好BaseSystemService中的RemotingConfig.xml文件
其内容如下:
折叠展开XML/HTML 代码
<?xml version="1.0" encoding="utf-8" ?>
<RemotingConfig>
<!--服务配置-->
<ServerConfig>
<Name value="RemoteingServer" description="信道名称" />
<ChannelType value="TCP" description="服务注册协议类型" />
<Port value="8081" description="远程代理端口" />
</ServerConfig>
<!--需要注册的远程代理-->
<RegisterWellKnownServiceType>
<TestDll Register="true">
<Path value="TestDll.dll" description="对象文件的路径" />
<ClassName value="TestDll.Test" description="要注册对象的类全路径" />
<UriName value="TestDll" description="要注册成URI的名称" />
<WellKnownObjectMode value="Singleton" description="为每个连接提供实例方式" />
</TestDll>
</RegisterWellKnownServiceType>
</RemotingConfig>
其它的就不多说了。。
<Path value="TestDll.dll" description="对象文件的路径" /> 这里是你们注册为服务的DLL的路径,一般最好在根目录下。
<ClassName value="TestDll.Test" description="要注册对象的类全路径" /> 这个是你们注册此DLL中的类的名。包含命名空间
<UriName value="TestDll" description="要注册成URI的名称" /> 这里是此类注册成服务的标识,相当于网站的url路径一样。访问是通过IP端口和它
这些节点是可以重复配置多个的。比如你还要注册另一个DLL中的类的话。只要在里面加
折叠展开XML/HTML 代码
<?xml version="1.0" encoding="utf-8" ?>
<RemotingConfig>
<!--服务配置-->
<ServerConfig>
<Name value="RemoteingServer" description="信道名称" />
<ChannelType value="TCP" description="服务注册协议类型" />
<Port value="8081" description="远程代理端口" />
</ServerConfig>
<!--需要注册的远程代理-->
<RegisterWellKnownServiceType>
<TestDll Register="true">
<Path value="TestDll.dll" description="对象文件的路径" />
<ClassName value="TestDll.Test" description="要注册对象的类全路径" />
<UriName value="TestDll" description="要注册成URI的名称" />
<WellKnownObjectMode value="Singleton" description="为每个连接提供实例方式" />
</TestDll>
<TestDll2 Register="true">
<Path value="TestDll2.dll" description="对象文件的路径" />
<ClassName value="TestDll2.Test2" description="要注册对象的类全路径" />
<UriName value="TestDll2" description="要注册成URI的名称" />
<WellKnownObjectMode value="Singleton" description="为每个连接提供实例方式" />
</TestDll2>
</RegisterWellKnownServiceType>
</RemotingConfig>
•
配置好它后
就可以创建一个测试的客户端
如下:
打开其中的LocalObjectConfig.xml
配置你可以访问的服务端代理,此项目别忘了引用代理对象所实现的那个接口,也就是我们第一个创建的ITestDll
折叠展开XML/HTML 代码
<?xml version="1.0" encoding="utf-8" ?>
<LocalConfig>
<!--远程代理对象-->
<RemoteObject>
<TestDll>
<Protocol value="TCP" description="代理对象采用的协议" />
<NetAddress value="127.0.0.1" description="代理服务器的IP地址" />
<Port value="8081" description="代理服务器采用的端口" />
<Uri value="TestDll" description="代理对象的标识路径" />
</TestDll>
</RemoteObject>
<!--本地对象-->
<LocalObject>
<ObjectName>
<Path value="" />
<ClassName value="" />
</ObjectName>
</LocalObject>
</LocalConfig>
<RemoteObject> 就是我们用来访问远程代码的配置,当然这里跟SERVER端配置一样。可以重复配置多个访问代理
下面就看我们怎么从客户端访问远程 了
折叠展开C# 代码
static void Main(string[] args)
{
ITestDll.ITest test = BASECOMMON.RemoteObjectManager.CreateRemoteObject("TestDll",typeof(ITestDll.ITest)) as ITestDll.ITest;
int c = test.TestServer(10,20);
Console.WriteLine("返回的结果为:" + c);
Console.ReadLine();
}
利用我封装好的RemoteObjectManager就可以轻松实现
获取一个对象。
其中“TestDll”就是我们配置的节点
<TestDll>
• <Protocol value="TCP" description="代理对象采用的协议" />
• <NetAddress value="127.0.0.1" description="代理服务器的IP地址" />
• <Port value="8081" description="代理服务器采用的端口" />
• <Uri value="TestDll" description="代理对象的标识路径" />
• </TestDll>
下面看看执行结果:
并且此服务还支持,注册成系统服务。停止启动服务和卸载它本身。
普通启动是带参数/debug,注册成系统服务是用参数/install启动,卸载是参数/unstall
注册服务前需要修改好ServiceConfig.xml
折叠展开XML/HTML 代码
01.<?xml version="1.0" encoding="utf-8" ?>
02.<Service>
03. <ServiceName value="SERVICE1" description="系统服务名" />
04. <ServiceDescription value="test" description="服务说明" />
05. <ServiceDisplayName value="Test" description="服务简介" />
06.</Service>
此就不多讲了。。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货