Gemstrone 和 Tangosol 为分布式数据缓存提供本地.NET 客户端

  • Floyd Marinescu
  • 霍泰稳

2007 年 4 月 4 日

话题:.NETDevOps语言 & 开发架构

Gemstrone 在上月随其本地 C++ 和.NET 缓存客户端一起,发布了它们Gemfire 分布数据缓存 / 网格产品的一个互操作更新。Tangosol 上周也发布了Coherence for .NET,它能为在 Coherence 的数据网格中访问数据提供本地 C# 客户端实现。这两个公司,以及 GigaSpaces 都有自己的基于 Java 的分布式缓存解决方案,在 2006 年也都发布了对.NET 的支持。这些工具的最常应用场景是在前端用.NET 客户端,后端用 Java 实现(特别是在金融企业里)的地方,在这儿.NET 代码可以在缓存里和基于 Java 的底层基础共享对象。

在二月份 Gemstone 是第一个发布本地 C++ 和.NET 客户端的,消除了在.NET 应用中部署 JVM,或者在 C++ 和 Java 之间分享数据时使用包装的需要。三月份的时候 InfoQ 就他们的解决方案采访了 Gemstone,关于他们的链接格式,Gemstone 回答说:

GemFire 使用一个二进制格式代表对象图表。这和将和 Class ID 信息在一起的对象声明编码到流中的 Java 对象序列协议有些类似。Class ID(被应用创建或者指定)信息是不同语言在非序列化时对字节互操作时,首选的方法。它为 Java、C++ 和.NET 对象之间的映射提供了绝对的映射,并建立了一个跨语言的持久编程模型。序列化框架可以处理负责的对象图表。除了支持基本的类型,序列化框架还增加了对字节数组和 XML 文档的本地支持。

Gemfire 支持 Java、C++ 和任何其他本地.NET 语言。为了能相互分享对象,它们必须以能访问那些对象的一种语言实现相同的对象模型。Gemstone 描述了大部分客户曾用过的一些方法:

  1. 在.NET、C++ 或者 Java(起始语言并不重要)里创建一个类;
  2. 在目标语言里创建一个相匹配的类;
  3. 在客户端(Java、C++ 或者.NET)注册这个类;
  4. 在每一个服务器上注册这个类。

最后产生的就是一个可以被所有成员理解和接受的通用序列化结构。在描述使用 Java 和.NET 互操作时的客户使用场景时,Gemstone 解释说:

在华尔街,我们能看到对部署在网格里 C++ 和 Java 客户端的大量需求,所有的这些需求都需要访问企业数据结构。在网格之外,我们在华尔街有为数众多的客户端,用以构建访问 EDF 的应用。在客户使用.NET 作为他们 GUI 开发的选择时,.NET 客户端是非常合适的。

GigaSpaces 在从前 InfoQ 做的采访中也解释了他们的互操作解决方案,以及他们对支持本地.NET 的重视。

查看英文原文:Gemstone, Tangosol Offering Native .NET Clients to Distributed Data Caches
.NETDevOps语言 & 开发架构