gaoxiang

专注于.NET技术

博客园 首页 新随笔 联系 订阅 管理
 前文已经提到AgileIM只是用于我的通信框架ESFramework测试的客户端,AgileIM 如今已经支持的主要功能:
(1)文字聊天
(2)文件传输
(3)视频/音频聊天
(4)基于Udp的NAT/NAPT 穿透

    IM类型的软件所需要的框架的能力大致也在这里了,现在把AgileIM的源码开放,希望能对后来者有些许帮助,当然,服务端通信框架的源码时不开放的。即使如此,你也可以从AgileIM中学到:
(1)如何与服务器进行通信、客户端基于Tcp的通信框架的特点
(2)如何组织通信消息/协议
(3)如何进行视频/音频捕捉
(4)多线程
(5)如何使用
ESFramework框架的ESFramework.Network.Tcp.Passive空间

    AgileIM基于
ESFramework构建,使用VS2005开发,代码并不是很多(因为很多能力已经在ESFramework框架中实现),组件装配/IOC使用了Spring框架,数据访问层使用了XCodeFactory
    测试登录帐号: 100000 ,密码: 111111
                             110000 ,密码: 111111
                             111000 ,密码: 111111

    我相信,每个人都可以开发自己的QQ和MSN!

   
点击这里下载AgileIM源码。

Feedback

# re: AgileIM 源码公开  回复   

2006-03-06 10:12 by 雁儿飞飞
不错
只可惜是2.0的
没装框架,运行不了
以后好好研究研究

# re: AgileIM 源码公开  回复   

2006-03-06 10:31 by Shooper .NET
谢谢分享,学习

# re: AgileIM 源码公开  回复   

2006-03-06 11:35 by 小黄叶
人的思想道德修养,人的素质与人的文化是不能成比例的。

# re: AgileIM 源码公开  回复   

2006-03-06 11:55 by lrq
下载不了,兄弟

# re: AgileIM 源码公开  回复   

2006-03-06 12:38 by 天生这样
有点郁闷的是只提供了客户端的代码,其它一些框架代码都没有,只有DLL

# re: AgileIM 源码公开  回复   

2006-03-06 13:31 by lovebanyi
正要学习视频和音频的.这样的有代码的话就好了..

# re: AgileIM 源码公开  回复   

2006-03-06 16:50 by Beginor
音频和视频捕获在CodeProject上看过(DShowNet以及那个Captrue类),而且是开源的,需要的朋友可以去www.codeproject.com上找。

顺便鄙视一下楼主!:)开源的东西,应该继续开源流传下去,不要占为己有。

# re: AgileIM 源码公开  回复   

2006-03-06 17:13 by zhuweisky
@Beginor:
呵呵,你说的严重了,我并没有把 “DShowNet以及那个Captrue类”据为己有,只是EnterpriseServerBase.dll 这个是我自己开发的,源码不公开。
AgileIM中 告诉了后来者如何使用Captrue类。

# re: AgileIM 源码公开  回复   

2006-03-06 18:58 by 淹不死的鱼asp.net开发专栏
http://www.718.com.cn
轻松构建.net应用,
Asp.net空间只需155元/年。
磁盘空间: 50M
MS SQL数据库空间: 20M
支持: ASP.net、ASP
FTP管理
流量无限制
P4 2.0G以上CPU 2G内存
硬盘2*73G 操作系统: Windows2003
千兆光纤接入,百兆独享宽带
7×24小时全网监控系统,千兆防火墙系统、防攻击设备
网通/电信

查看更多虚拟主机请点击http://www.718.com.cn有更多款式配置适合你的需求。

# re: AgileIM 源码公开  回复   

2006-03-06 19:02 by 雁儿飞飞
@zhuweisky

非常感谢您的开源精神
但是遗憾的是您的EnterpriseServerBase.dll 代码不公开

我也看拉这个dll确实写的不容易
针对EnterpriseServerBase.dll 就反编译c#源代码一份:
下载地址:
https://files.cnblogs.com/overred/EnterpriseServerBase_Source.rar

郑重说明:

经过IL成高级语言(C#)多多少少会与原代码有区别,所以这并不算什么违法行为,同时也是为拉广大朋友的方便!但是层次结构已经分布到各个文件夹和.cs里,起码比用Reflector要舒服点。(在1下完成,并未做任何测试,错误不可避免,想要正确的还是等楼主开源吧)

^_^
开源吧,上帝

# re: AgileIM 源码公开  回复   

2006-03-07 13:57 by smalldust
呵呵,对作者最后那句话不大理解:人人都能开发自己的QQ和MSN?
不知道人人都开发出自己的QQ和MSN来干嘛用啊?那不正与IM的意义相反吗?

另外,恕我直言,开发一个IM Client简直是容易至极(或者换句话说,没有什么技术含量),IM的技术精粹,是在服务器端。举个例子,服务器的可扩展性(一个IM Server要支持成千上万的并发连接,但是这一点恐怕就不得不用IOCP等技术吧?)此外,从数据库的角度来看,一个高效的IM Server还要使用分布式的数据库,并且对于冗余和备份的规划要做到万无一失。从某种角度来说,IM Server正是对上层架构技术和下层代码技术要求都非常高的一个开发项目。

因此,如果作者真正开发出了一个实用的IM Server,那我相信其源代码是非常值得一看的。如果作者开发的只是一个Asynchorous Socket的IM Server,最多支持2000多个并发连接的Server,那其实并没有什么意义。

对了,我的毕业设计就是IM服务器与客户端的实现。

# re: AgileIM 源码公开  回复   

2006-03-07 14:06 by smalldust
刚才说的并没有藐视作者辛勤劳动的意思。

的确作为IM Client其实现原理很简单,但是就连一个“计算器”程序,都可以做得很复杂。我没有下载作者的源代码,不知道他具体是否也花了很多心思,做得很精细。

我所说的“简单”,是作者举出的他所用到的技术。举例来说“(4)基于Udp的NAT/NAPT 穿透”,开一个UPnP隧道在.Net中只需要下面两句(当然不包括任何错误处理)

UPnPNAT uPnPNat = new UPnPNAT();
uPnPNat.StaticPortMappingCollection.Add(intExternalPort, strProtocol, intInternalPort, strLocalIP, true, strDescription);

当然,作者设计并实现了其IM系统特有的协议栈等等,这些都是比开UPnP隧道了不起的多的事情。因此我觉得大家学习的时候,主要不是学习怎么控制摄像头、怎么开UPnP,而是作者的架构设计、协议栈设计等等。

# re: AgileIM 源码公开  回复   

2006-03-07 15:19 by zhuweisky
非常感谢这么多人的关注!
其实 服务端框架的核心内容已经在我的前面的文章中浮出水面,特别是这两篇:
.NET平台下可复用的Tcp通信层实现(http://zhuweisky.cnblogs.com/archive/2006/01/04/310814.html
.NET平台下可复用的Tcp通信层实现(续) (http://zhuweisky.cnblogs.com/archive/2006/01/05/311364.html

开放AgileIM的源码,只是想给后来者起个抛砖引玉的作用,对初学者有些许指导就是我所有的目的。
呵呵,我写blog并没有抱着“文不惊人死不休”的态度,我也没这个能力:)

我说“人人都能开发自己的QQ和MSN”,意思是说,QQ和MSN这样的软件并不神秘,所有有开发IM愿望的人通过些许努力皆可达成。当然,正如smalldust所说,IM的精髓在其服务器端,要做一个专业的IM软件,确实有许多事情要做。
在熟悉了NAT的原理之后,实现NAT非常简单,但是对于一个没有接触过NAT概念的人,恐怕就不是那么容易了。

踏踏实实做点事、少点狂妄、少点埋怨、多点知足,这是我生活的体会!


# re: AgileIM 源码公开  回复   

2006-03-10 09:01 by ζ浮云¢惊龙
D. @_@ :-)

# re: AgileIM 源码公开  回复   

2006-03-10 10:16 by 露雨城市.NET2.0和Sql Server 2005开发研究
我想问问作者,客户端和服务器端的命令行是如何传递的呢,谢谢。

# re: AgileIM 源码公开  回复   

2006-03-10 14:45 by zhuweisky1
@露雨城市.NET2.0和Sql Server 2005开发研究
命令行 只是一类客户端与服务器通信的特殊的消息,它与普通消息的结构一样

# re: AgileIM 源码公开  回复   

2006-03-16 22:03 by A.Z
谢谢

# re: AgileIM 源码公开  回复   

2006-03-25 15:51 by kudoo
请问, 为什么解压后就一个文件,而且还识别不了.

# re: AgileIM 源码公开  回复   

2006-03-25 16:09 by kudoo
楼主,能讲讲File Transfer吗?
www.jabber.org上讲的太简单和模糊了.
posted on 2006-05-18 13:57  S孤单一吻S  阅读(848)  评论(0)    收藏  举报