|
楼主 |
发表于 2003-4-12 13:36:53
|
显示全部楼层
深入学习Cache对象
流(Stream)
1.流是字符或二进制数据流的一种抽象表示,它可以通过一个公共界来进行操作。每一个流类都是从派生%SerialStream的,可以用来创建具有大量数据的类属性(从这个意义上来看,流也可以表示某些HL7V3DT中的数据类型!也就是说,V3DT中的数据类型的含意可能比Cache中数据类型类的含意要广,流本身也是一种数据类型,弄清这点,对实现V3DT很重要)。
2.流有两种,一是字符串流,二是二进制流,前者用来表示文本属性,后者主要表示图象等。字符串流与客户端将有UNICODE转变。
3.流包括一些公共操作界面,这个界面在%AbstractStream类中定义。包括Read,Write,ReWind,AtEnd,Size,CopyFrom等。
4.在应用系统中,流是作为一个集来使用的,对流的操作是通过一个暂时类来实现的。流的层次分为:%AbstractStream,%CacheStream,%GlobalCharacteStream,%GlobalBinaryStream,%FileCharacteStream,%FileBinaryStream,%File。
5.用SQL来操作流:&sql(SELECT Memo FROM Person INTO :memo WHERE ID = 1),然后:Set stream=##class(%SerialStream).%Open(memo),最后可以这样:Write stream.Read(100)或Do stream.%Close()。这里%Open是具有多态性的,真正返回的流类型由实际存贮的类型决定。
6.在VB中,Cache提供了CacheObject.CharStream和CacheObject.BinaryStream来操作Cache中的流。
从上面的学习可以看到,流作为一种特殊的数据类型,Cache为它提供了各方面的支持,包括特殊的存贮结构、专操作界面、特有的使用方法、向客户端的返射等。这些都是在非常底层的功能中实现的,而并不是一般的数据类型可以实现的。这样,我们可以看到,好象Cache中所谓的数据类型类,只是一些系统最底层的低级数据类型,而一些高级的应用层数据类型,可能要用更根本的方法去实现,这要求我们更加深入到Cache系统的内部,使用M语言从底层开始实现,或充分利用Cache实现流类型的思路和方法,去仿照实现其它特殊的数据类型。
|
|