ACE封装——尽可能多的隐藏平台间的差异

原创 2007年09月29日 20:19:00

ACE是个跨平台的东西,所以着力点之一就是为不同平台提供同样一个接口,但这永远都只是一个美好的梦想,试想一下,linux下无线程这个东西,windows用户对信号量这个东西也颇为陌生。

提供统一接口最大的挑战是有些东西有些平台支持,而另外一些平台没有。为了接口的统一,最好不提供这些功能的封装,但是有时候,这些特定平台适用的东西在它们的平台上效率很高,有时候尽管一些平台没有对某种功能的支持,但是从其他平台上的经验上来说这个功能确实是非常有益的功能,有时候,一个平台缺乏功能一却富于功能二,而另一个平台则截然相反,为了解决这些问题,ace在封装的时候提出了尽可能隐藏平台间差异的思想,它有三个方面。

模拟出平台没有的功能。

这是最直接的想法,譬如linux上没有thread的支持,但是可以通过其他手段模拟出来这个东西,从统一接口的角度来说这是一种非常好的模式,如果从效率上来考虑,你可以有其他选择,但是有其他平台上经验的用户可以无缝的在新的平台上使用框架提供的、自己已经很熟悉的东西。

通过参数化类型处理变化性。

这是模板编程的思想,我们可以用一个模板做为特定功能的替代者完成我们想提供的功能,但是在不同平台上允许用户选择合适的实现(模板参数),最简单的,在linux下用户可以选择select模式,而在windows下,用户可能希望使用windows自己的异步模式。使用模板化、或者参数化给用户自由,也提高了应用的效率,从模式的角度来说,这种情况下使用bridge模式是最合适不过的了,而ace有的时候使用了bridge模式(有的时候没有是出于空间的考虑)。

允许代码支持任何有益的功能。

如果实在无法模拟又不合适通过参数化来处理,为了取得在特定平台上的效率或者多数平台上的一致性,允许编译通过是一个不错的想法,只要不是特定平台上的用户,他们可以一直使用特定接口,只有当他们一天使用的平台不支持该特性的时候,才会收到未实现的返回值,这已经足够了,用户可以选择特殊情况下的解决方式,毕竟平台自身的缺陷不能完全靠框架来弥补。

国内云引擎平台概览——新浪SAE,阿里ACE,百度BCE

平时大家的测试服务器都是运行在自己的PC上面,用Tomcat或者IIS搭建的本机服务器。其实新浪云平台SinaAppEngine也是挺好用的。今天总结一下我使用过程中的一些小心得: 1.创建SAE应...

snprintf/_snprintf 在不同平台间函数差异

谈谈snprintf   众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf. snprintf(_snprintf)的声明是这...
  • cjjwwss
  • cjjwwss
  • 2013年10月10日 16:57
  • 333

一个程序尽可能多的实现Java面向对象编程的概念

abstract class Animal{//这是一个抽象类 String name; String furcolor; String family; Animal(){//抽象类中的无...

请说出static和const关键字尽可能多的作用

请说出static和const关键字尽可能多的作用 static关键字至少有下列n个作用: (1) 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此...

请说出static和const关键字尽可能多的作用

参考答案 【解答】 static关键字至少有下列n个作用:   (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次...

尽可能多的获取ios设备的信息

获取ios设备信息大部分是通过UIDevice实现的。 NSString *identifierNumber = [[UIDevice currentDevice] uniqueIden...

C程序设计语言练习1-16 修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多的打印文本

C程序设计语言练习1-16 修改打印最长问本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多的打印文本...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACE封装——尽可能多的隐藏平台间的差异
举报原因:
原因补充:

(最多只允许输入30个字)