免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: benjiam
打印 上一主题 下一主题

[C++] ace 个人看法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-12-26 16:05 |只看该作者
原帖由 assiss 于 2007-12-26 13:52 发表
N多年前就接触过ACE,被彻底吓跑了。太太太庞大了,为了一个网络应用程序,值得吗?

我当初就是想传输一个文件,有人让我用ACE,我就直接放弃了
panpass 该用户已被删除
12 [报告]
发表于 2007-12-26 18:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
13 [报告]
发表于 2007-12-26 21:05 |只看该作者
原帖由 zhujiang73 于 2007-12-26 14:28 发表



有一个 ACE+TAO 的替代方案, http://www.zeroc.com/ice.html  
其实如果 C++ 有完整的 RTTI 支持,跨平台就不会这么麻烦了,听说 C++ 的 RTTI 方案正在讨论。


ICE 是CORBA 的替代方案,  跨平台与RTTI关系不大吧,

C++现有的RTTI确实不怎么样, 不同的编译器,还存在差异.

不过很多系统出于性能和可靠性考虑, 设计时都明确指出不能用Exception 和 RTTI.

论坛徽章:
0
14 [报告]
发表于 2007-12-26 21:19 |只看该作者
原帖由 zhujiang73 于 2007-12-26 15:53 发表



.NET Remoting  是我见过的最好用的网络编程框架,.NET Remoting  中 HttpChannel 使用Soap格式 (XML) 序列化消息对象,TcpChannel 使用二进制格式序列化消息对象, 借助元数据的帮助 .NET Remoting 可以 ...


没发现 Remoting 有什么有意思的东东的,  只要是个分布式框架, 基本上就可以进行远程调用,

而且soap太没效率了

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
15 [报告]
发表于 2007-12-26 22:16 |只看该作者
原帖由 antonym55 于 2007-12-26 21:05 发表


ICE 是CORBA 的替代方案,  跨平台与RTTI关系不大吧,

C++现有的RTTI确实不怎么样, 不同的编译器,还存在差异.

不过很多系统出于性能和可靠性考虑, 设计时都明确指出不能用Exception 和 RTTI.


TAO 就是基于 ACE 的 CORBAR 实现,ICE 是 TAO 的替代方案。我自己写了一个简单的 C++ 远程调用库,http://zhujiang73.cublog.cn/  如果有 RTTI  我就能知道需要打包的变量类型,也就能知道是否需要处理字节序等问题。

论坛徽章:
0
16 [报告]
发表于 2007-12-27 00:48 |只看该作者
原帖由 zhujiang73 于 2007-12-26 22:16 发表


TAO 就是基于 ACE 的 CORBAR 实现,ICE 是 TAO 的替代方案。我自己写了一个简单的 C++ 远程调用库,http://zhujiang73.cublog.cn/  如果有 RTTI  我就能知道需要打包的变量类型,也就能知道是否需要处理字节序等问题。


C++ 的变量不是事先定义好的??既然事先定义好,获取变量的类型就比较容易了吧。

不是很明白你想干什么。


  1. #include <iostream>
  2. #include <typeinfo>

  3. using namespace std;

  4. struct MessageHead
  5. {
  6.     int Sequence;    int MessageID;

  7.     virtual int GetSize()
  8.     {
  9.         return (sizeof(Sequence) + sizeof(MessageID));
  10.     }
  11. };

  12. struct Message:MessageHead
  13. {
  14.     unsigned char Data[10];
  15.     int GetSize()
  16.     {
  17.         return (sizeof(Data) + MessageHead::GetSize());
  18.     }
  19. };

  20. int main(int argc, char* argv[])
  21. {

  22.     Message *pMsg = new Message();
  23.     MessageHead *pHead = pMsg;

  24.     cout << pHead->GetSize()<< endl
  25.          << pMsg->GetSize() << endl;

  26.     cout << typeid(pHead).name() << endl
  27.          << typeid(*pHead).name() << endl;

  28.     cout << typeid(pMsg).name() << endl
  29.         << typeid(*pMsg).name() << endl;

  30.     delete pMsg;
  31.     return 0;
  32. }
复制代码


运行后的结果
18
18
struct MessageHead *
struct Message
struct Message *
struct Message


如果只是编解码的话,可以考虑先定义好数据类型,结构,再用工具生成编解码的C代码
(见过一个项目组就是直接在网络上传输ASN.1的编码, 编解码的部分直接使用ASN.1代码转换过来的C代码. 不用考虑一些编解码的细节,而且不容易出错)

[ 本帖最后由 antonym55 于 2007-12-27 01:14 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2007-12-27 08:55 |只看该作者
LZ说得在理,学习了

论坛徽章:
0
18 [报告]
发表于 2007-12-27 08:56 |只看该作者
ACE如果继续这样膨胀下去,那么使用的人会越来越少

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
19 [报告]
发表于 2007-12-27 10:09 |只看该作者
原帖由 antonym55 于 2007-12-27 00:48 发表


C++ 的变量不是事先定义好的??既然事先定义好,获取变量的类型就比较容易了吧。

不是很明白你想干什么。


#include
#include

using namespace std;

struct MessageHead
{
    int Sequ ...



我不想为每个 struct 写一个 GetSize() 多累呀,我想要一个通用的  int  RTTI::GetSize(Base  *p), 接收子类的指针返回 Size,子类中没有GetSize( ),RTTI::GetSize 依靠 struct  的类型信息工作。

论坛徽章:
0
20 [报告]
发表于 2007-12-27 10:41 |只看该作者
楼上几位严重偏离主题!!!!!!!!!!!!!!!!
何不另外起个帖子去讨论C++的破语法去。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP