关于提高WCF性能的实例方法

来源:互联网 发布:知乎 cqy是什么意思 编辑:程序博客网 时间:2024/05/18 02:51

背景:

由于项目需要,我们需要从PS里提取必要的数据并做成一个service。用户直接调用这个service去获得想要的数据。但是由于PS的查询有点慢,在加上我们需要对查询结果进行必要的转化。所以在获得PS上某个库数据的时候时间长达3分钟。对于这个时间,用户是无法接受的。那么经过同事的讨论,我们采用了一个可行性方案,使得这个时间由3分钟降到3秒。


设计思路:

由于PS的每个单元的数据都很多(~100个字段)如果每次对这些字段解析,那么时间就少不了。我们每次只取2个字段,一个是bug ID, 另一个是Rev。这样取所有数据的时间就变的很少了。接下来,我们利用数据库把这些字段存起来。如果当前的Rev和数据库里记录的不一致,先记录下来这个bug ID。最后统一把所有不一致的bug ID里的数据解析出来并存到数据库里。如果当前的Rev和数据库里记录的一致,从数据库把这条记录取出。这样就大大减少了解析PS数据的时间花费。效率自然就上来了。


另外一个问题,当前的字段是和PS保持一致的。如果用户需要转型怎么办?例如,我们取回来的是DateTime,用户需要的是String;在或者用户需要的String,真实的是int。等等。第一种解决办法是,直接在service里统一“转”型。那么带来的问题是: 1.时间问题。 2 如果有些用户就需要那些原始的类型怎么办。那么我的解决办法是,提供一个静态的方法,由用户选择性的去“转型”。 

public static String ToTestEndpointType(this String value)