INDY10.0.52就是一堆垃圾!! ( 积分: 100 )

  • 主题发起人 主题发起人 x-dsl
  • 开始时间 开始时间
X

x-dsl

Unregistered / Unconfirmed
GUEST, unregistred user!
同意的顶!
 
也不能这样说,Indy10.0.52有好多bug不假,但是主要是Indy团队缺人啊,人力不够,加上每个人都是义务劳动,又和本职工作有冲突,难得一天能空闲下来写几行代码。Borland发布D7-D2007的时候,又不用Indy的Snapshot版本,用这个所谓的Release版本,却恰恰这个Release版本反而有好多个严重的Bug。实在是没办法。有时候也不能太苛求什么,毕竟这套框架是给你免费用的,开发团队在期间是收不到一点收入的(不过应该捆绑到Delphi里面的时候Borland得给点钱吧?具体怎么运作的我就不得而知了)。

总体来说Indy还是不错的,只是它承载的压力太大,兼顾的东西太多,不仅要适应Delphi还要适应BCB,同时还要兼顾.NET,哎!
 
INDY功能太强大了
我用到其功能的就一点点

我顶老大说的....
 
的确是这样的,就像我们自己写的软件一样,多少都有有BUG的...
 
其实认真研究Indy10的框架,可以说它真的很美,另外它采用异常驱动的方式抛出消息,虽然很多初学者会觉得难以下手(毕竟在他们看来异常就是错误,当然这个观点是完全错误的),但如果Indy在网络操作上不用异常抛出消息会有多么麻烦,Indy的用户得关联多少事件啊,那也就和Indy本身的阻塞方式向违背了。总体来说Indy还是很好用的!况且源码也是公开的,任何人都可以扩展,可以修改!
 
异常驱动的方式抛出消息???
老大,可否说的详细点?
 
哈哈,就是抛异常啊
比如
IdFTP.Connect;
try
IdFTP.Get(....);
except
on E: EIdXXXXXX do
begin
end;
end;
客户代码得这样写,因为Get如果出错会抛异常出来,而详细信息就在异常类里面。当然Connect也会抛异常,所以你还得改写下
try
IdFTP.Connect
try
IdFTP.Get(...);
except
on E: EIdXXXXX do
begin
end;
end;
except
on E: EIdXXXX do
begin
end;
end;
实际上Indy强制你写如此健壮的代码处理各种“非预期”情形,其所起到的另外一个有明显的益处就是减少你的软件中出现Bug的情况,因为你会为你的代码写好尽可能多的“非预期”情况的处理代码。当然这就得有个要求,你必须了解一下Indy会抛出哪些类型的异常,你应该关心哪些类型的异常,同时对别的异常应该采用继续向上抛出交给上层调用代码处理呢,还是自己处理掉不再往外抛了!

这样写虽然有点麻烦,但实际上好处还是很多的,而且对于用抛出异常来通知程序员的方法,同样也利于在DUnit下进行详尽的测试,你可以很快知道代码中是否有不应该的行为,或者模拟环境后能检测抛出的异常到底对不对之类的!用测试驱动的方式写程序已经是现在业界的标准了,这样写出的代码健壮性相当强,代码写好的同时,也意味着通过了测试,可以交付团队版本服务器上提供别人使用了,不用担心会出现逻辑上可能存在错误。
 
另外多嘴一句,Indy的Server类相当强,而且本身就支持多线程了,同时还提供了诸如线程池之类的技术,使用Server类非常简单,放在窗体上就OK了(呵呵 ,不过需要注意的是Server的许多事件都是在线程中触发的,所以你得做好同步工作——这也是基本要求,一个对多线程同步不关心的程序员可以说是一个不称职的程序员)。
 
后退
顶部