C#+ICE+TCP通信=数据传输
最近项目中运用到了ICE文件传输。第一课(ICE的介绍)
一、 介绍ICE
ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中间件。使用ICE能使得(C#、php、c++、java或python)与java,c++,.net,python等进行交互。基于ICE可以实现电信级的解决方案。 ICE ,是一种流行的面向对象的中间件,用来作网络通讯引擎。
二、ICE 的好处
- 面向对象的语义,所有的操作调用都使用迟后绑定。
- 支持同步和异步的消息传递,提供了同步和异步的操作调用和分派,提供了发布——订阅消息传递机制。
- 与硬件架构无关,客户端及服务器与底层的硬件架构屏蔽开来。对于应用代码而言,像字节序和填充这样的问题都隐藏了起来。
- 与上层的编程语言无关,客户端和服务器可以分别部署,所用语言也可以不同,支持C#、C++、Java语言,客户端支持PHP语言。
- 与采用的操作系统无关,ICE完全是可移植的,同样的源码能够在Windows、Linux、MacOS和UNIX上编译和运行。
- 完全是线程化的,其API是线程安全的。
- 采用TCP、IP 和UDP作为传输协议,客户端和服务器代码都不需要了解底层的传输机制。
- 服务器的位置是对用户透明的,ICE例程负责定位对象,并管理底层的传输机制,比如打开和关闭连接。客户与服务器之间的交互显得像是无连接的。服务器可以迁移到不同的物理地址,而不会使客户持有的代理失效,而客户完全不知道对象实现是怎样分布在多个服务器进程上的。
三、为什么要使用中间件?
设想一个这样的场景:对于一个大型网站来说,往往有很多个web服务器,每个web服务器都存在很多对于数据库的操作。如果直接在程序上直接操作数据库,那么势必要在每台web
服务器都配置数据库的用户名,密码等信息,这是极度不安全的。并且如果我们要统一对数据库的操作进行管理和修改等,那么久要去每个web服务器上修改。因此,这时候中间件就产
了。
它是基于SOA(面向服务架构)的思想,将对数据库的操作统一成一个服务,放置于一台服务机上,每个web服务器要对数据库进行操作,就可以直接访问这个提供中间件服务的服务
器。还有一点,考虑到性能问题,这里的提供服务的机子我们不使用html和xml传输数据,一般使用TCP,UDP这层的通信。因此ICE就是现在非常流行的网站开发中间件之一。
四、ICE通信结构图
ICE有分为提供服务的一方Server和寻求服务的一方Client,两台机子上都需要安装ICE组件,他们的通信结构如下:
Client端应该事先知道Server端能提供的服务是什么,有什么格式?这就是图中的Proxy Code,在Proxy Code中定义好了类和接口。Server端中接口定义的就是Skeleton,具体实现接
口的是Server Application,Server Application可以是C++,java,C#等写的,但是ICE不提供PHP写Server端。