C#中的远程执行和分布式计算
http://tech.ddvip.com 2006年08月01日 社区交流
本文详细介绍C#中的远程执行和分布式计算
要实现这一点,就必须使用编译器可串行化的特性,使编译器对一些结构进行吕行化处理。我们可以将整个类标记为可串行化的,也可以将包括一些选定的方法在内的类的一部分标记为可串行化的。在任务服务器环境中,整个的客户端任务对象必须能够被串行化。代码如下所示:
Using System;
?[Serializable()]
class ClientTask {
?
需要注意的是,如果一个对象有外部的库文件等附属的部分,被该对象使用的部分也必须被串行化,这是在远程应用域中重新建立对象所必需的。
运行例子程序
这个例子是用C# for .NET Beta 2编写的,并在C# for .NET Beta 2中通过了测试。
为了使用任务服务器,我们必须以下面的顺序对程序进行编译:
csc /target:library /out:ITask.dll ITask.cs
csc /target:library /out:TaskRunner.dll TaskRunner.cs
csc /r:ITask.dll /r:TaskRunner.dll TaskServer.cs
csc /r:ITask.dll /r:TaskRunner.dll TaskClient.cs
上面的顺序非常重要,因为TaskServer和TaskClient类要用到TaskRunner和ITask库。
要运行这个例子程序,首先启动服务器代码,并等待出现下面的提示:
[i] Task Server Started, press to exit?
然后就可以运行客户端程序了。
在TaskClient类中有一个实现ITask界面而且能够可串行化的类,该任务将求出二个数的积,并返回一个int类型的对象。我建议读者创建自己的任务,并试着在任务服务器上运行它,这将使你亲身体会到这种分布式计算的巨大威力。它可以使客户端软件开发人员充分利用任务服务器上丰富的资源完成复杂的、需要大量资源的任务。
责编:豆豆技术应用