4.2.12 VARIANT 数据类型和通用性
为了增强通用性,推出了下边的规则和建议。
一般的建议:
RARIANT类的 VT_I2, I4, R4, R8, CY, DATE, BSTR, BOOL, UI1 还有这些类型的单数组类希望能被经常作为通用类型使用。(部分地因为它们是VB里的合法类型)。
推荐无论什么情况下客户端请求的数据为这些数据类型,服务器也同样返回的是这些数据类型的数据。
如果想对一些扩展的数据类型进行使用在服务器和客户端都是同一个开发者开发的软件中进行不可移动的数据返回到客户端,为了通用性这些东西尽量少用。
在实际用于中法相一些服务器在条目加入和删除的时候不能断定不活动的数据类型(例如 那些远程和本地的连接)。作为不活动的数据类型返回的VT_EMPTY类型在这些服务器中已经得到了实践。当数据可用和他们的实际数据类型可以断定的时候,这些服务器会保持请求的数据类型和将以请求的数据类型返回数据,推荐客户端处理AddItems和ValidateItems返回的初始的VT_EMPTY。
通用规则:
在推荐的数据类型之上服务器被允许维护和返回任何合法的通用数据类型(任何的对VT_flags的合法更换)
客户端被允许请求在推荐的数据类型之上的Variant数据类型
服务器应该准备以极好的方法来处理那些不能被转化为他们被请求类型的数据。那就是,他们不应该失效,或返回错误的结果,或丢失内存,就像提到的,任何地方它们都可能返回各种错误包括微软VariantChangeType.返回的错误类型。
客户端应该随时准备处理那些不能处理请求数据类型的服务器。也就是,当错误被返回时它们不应该失效和丢失内存。
请求VT_EMPTY(习惯被表示返回他自己的通用类型)的客户端应该同样准备处理任何被返回的类型。也就是,即使发现他们不能用或不能显示返回的数据。他们应该正确释放数据。和正确地给用户提示一个不能被客户程序识别的数据类型被返回了。
Variant的实数值(VT_R4,VT_R8)将包含IEEE浮点数。标注,IEEE标准浮点数包含无数值的值(NAN)以这种格式存储。即使这些值相当少用,它们也是允许使用的。如果这些值被返回,就需要QUALITY 标志位被设置为OPC_QUALITY_BAD。
虽然IEEE标准允许NAN被存储到VT_R4和VT_R8格式,这些值仅可用目标条目的额外的固定格式来进行读写。他们不能与其他类型进行相互转换。当这些数值被读时QUALITY标志为必须被服务器返回OPC_QUALITY_BAD。如果这些值被写时QUALITY标志必须被客户提供位OPC_QUALITY_BAD,一些特殊的服务器是否返回和接受这些值就看服务器这方面是否特殊说明了。