首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> ASP.NET >> 正文

Windows群集开发:8)编写好的资源DLL的诫条

        编写好的资源DLL的诫条

        只要仔细注意几条规则和指引,编写好的资源DLL其实相当简单。大部分上文已经讨论过。本节是对编写资源DLL要牢记的关键事情的总结。

        使用Visual C++ 4.2b或以上(确保从www.microsoft.com安装了最新更新)和平台SDK来编写资源DLL和群集管理扩展DLL。高度整合的开发环境使得工作相当轻松。同样地,使用Visual C++调试器或WinDbg来调试DLL。

        在资源DLL的Startup例程中初始化全局数据,在Open中初始化资源特定的数据。

        在资源DLL中,确保使用分离的线程来执行耗时比较长的操作,比如打开资源,联机,脱机,等等。分离线程的创建使与资源监视器(以及其上的群集服务)的通信流程更加高效。假如,举例来说,资源要花费超过300毫秒的时间来联机,派生一个分离的线程来完成这个操作,可以使得入口能够立即返回。

        如果不想让资源DLL被群集服务的状态查询打断,返回一个事件句柄以通知群集服务不要调用LooksAlive。然后,使用该事件句柄向群集服务发送状态信息。

        在任何可能的情况下使用回调函数。回调函数允许资源DLL和资源监视器进行异步通信。典型情况下,一般资源DLL使用LogEvent和SetResourceStatus函数向群集服务记录资源事件日志和进行调试。调用 SetResourceStatus向资源监视器发送状态信息。

        如果要求群集事件、节点事件、组状态改变、群集数据库改变或更新事件通知到资源,创建一个群集通知端口(使用CreateClusterNotifyPort)来处理事件通知。注意,如果在多线程中使用通知端口,要小心竞争条件。例如,一个线程可能调用CloseClusterNotifyPort关闭通知商品,而另一个线程则调用了GetClusterNotify,正等待着从同一端口获取信息。要防止这种情况,可以在调用GetClusternotify的线程加入对CLUSTER_CHANGE_HANDLE_CLOSE的检查。关于更多关于事件通知和产生通知的事件,请参考平台SDK。

        支持CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES控制功能以便于诸如Cluster.Exe之类的管理工具能够设置那些仍没有被设置的属性。

        支持CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES和CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES控制功能以便于资源DLL能够在属性被存储之前进行校验。

        支持CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES、CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES以及CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES控制功能,如果资源类型具有私有属性。

        支持CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES和CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES控制功能,如果资源需要依赖于另一资源。

        如果可能,应该在在Open函数中读取属性。如果不可能,则应该在Online函数中读取。

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航