DCOM迷航(二)
如何使DCOM的服务器可以回调客户端的函数。在尝试了若干人指出的若干方法之后,发现只有一种可以。就是在服务器和客户端创建两个用户名和密码相同的用户,服务器的DCOM指定用这个用户运行,客户端起码要是Power Users,就可以顺利回调。
编程是一门手艺
在编译一个OPC的例子的时候,发现Turbo C++ Explorer不支持ATL。根据Borland的说法,其实在BDS 2006的时候已经移除了ATL的支持。不知道为什么?BCB 4.0 到 6.0是支持的。
如果在编译的时候报告找不到vcla1.h,说明你的程序用了ATL。
为了玩OPC,必须在机器上让DCOM跑起来。使用dcomcnfg这个工具配置DCOM时,发现一选择“COM+应用程序”这个组就会出现一个错误,查看事件查看器,发现了这样一个错误信息:
运行时环境检测到其内部状态存在不一致。这说明进程中存在潜在的不稳定性,可能是由于 COM+ 应用程序中运行自定义组件、COM+
应用程序使用的组件或其他因素引起的。Error in
d:\qxp_slp\com\com1x\src\comsvcs\txprop\dtcinfo.cpp(158), hr = 8000ffff:
TransactionManager->GetWhereaboutsSize
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp
的帮助和支持中心。
正在运行 MS DTC 服务的帐户无效。 如果使用 Microsoft Management Console (MMC)
中的“服务”管理单元更改了服务帐户信息,就会发生这种情况。 MS DTC 服务将继续启动。请确认使用“组件服务管理器”更新了 MS DTC 服务帐户信息。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp
的帮助和支持中心。
其实是CodeGear带着原Borland的IDE回来了。CodeGear是Borland没卖成IDE之后,把IDE分拆出来成立的新公司。说Borland回来是因为Borland这个名字太响了,是程序员们的Heavenly Jerusalem。在猛禽那里看到《在TCX中使用SQLite3》,才知道CodeGear重新启用了Borland的Turbo商标,推出了Turbo系列的开发工具,其中有我最喜欢的Turbo C++ Builder 2006,分Professional和Explorer两个版本,Explorer是免费的,除了不能使用第三方VCL控件外,没有什么限制,基本和C++ Builder 2006一样。我还特地看了一下它的License,发现可以用于商业软件开发。我毫不犹豫地下了一个试用,装了一大堆.Net的支持,终于看到了熟悉而陌生的界面了。把一个7年前用C++ Builder 4.0做的多线程+数据库+串口通讯的程序放进去编译,发现大概需要改动一两处代码,主要是一些定义的小改动,程序基本就可以编译通过并跑起来,简直太棒了,就象一个多年不见的感情很好的情人又回到身边一样,往事又历历在目。
当年第一个C的开发环境就是Turbo C 2.0,后来用了Turbo Pascal 5.5和6.0,再后来是Turbo C++ 3.0。Delphi 1.0 16位版让我在Windows 3.1上见识了Visual的开发。当然,之后为了工作需要,开始使用Power Builder 5.0和6.0,再后来又因为需要开发多线程应用,使用了C++ Builder 4.0,感受到了VCL的魅力,BCB虽然用了Pascal写成的VCL库,影响了它的编译速度,但也继承了Delphi的稳定性,对于Windows的线程也做了很好的封装,而且可以直接调用Windows的API,所以当时写成的程序是可以在Windows NT上连续不间断运行几个月不当机的。以至于后来还是工作需要,使用VC++ 6.0的时候,我大骂了一声:“这也敢称自己Visual”。后来由于Borland的犹豫不决,好多人离它而去了。而且开源运动蓬勃发展,自己的工作也转向了Unix领域,就开始用vi和gcc了。对于Windows下的本地开发,一直也有关注,但始终找不到一个好的方案,受开源影响,始终很想找一个免费的开发方案。Cygwin和MinGW的效率太差,而且没有好的窗体库和它们配合,用MinGW编译wxWidgets简直是恶梦。微软的免费VC++ Express 2005实在太差。所以,CodeGear的免费工具来得实在太及时了。而且从CodeGear最近的动作来看,Borland IDE的复兴开始了,一个接着一个的惊喜,从Delphi For PHP,到宣布要推出Delphi For Ruby on Rails。我决定重投Borland的怀抱,毕竟一个免费的强健的可视化开发工具太吸引人了。
相关链接:
今天好多网站上都在说“微软主管声称自由软件运动已死”(英文):
前IBM员工现微软首席平台战略主管,微软Linux实验室负责人Bill Hilf狂言宣称要剥开围绕在开源软件周围的神话。“自由软件运动正走向死亡,Linux在2007年不再存在,你看就连Linus都有一个工作。”Linux微软又在做它的FUD(Fear, Uncerntainty and Doubt)战略了。这次采用的是偷梁换柱的手法。首先,Linux不是开源的全部,作为开源操作系统,FreeBSD早就解决了源代码和Unix专利的授权问题。Linux其实应该叫GNU-Linux,除了核心之外,其余的部分,从编译器到系统库(GLIBC)大量采用GNU的东西。GNU是GNU is Not Unix的缩写,是Richard Stallman在多年前,看不惯大公司垄断操作系统而建立的项目,所有的东西几乎都是从头写起,全部开源,而且都是基于GPL,目的就是为了这些源代码不至于给某些公司封闭起来,而是大家可以共享所有人的成果,真正的人人为我,我为人人。所以GNU才是开源运动的发源地。开源运动的结果是推动了信息产业的快速向前发展。问问现在多少人在用GCC就可以了。所以,即使Linux商业化了,我们仍然有其他选择,可以用FreeBSD,可以用各种其他的开源操作系统,GNU甚至有自己的内核叫Hurd。更何况在众多Linux的商业发行版之外,还有一个完全遵循GNU方式的发行版Debian。
kernel是由全职雇员维护的,拥有优先认股权。大部分人在IBM,Oracle,RedHat等商业公司工作。这意味着什么?这说明Linux在
2007年不再存在(我觉得他疯了)。世界上没有什么免费软件运动。如果说Linux代表了爱,和平和和谐,这是错误的,再说一遍没有自由软件运动,这都是商业行为。是由大的商业公司如IBM和小的商业公司如Ubuntu组成的。Hilf表示微软对开源感兴趣也是出于商业原因,不是什么伟大的利他性、爱或是营销手段。