描述:
当前的COM是IIS和后台处理程序的桥梁,设想中的Com 写成Service的形式,在服务启动时,程序要处理的工作是创建一组(若干个) Socket 与后台处理程序的SOCKET SERVER 建立连接. 然后,程序放置的ATL OBJECT 为simple object.姑且名称为Connector. 在Connector中定义不同的method 供asp 凋用。
举例说,asp有一帐号登记的请求, asp调用connector 的method AccountRegister(...) ,AccountRegister 中包含的处理包括调度一空闲的连接并通过该连接将请求发送到后台处理程序.
变量和函数的规划:一个简单的解决方法是将变量定义为全局的,
UINT g_nConnFlag[MAX_CONNECTS]; //Socket连接状态
SOCKET g_Socket[MAX_CONNECTS] ; //Socket连接实例
char g_szAgentIP[16]; //后台程序ip
UINT g_nConnAmount; //连接到后台程序的socket数量
CCriticalSection g_CriticalSection;
CMutex g_Mutex;
处理函数也定义为全局的,包括调度函数、连接建立函数等等
现在令我头痛的很的问题来了,个人对全局变量的使用总是有抵触情绪,
我考虑过将这些处理方法和属性放在简单对象的处理类CConnector 或是放在CComModule 的派生类CServiceModule 中,我现在茫然的很,网友,希望你能为我指点迷津(^_^) ,不胜感激。
解决方案1:
写个Application对象,使用单件工厂,这样每次创建出来的对象都是唯一的,把你的全局变量都封装在这个对象里。关于设计的问题,建议去看看设计模式那本书。