ATL歌手资料
基本内容
ATL,Active Template Library活动模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。通过活动模板库,可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用。这种COM组件可以包含属性页、对话框等等控件。
什么是
自从1993年Microsoft首次公布了COM技术以后,Windows平台上的开发模式发生了巨大的变化,以COM为基础的一系列软件组件化技术将Windows编程带入了组件化时代。广大的开发人员在为COM带来的软件组件化趋势欢欣鼓舞的同时,对于COM开发技术的难度和烦琐的细节也感到极其的不便。COM编程一度被视为一种高不可攀的技术,令人望而却步。开发人员希望能够有一种方便快捷的COM开发工具,提高开发效率,更好地利用这项技术。
针对这种情况,Microsoft公司在推出COM SDK以后,为简化COM编程,提高开发效率,采取了许多方案,特别是在MFC(Microsoft Foundation Class)中加入了对COM和OLE的支持。但是随着Internet的发展,分布式的组件技术要求COM组件能够在网络上传输,而又尽量节约宝贵的网络带宽资源。采用MFC开发的COM组件由于种种限制不能很好地满足这种需求,因此Microsoft在1995年又推出了一种全新的COM开发工具ATL。
ATL是ActiveX Template Library 的缩写,它是一套C++模板库。使用ATL能够快速地开发出高效、简洁的代码(Effective and Slim code),同时对COM组件的开发提供最大限度的代码自动生成以及可视化支持。为了方便使用,从Microsoft Visual C++ 5.0版本开始,Microsoft把ATL集成到Visual C++开发环境中。1998年9月推出的Visual Studio 6.0 集成了ATL 3.0版本。目前,ATL已经成为Microsoft标准开发工具中的一个重要成员,日益受到C++开发人员的重视。
ATL究竟给开发人员带来了什么样的益处呢?这还要先从ATL产生以前的COM开发方式说起。
在ATL产生以前,开发COM组件的方法主要有两种:一是使用COM SDK直接开发COM组件,另一种方式是通过MFC提供的COM支持来实现。
直接使用COM SDK开发COM组件是最基本也是最灵活的方式。通过使用Microsoft提供的开发包,我们可以直接编写COM程序。但是,这种开发方式的难度和工作量都很大,一方面,要求开发者对于COM的技术原理具有比较深入的了解(虽然对技术本身的深刻理解对使用任何一种工具都是非常有益的,但对于COM这样一整套复杂的技术而言,在短时间内完全掌握是很难的),另一方面,直接使用COM SDK要求开发人员自己去实现COM应用的每一个细节,完成大量的重复性工作。这样做的结果是,不仅降低了工作效率,同时也使开发人员不得不把许多精力投入到与应用需求本身无关的技术细节中。虽然这种开发方式对于某些特殊的应用很有必要,但这种编程方式并不符合组件化程序设计方法所倡导的可重用性,因此,直接采用COM SDK不是一种理想的开发方式。
使用MFC提供的COM支持开发COM应用可以说在使用COM SDK基础上提高了自动化程度,缩短了开发时间。MFC采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能。为了使派生类方便地获得COM对象的各种特性,MFC中有许多预定义宏,这些宏的功能主要是实现COM接口的定义和对象的注册等通常在COM对象中要用到的功能。开发者可以使用这些宏来定制COM对象的特性。
另外,在MFC中还提供对Automation 和 ActiveX Control的支持,对于这两个方面,Visual C++也提供了相应的AppWizard和ClassWizard支持,这种可视化的工具更加方便了COM应用的开发。
MFC对COM和OLE 的支持确实比手工编写COM程序有了很大的进步。但是MFC对COM的支持是不够完善和彻底的,例如对COM接口定义的IDL语言,MFC并没有任何支持,此外对于近些年来COM和ActiveX技术的新发展MFC也没有提供灵活的支持。这是由MFC设计的基本出发点决定的。MFC被设计成对Windows平台编程开发的面向对象的封装,自然要涉及Windows编程的方方面面,COM作为Windows平台编程开发的一个部分也得到MFC的支持,但是MFC对COM的支持是以其全局目标为出发点的,因此对COM 的支持必然要服从其全局目标。从这个方面而言,MFC对COM的支持不能很好的满足开发者的要求。
随着Internet技术的发展,Microsoft将ActiveX技术作为其网络战略的一个重要组成部分大力推广,然而使用MFC开发的ActiveX Control,代码冗余量大(所谓的“肥代码 Fat Code”),而且必须要依赖于MFC的运行时刻库才能正确地运行。虽然MFC的运行时刻库只有部分功能与COM有关,但是由于MFC的继承实现的本质,ActiveX Control必须背负运行时刻库这个沉重的包袱。如果采用静态连接MFC运行时刻库的方式,这将使ActiveX Control代码过于庞大,在网络上传输时将占据宝贵的网络带宽资源;如果采用动态连接MFC运行时刻库的方式,这将要求浏览器一方必须具备MFC的运行时刻库支持。总之MFC对COM技术的支持在网络应用的环境下也显得很不灵活。
解决上述COM开发方法中的问题正是ATL的基本目标。
首先ATL的基本目标就是使COM应用开发尽可能地自动化,这个基本目标就决定了ATL只面向COM开发提供支持。目标的明确使ATL对COM技术的支持达到淋漓尽致的地步。对COM开发的任何一个环节和过程,ATL都提供支持,并将与COM开发相关的众多工具集成到一个统一的编程环境中。对于COM/ActiveX的各种应用,ATL也都提供了完善的Wizard支持。所有这些都极大地方便了开发者的使用,使开发者能够把注意力集中在与应用本身相关的逻辑上。
其次,ATL因其采用了特定的基本实现技术,摆脱了大量冗余代码,使用ATL开发出来的COM应用的代码简练高效,即所谓的“Slim Code”。ATL在实现上尽可能采用优化技术,甚至在其内部提供了所有C/C++开发的程序所必须具有的C启动代码的替代部分。同时ATL产生的代码在运行时不需要依赖于类似MFC程序所需要的庞大的代码模块,包含在最终模块中的功能是用户认为最基本和最必须的。这些措施使采用ATL开发的COM组件(包括ActiveX Control)可以在网络环境下实现应用的分布式组件结构。
第三,ATL的各个版本对Microsoft的基于COM的各种新的组件技术如MTS、ASP等都有很好的支持,ATL对新技术的反应速度大大快于MFC。ATL已经成为Microsoft支持COM应用开发的主要开发工具,因此COM技术方面的新进展在很短的时间内都会在ATL中得到反映。这使开发者使用ATL进行COM编程可以得到直接使用COM SDK编程同样的灵活性和强大的功能。
本文的目的就是希望在有限的篇幅中能够使读者对ATL的使用和基本原理有一个初步的了解,为广大的COM开发人员更好地使用ATL开发起到抛砖引玉的作用。
基本技术
虽然使用ATL开发COM 应用是一件非常简单的事情,但是在ATL简单易用的界面后面却包含着复杂的技术。面对ATL生成的大量代码,我们即使不去深入地了解这些代码的含义也可以开发出COM应用来,但是如果我们要充分地挖掘ATL的潜力,开发出更灵活、强大的COM应用,则必须对ATL使用的基本技术有所了解。研究ATL的实质最好的教材就是由Visual C++提供的ATL源代码。本文这一部分只是对ATL中用到的最基本的技术进行简单的介绍。
简单地说来,ATL中所使用的基本技术包括以下几个方面:
COM技术
C++模板类技术(Template)
C++多继承技术(Multi-Inheritance)
COM技术是理解ATL的基础,使用ATL进行开发要对COM技术的基本概念有最低限度的了解。由于COM是一项非常复杂庞大的技术体系,限于本文的篇幅,这里不再赘述。对于本文中提到的COM基本概念也不做过多的解释,请读者参阅有关的参考书籍。
作为ATL最核心的实现技术的模板是对标准C++语言的扩展,但是在大多数的C++编程环境中,人们很少使用它,这是因为模板的功能虽然很强,但是它内部机制比较复杂,需要比较多的C++知识和经验才能灵活地使用它。在MFC中的CObjectArray等功能类就是由模板来定义的。完全通过模板来定义程序的整体类结构,ATL是迄今为止做得最为成功的。
所谓模板类简单地说是对类的抽象。我们知道C++语言用类定义了构造对象(这里指C++对象而不是COM对象)的方式,对象是类的实例,而模板类定义的是类的构造方式,使用模板类定义实例化的结果产生的是不同的类。因此可以说模板类是“类的类”。
在C++语言中模板类的定义格式如下:
注意:<和>是左右尖括号,可能无法正常显示。
template < class T>
class MyTemp
{
MyTemp<T>( ){ };
~MyTemp<T>( ) { };
int MyFunc( int a) ;
}
………….
Int MyTemp<T>::MyFunc( int a)
{
}
首先使用C++的关键字“template”来声明一个模板类的定义。在关键字后面是用尖括号括起来的类型参数。正是根据这个类型参数,编译器才能在编译过程中将模板类的具体定义转化为一个实际的类的定义,即生成一个新的类。接下来的定义方式与普通的类定义十分相似,只是在类的函数定义中都要带有类型参数的说明。
下面的程序段说明了模板类的用法:
typedef MyTemp<MyClass> myclassfromtemp;
myclassfromtemp m;
int a = m.Myfunc(10);
通常在使用模板类时为了方便起见,使用一个关键字“typedef”为新定义出来的类取一个名字。在上面的程序段中假设“MyClass”是一个由用户定义的类,通过将这个类的名字作为类型参数传递给模板类,我们可以创建一个新的类,这个类的行为将以模板类的定义为基础,例如它具有模板类定义的所有成员函数,同时这个类又是对模板类行为的一种修改,这种修改是通过用户提供的类型参数来实现的。赋予模板类以不同的类型参数,则得到行为框架相似但具体行为不同的一组类的集合。有了新的类的定义以后,我们可以象使用普通类一样来创建一个类的实例,即一个新的对象,并且调用这个对象的成员函数。
模板类是对标准C++语言的最新扩展,虽然它的功能很强大,但是要想使用好模板类需要相当多的关于语言和编程的经验和知识,而且错误地使用模板类又会对程序的结构和运行效率带来大的副作用,因此一般的编程环境和编程书籍对模板类的使用都采取谨慎的态度。而ATL的核心就是由几十个模板类构成的,通过研究ATL的源代码可以使我们对模板类的使用有比较深刻全面的认识。
多继承技术同模板一样,是C++语言中极具争议性的技术。使用多继承技术可以使程序的设计和实现更加灵活,但是,由于多继承的复杂性和自身概念上的一些问题,使多继承在各种面向对象的语言环境中得到的支持都非常有限。例如Small Talk根本就不允许多继承,同样MFC也不支持多继承技术。
东莞新能源
ATL品质方针:以完美的品质超越客户期望是全员不懈的追求。公司使命为移动设备提供一流的能源解决方案
公司概况
ATL是国家认证的高新科技外商独资企业。公司隶属于日本TDK集团,总部位于香港,其属下有三家全资子公司,分别位于东莞南城区,东莞松山湖科技产业园区和福建省宁德市。作为全球最大的锂离子电池生产商之一,新能源获得“广东省高新技术企业”以及当地“员工满意企业”等荣誉称号。公司被指定为广东省储能项目研究开发基地,现在已与国内外众多知名品牌企业建立了长期的合作伙伴关系。
新能源当前集中精力开发和生产适合于OEM客户的聚合物锂离子电池的电芯,适用于移动电话、掌上电脑、笔记本电脑、耳机和智能卡。
成立:
1999年10月
董事长:
陈棠华博士
副董事长:
张毓杰博士
总裁:
曾毓群博士
地点:
总公司 - 香港新能源科技有限公司,香港荃湾海盛路9号有线电视大楼35楼3号单位
独资子公司 - 东莞新能源电子科技有限公司,广东省东莞市南城区白马管理区新能源科技园
独资子公司 - 东莞新能源科技有限公司,广东省东莞市松山湖科技产业园北部科技工业园区
公司产品:聚合物锂离子电池,广泛应用于手机、蓝牙耳机、MP3、PMP、移动DVD、笔记本电脑、电动工具、电动汽车等各种移动设备。
公司使命:为移动设备提供一流的能源解决方案;
公司愿景:做一个有社会责任的、健康的世界企业公民;
品质方针:以完美的品质超越客户的期望;
我们的团队:目前公司规模超过1万人,其中成员来自中国大陆、香港、台湾、韩国、日本和美国等;
ATL职业健康安全方针:
我们承诺遵守职业健康安全法律法规,创造一个安全的工作场所,运用科学合理的操作方法,提供 充分有效的安全培训,建立责任制,引导员工关心职业健康安全,并对安全健康体系进行持续改进,保证 每个人都负起安全的责任。
导演
Chris Robinson
编剧
Gina Prince-Bythewood .....screenplay
Antwone Fisher .....screenplay
Tina Gordon Chism .....screenplay
Joe Robert Cole .....screenplay
Gina Prince Bythewood
演员
Khadijah Haqq .....Veda
Malika .....Star
Mykelti Williamson .....Uncle George
凯斯·大卫 Keith David .....John Garnett
塔莎·史密斯 Tasha Smith
Ric Reitz .....Guidence Counselor
Lonette McKee .....Priscilla Garnett
Big Boi .....Marcus
Jason Weaver .....Teddy
Bone Crusher .....Security
杰基·朗 Jackie Long .....Esquire
Laurene Landon
Brandon Thaxton .....Teenage Boy
Albe Daniels .....Brooklyn
Albert Daniels .....Brooklyn
Laurie Gardner .....Gala attendee
Tip Harris .....Rashad
Vanessa Petrosky .....Holly
Jazze Pha .....DJ
T.I. .....Rashad
Lauren London .....New-New
Lauren Leah Mitchell .....Janice Rawlings
Zoe Myers .....Preppy Girl
Evan Ross Naess .....Anton "Ant" Swann
Parker Price .....Skating Rink Patron
剧情简介
亚特兰大南部的贫民区里,生活着17岁的黑人拉沙德(提普·哈里斯Tip Harris饰)和他14岁的弟弟安特(伊万·洛斯Evan Ross Naess饰)。拉沙德像很多黑人孩子一样,热衷溜旱冰、HIP-HOP音乐,青春似乎可以无忧无虑;然而现实却是非常残酷的,他的父母已经双亡,照顾弟弟成长,为弟弟赚够学费的重担,就落在了拉沙德身上。偏偏安特又任性不羁,这令拉沙德的状况雪上加霜。
女孩妞妞(劳伦·兰顿Lauren London 饰)的出现让拉沙德堕入了爱河,这个女孩的身世却有着不为人知的秘密——她的父亲,正是当地富商约翰(凯斯·大卫 Keith David 饰)。约翰虽是贫苦出身,却在发迹后禁止女儿和贫民来往,这令妞妞每次约会都要隐瞒身份。当拉沙德得知这个秘密,他感到分外的失望,无论是爱情,还是亲情,都令他感到力不从心。
幕后制作
影片脱胎于编剧之一的安东尼·费舍的真实经历,使得其在故事创作和剧本改编成型是更具真实感。对于那些整日生活在社会底层“自娱自乐”的黑人孩子们,一些简单的运动和简单的生活遭遇都能对其未来的成长带来巨大的影响和变化。旱冰运动作为现代年轻人广为喜爱的一种运动非常普遍,街头巷尾,你经常能看到三五成群的孩子们在一起大飙轮滑技巧和速度。在美国的亚特兰大市,轮滑运动已经成为独具特色的一项运动。影片便是基于此,为观众勾画出了一个别样背景下的别样的青春成长故事。而且,该片的幕后制作人员,从导演到演员,都是清一色初出茅庐的年轻人。而影片大胆追求的简单洗练的拍摄手法以及演员表演真实不做作的特点,倒是给了观者更加真切实感的体会。就像自己亲身融入到这群可爱有朝气的孩子们当中一般。
在具体操作中,摄制组为了更加深入地表现亚特兰大市的旱冰文化以及年轻黑人们崇尚的Hip-Hop音乐氛围,影片全程都在亚特兰大市的街头实地拍摄。固然,在拍摄过程中,引来无数当地居民和游客的好奇,很多人更是在剧组的邀请下大胆加盟和参与,为影片更增添了街头气息浓郁的地域特点……
影片故事借鉴了音乐制作人达拉斯·奥斯汀和TLC乐队低音主唱提奥娜·沃特金斯的亲身经历,剧本出自安东尼·费舍之手,安东尼·费舍的上部自传式剧本曾被丹泽尔·华盛顿拍成电影《安东尼·费舍》(Antwone Fisher),并大获好评。
本片由高产音乐电视导演克里斯·罗宾森执导,曾为Jay-Z,Busta Rhymes,Snoop Dogg,Alicia Keys,P.Diddy,Mary J.Blige等当红音乐人拍摄音乐电视的克里斯·罗宾森是首次执导故事片,很多大牌明星,包括珍妮佛·洛佩兹、本·斯蒂勒、塞缪尔·杰克逊、艾斯·古巴、大鲨鱼奥尼尔和威尔·史密斯等都曾出现在他的音乐影像之中。在片中扮演拉沙德的演员是说唱明星提普·哈里斯,他的歌曲作品曾获美国唱片工业协会的白金认证。
幕后花絮
因为影片故事发生在亚特兰大,浓重的亚特兰大氛围成为拍摄影片的先决条件。制片人达拉斯·奥斯汀和很多剧组成员和演员都是土生土长的亚特兰大人,充满亚特兰大人文特点的创作阵容确保了影片的原汁原味。
在影片开拍的3个月前,所有年轻演员就赶到亚特兰大进行集训,其中大多人从未接触过旱冰。他们从站
新美国故事演员剧中造型图片(17张)立开始学起,包括平衡基础、肌肉训练、滑行步法和上身协调,每天的训练时间为上午9点到11点,下午3点到6点。
作为影片中亚特兰大南部地区的标志,一座名为“Jellybean”的旱冰场成为当地少年躲避毒品、帮派和暴力的理想场所,每周日晚8点至凌晨1点,这里都会聚集大量希望通过音乐和旱冰释放压力的年轻人,Jellybean由此也成为影片故事发生的重要地点。剧组很快在亚特兰大南部找到了一座名为“Cascade Family”的旱冰场,人气火爆到每周日晚无法在周围找到车位,虽然场地内部有些差强人意,但剧组决定着手改造并就此拍摄,旱冰场从颜色、照明,到外观和风格都得到彻底改观。
影片最初片名为“Jellybean”。