欢迎光临
我们一直在努力

使用C#编写Ice应用程序-.NET教程,C#语言

建站超值云服务器,限时71元/月

ice是一种优秀的分布式网络中间件,比起corba好上许多,也更简洁。优点我在这里也不便多说了,有专文介绍,也不是今天的主题。有兴趣的可以查一下,《程序员》杂志好像有专题。

下面主要介绍一下怎样使用c#编写基于ice的网络应用程序。

环境:windows server 2003 enterprise, visual studio.net 2003(.net framework 1.1)

先到http://www.zeroc.com/download.html下载ice的安装包,windows下用msi的。为方便起见,我下载的是vs.net2003的专用包。如下:

注意:ice-1.5.1-vc71.msi 安装包是必需的。 安装完毕后,将安装目录下的bin目录加入环境变量的path路径,然后就可以在vs.net中开发ice应用了。

首先,我们编写一个slice定义文件(相当于corba里面的idl文件)。文件内容很简单,因为我们要从一个“hello world”程序开始。

命名为printer.ice:

interface printer

{

void printstring(string s);

};

用下面的命令编译:slice2cs.exe printer.ice(如果找不到命令,表示环境变量没有设置成功,可以使用bin目录的全路径)

这条命令会在当前目录下产生printer.cs文件:

恭喜你,初战告捷!继续加油!

我用vs.net建了一个空的解决方案icetest,然后添加了一个空的项目icetest,加入printer.cs文件,最后建立server.cs文件(不用说你也猜到了,现在是编写服务端)。文件目录如下:

在server.cs中添加如下代码:

using system;

namespace icetest

{

/**//// <summary>

/// summary description for server.

/// </summary>

public class server

{

public server()

{

//

// todo: add constructor logic here

//

}

public static void main(string[] args)

{

int status = 0;

ice.communicator ic = null;

try

{

ic = ice.util.initialize(ref args);

ice.objectadapter adapter

= ic.createobjectadapterwithendpoints(

"simpleprinteradapter", "default -p 10000");

ice.object obj = new printeri();

adapter.add(

obj,

ice.util.stringtoidentity("simpleprinter"));

adapter.activate();

ic.waitforshutdown();

}

catch (exception e)

{

console.error.writeline(e);

status = 1;

}

finally

{

if (ic != null)

ic.destroy();

}

environment.exit(status);

}

}

public class printeri : _printerdisp

{

public override void printstring(string s, ice.current current)

{

console.writeline(s);

}

}

}

前面的代码都是例行公事,public class printeri : _printerdisp的代码才是我们需要的(简单吧!)

按照同样的方法,我们建立iceclienttest项目,先添加printer.cs文件,然后编写cient.cs文件,具体内容如下:

using system;

namespace iceclienttest

{

/**//// <summary>

/// summary description for client.

/// </summary>

public class client

{

public client()

{

//

// todo: add constructor logic here

//

}

public static void main(string[] args)

{

int status = 0;

ice.communicator ic = null;

try

{

ic = ice.util.initialize(ref args);

ice.objectprx obj = ic.stringtoproxy(

"simpleprinter:default -p 10000");

printerprx printer

= printerprxhelper.checkedcast(obj);

if (printer == null)

throw new applicationexception("invalid proxy");

printer.printstring("hello world!");

}

catch (exception e)

{

console.error.writeline(e);

status = 1;

}

finally

{

if (ic != null)

ic.destroy();

}

environment.exit(status);

}

}

}

同样,里面大部分都是例行公事,只有printer.printstring("hello world!");一句才是关键。

现在我们可以build解决方案了,成功后便产生了icetest.exe 和iceclienttest.exe 文件。如果没有成功,记得在项目中添加引用,加入icecs.dll(也在安装的bin目录下)。

应该可以了,下面看看运行结果:

运行结果很简单,就是服务端输出客户端输入的“hello world”字符串。比corba简单吧?

最后贴出服务端的uml图,客户端的类似就不贴了。

以上是我参考《distributed programming with ice》(官方网站可以下载,是ice软件包的官方文档)一书做的练习,内容很简单,请大家指教!

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用C#编写Ice应用程序-.NET教程,C#语言
分享到: 更多 (0)

相关推荐

  • 暂无文章