【问题标题】:WCF with .NET 2.0带有 .NET 2.0 的 WCF
【发布时间】:2009-08-21 16:50:05
【问题描述】:

我们需要在只能运行 .NET 2.0 的机器上实现 WCF 服务。

这台机器是Windows XPe POS终端,我们还没有找到安装.NET 3.0的方法。我们无法使用新的 XPe 映像对其进行格式化,因为安装了专有的 POS 应用程序和驱动程序。

有没有办法在 .NET 2.0 上实现 WCF 服务?我们可以像 .NET CF 那样使用标准的 XmlSerializer 来处理消息,但是 .NET CF 不支持作为服务器...

另一种解决方案是以某种方式安装 .NET 3.0。安装程序抱怨没有安装 Windows XP SP2,并且Windows Update 在 XPe 上不起作用。

有什么想法吗?

更新:我们还希望选择使用SOAP Web 服务,但我们的目标平台没有安装IIS。有没有人知道在没有 IIS 的情况下托管 .NET 2.0 Web 服务的良好(生产质量)方法?

解决方案:我们正在使用 Cassini 和 .NET 2.0 Web 服务作为标记的答案建议。到目前为止,这似乎运作良好。感谢您的帮助。

【问题讨论】:

  • @Jonathan:你能澄清一下 .NET CF 部分吗?您实际运行的是 .NET CF 还是桌面 .NET 2.0?
  • 我指的是 .NET CF 的 WCF 实现,他们只是采用了一些网络类并添加了 xml 序列化。我认为它可以应用于在 .Net 2.0 上使用 WCF,但这似乎是一项相当多的工作。

标签: c# .net wcf .net-2.0 windows-xp-embedded


【解决方案1】:

听起来您已经用尽了大部分可能性。您是否有任何理由必须使用 WCF 而不是 .NET 2.0 开箱即用支持的普通 SOAP Web 服务?虽然我知道使用较旧的技术令人沮丧,但我怀疑与以某种方式在 .NET 2.0 上拼凑 WCF 实现相比,走相对主流的道路会遇到更少的问题。

(我强烈建议反对尝试在 .NET 2.0 上使用 .NET 3.0 程序集。这很可能违反许可证 - 您必须检查 - 但它也可能会在细微处中断很难调试的方式。毕竟,谁知道确切.NET 3.0 安装程序在做什么?你想追踪它写入的每个注册表项吗?你可能 em> 算了,但我认为这是个坏主意。)

【讨论】:

  • 我们已经在 WCF 上实现了该服务,并且它正在其他地方使用,我们的实现非常分层,并且在服务的末端是一个接口,它为每个 WCF 调用完成所有工作。当我们必须与另一个 POS 应用程序集成时,我们只是在一个新类中实现接口——所以我们试图保持这个基础设施到位。我认为您对使用 Web 服务的建议可能是我们最好的选择,我们只需要实现一个新层来在使用 WCF 和 SOAP Web 服务之间进行交换,还有其他想法吗?
  • 我们刚刚发现我们的 XPe 映像没有安装 IIS,所以看起来我们不能使用 SOAP Web 服务,除非我们可以在进程中而不是从 IIS 中托管它们。有什么好办法吗?
  • @Jonathan:嗯。你可以看看 UltiDev Cassini:ultidev.com/products/Cassini
【解决方案2】:

我能想到两种可能:

  1. 尝试将应用程序使用的许多 dll 链接到单个 exe 的系统之一。 此处描述了其中一种工具:http://www.remotesoft.com/linker/linker_faq.html
  2. .NET 3.0 主要是在 .NET 2.0 中添加了一些新的 dll(WPF、WCF 和 WF)。您可能只需将适当的 dll 与您的应用程序一起复制即可。 (有几个人认为这是一个危险的想法,但在你尝试之前你不会真正知道。)

【讨论】:

  • 但 OP 还想在 CF 上运行(激活)服务,这可能涉及更多。
  • 我们将对此进行调查,我怀疑我们必须包含很多 dll。
  • 这对我来说似乎是一种危险的方法。
  • 哪一部分是危险的?我提出了两种解决方案。
【解决方案3】:

你不能在两者之间放置一个“代理”吗?因此,您的 POS 使用 SOAP/ASMX 与代理通信,然后代理与 WCF 服务通信。

我同意,试图将 .net 3.0 DLL“破解”到 .net 2.0 系统中听起来很痛苦。

【讨论】:

    【解决方案4】:

    答案是否定的。您不能在 2.0 系统上安装或以某种方式使用 WCF

    您的选择是:

    • WCF 可与所有 WS-* 标准一起使用。您可以使用 Web Services Enhancements (WSE) 3.0 或使用远程处理 .net 类手动编写您自己的类。
    • 你可以看看 Mono Olive。它应该是 WCF 的开源复制。

    【讨论】:

    • -1:WSE 已过时。如果有任何其他选择,则永远不要使用它。就像如果不使用 WSE 有人会死。失去一只手臂 - 不要使用它。
    • 我认为 Olive 对于我们想要使用它的目的来说有点太实验性了。它甚至在他们的网站上也这么说,不过评论很好。
    • Saunders:如果您坚持使用过时的技术,使用过时的技术是一个可行的选择。问题表明他们无法升级到 3.0。您还有什么建议?
    • WSE 并没有过时。它已过时,几乎不受支持。
    猜你喜欢
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多