是的,设计应用不需要考虑cache,但设计架构呢?一种设计,一种架构。当你遵循一种设计时,很多概念就会定下来,例如SOA架构,CQRS架构等,至于一种架构为了生存,而支持多种设计,是商业的事。
“存储这些数据的时候必须采用这种方式进行存储”,“只不过现代的编程语言和编译器让你不需要去关注这个问题”,是的既然已经隔离了,还想回去干什么呢?我并没有否定存在的说法,这是一种上升思维,数据已经上升为对象。要不,按你这样的说法,“根据冯·诺依曼结构,所以对象是在否定数据?”上升过程不是否定存在的说法。
关于cache关注点到,到底是一直停留在数据,还是可以上升到对象,实体等概念。这是理解cache里最小单元问题,而cache本身的只是指缓冲存储,解决速度差过大的问题。也就是一切用作缓冲存储,解决速度差过大的东西或者行为都叫缓存cache。缓存本身是对功能目的进行定义的,并不是缓存内容,也就是只要满足上述要求,就是缓存。而数据缓存,对象缓存,实体缓存,是一种划分,只是这种划分因所缓存的内容,带有上升思维。cache是否需要满足全部思维,这是实现者的想法问题,但并不能否定上升思维,难道只能缓存对象的cache就不是cache了?只能缓存实体的cache就不是cache了?
单独谈cache,当然很多人会想到数据,因为没有context,因为这时的数据时概括,狭义上的数,对象,实体。这是一种象数思维问题。使用OO时,你还说“这是数据”?OO犹如context,它决定了在这个范围内所使用的术语。
关于设计和编译,不好意思,这里面并没有冲突,应该说毫不相关。就如C++编译器,就不能编译满脑子对象的C++程序?cache是一组概念,与编译时还是运行时无关。若果真要归到运行时,那么OO,实体等思维都是围绕运行时来思考的(因为现实就是一个运行时),与编译无关,难道你OO分析设计思维,要考虑到数据长度?要考虑堆栈?要考虑甚至到达01的问题?
关于是否cache支持全部,这是商家问题,并不影响思维,这取决于成本和思维的影响力,与思维本身存在没有任何关系。而cache存的是object数据?广义的数据,的确可以这么理解。不幸的是,全篇都在说狭义的数据,即数,没有对象概念的数。若果cache能存object,意思是缓存对象,这并非指数据,若果他既支持缓存对象和支持缓存数据,那么它可能受java语言,这个“不伦不类”所影响。若果换到其他纯OO语言,还有数概念?难道要到底层才有所谓的cache?呵呵,不能理解。
设计应用考虑cache?整篇文章有谈到应用?这是设计架构来支持设计的思考,难道对你来说只有应用,没有架构?很不幸,应用设计和架构设计,我分得很清楚。还是你一直都在混淆这些概念?还有我可以谦虚地说:我看的书确实不多,但我也可以很自豪地说:我看的书远远不止两本。其实,看书多少,与发言质量直接有关么?对我来说,理解多少,才与发言质量有直接关系。看适量的书+多思考>>看很多的书+不思考。
“人长两个耳朵一张嘴就是让你多听少说”这句话不是你这么理解的,这句话的意思不是叫你真的少说话,而是叫你在广纳百言,而不是叫你闭口不说(犹如某些人对老子“无为”的理解),打个比喻,若果我真的错了,我不说,谁知道我错了?若果按你的意思,很不幸的是,现实中,我多听少说,那么对方就是多说少听了,到头来你还是得用这句继续批评我的对方。
其实我们在使用缓存时就是使用某种程度的实体概念。<KEY,VALUE>对中,KEY是唯一标识,VALUE就是实体。但是这只能描述一部分,因为DDD中实体当中还有关系,实体用对象实现,就得考虑如何保存实体关系。当然你可以用DCI去完全解脱关系,不过这已经是另外一种思维,另外一种架构了。
[该贴被SpeedVan于2011-03-15 10:50修改过]
[该贴被SpeedVan于2011-03-15 10:58修改过]