WCF丢弃重复数据

本文关键字:数据 WCF | 更新日期: 2023-09-27 18:14:21

我正在编写两个服务之间的网关,其中一个服务非常慢,并且很快过载,另一个非常快并且经常发送相同的数据。

我想让我的服务丢弃(在尽可能早的点)我收到的等于先前对象的数据。

最好的方法是什么?

我知道的最好的方法(我怀疑是最好的)是将反序列化后收到的对象与我已经收到的对象集(换句话说,就是缓存)进行比较。

我更关心的是丢弃计算上容易丢弃的数据,而不是确保丢弃所有重复的数据。

仅供参考,除其他事项外,数据中的地理信息通常是相同的。

澄清:

:

Service 1速度很快,频繁地发送没有新数据的更新。服务2太慢

我想从服务1发送数据到服务2(稍微修改一下),但前提是我还没有发送相同的数据。

戴尔

WCF丢弃重复数据

如果没有更多的信息,很难说什么是最好的方法,但是听起来您可以从一个相对简单的缓存中获益。我不确定你是在写重还是读重的场景中,但你应该能够使它工作。

IE,快速服务被调用,并在调用慢速服务之前检查缓存中的结果

我认为kenith提供了一个好主意。

只是为了框定问题,听起来你有这样的情况(澄清你的问题,如果这是不正确的)…

[业务1]->(呼叫)->[业务2]

  • 服务1 -更快,超载服务2.
  • 服务1 -向服务2发送重复数据,所以很多数据可以忽略。

如果是这种情况,正如Kenneth建议的那样,您可能想要实现已经从服务1发送的请求的缓存机制,并存储从服务2接收到的答案。在伪代码中,像这样:

  1. 服务1检查一些公共存储,看看它即将发送的请求是否已经发送。
  2. 如果有,它检查从Service 2发送回来的答案。
  3. 如果没有,则发送请求并将该请求添加到已发送的请求列表中。
  4. 当提供答案时,它将与原始请求一起存储在缓存中。

尽可能早地检测重复数据是在数据的发送方,而不是在接收方。

添加一个内存缓存。如果对象是重复的,那么不需要序列化它,也不需要浪费时间发送它。

顺便说一下,如果你想要一个好的。net内存缓存,我有很好的运气与Couchbase的MemcacheD