Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带.NET2.0的WCF_C#_.net_Wcf_.net 2.0_Windows Xp Embedded - Fatal编程技术网

C# 带.NET2.0的WCF

C# 带.NET2.0的WCF,c#,.net,wcf,.net-2.0,windows-xp-embedded,C#,.net,Wcf,.net 2.0,Windows Xp Embedded,我们需要在只能运行.NET2.0的机器上实现WCF服务 这台机器是Windows XPe POS终端,我们还没有找到安装.NET 3.0的方法。我们无法使用新的XPe映像对其进行格式化,因为安装了专有的POS应用程序和驱动程序 有没有办法在.NET2.0上实现WCF服务?我们也可以使用标准的XmlSerializer来处理消息,但是.NET CF不支持作为服务器 另一种解决方案是以某种方式安装.NET3.0。安装程序抱怨没有安装WindowsXP SP2,并且无法在XPe上运行 有什么想法吗 更

我们需要在只能运行.NET2.0的机器上实现WCF服务

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

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

另一种解决方案是以某种方式安装.NET3.0。安装程序抱怨没有安装WindowsXP SP2,并且无法在XPe上运行

有什么想法吗

更新:我们也希望选择使用web服务,但我们的目标平台尚未安装。有人知道一种不使用IIS托管.NET2.0Web服务的好方法(生产质量)吗


解决方案:我们建议将Cassini与.NET 2.0 web服务结合使用。到目前为止,这似乎运作良好。谢谢你的帮助。

我可以想到两种可能性:

  • 尝试将应用程序使用的多个DLL链接到单个exe的系统之一。 以下介绍其中一种工具:
  • .NET3.0主要是添加到.NET2.0中的一些新DLL(WPF、WCF和WF)。您可能只需将适当的DLL与应用程序一起复制就可以成功。(有些人认为这是一个危险的想法,但在你尝试之前你不会真正知道。)

  • 听起来你已经用尽了大部分的可能性。是否有任何理由必须使用WCF而不是.NET2.0现成支持的普通SOAPWeb服务?虽然我理解使用较旧的技术会让人沮丧,但我怀疑,与在.NET2.0上拼凑一个WCF实现相比,走上相对主流的道路会遇到更少的问题


    (我强烈建议不要尝试在.NET 2.0上使用.NET 3.0程序集。这可能会违反许可证-您必须检查-但它也可能以微妙的方式破坏,这将非常难以调试。毕竟,谁确切知道.NET 3.0安装程序正在做什么?您想追踪它写入的每个注册表项吗?您可能需要检查。))答案是否定的。你不能在2.0系统上安装或以某种方式使用WCF

    您的选项是:

    • WCF是为所有WS-*标准而构建的。您可以使用Web服务增强(WSE)3.0或使用远程处理.net类手工编写您自己的类
    • 你可以看看Mono Olive,它应该是WCF的开源复制
    您不能在两者之间放置一个“代理”吗?因此您的POS使用SOAP/ASMX与代理对话,然后代理与WCF服务对话


    我同意,尝试“黑客”将.net 3.0 DLL集成到.net 2.0系统听起来像是一个痛苦的世界。

    我们已经在WCF上实现了该服务,并且它在其他地方也在使用,我们的实现是非常分层的,在服务的最后是一个接口,它为每个WCF调用完成所有工作。当我们必须与另一个POS应用程序集成时,我们只需实现e接口在一个新的类中--所以我们试图保持这个基础设施。我认为您建议使用web服务可能是我们最好的选择,我们只是需要实现一个新的层来在使用WCF和SOAP web服务之间交换,还有其他想法吗?我们刚刚发现XPe的映像没有安装IIS,所以我看起来我们不能使用SOAP web服务,除非我们可以在进程中托管它们,而不是从IIS托管。有什么好方法可以做到这一点吗?@Jonathan:嗯。你可以看看Ultdev Cassini:但是OP还想运行(激活)CF上的服务,这可能会涉及更多。我们将对此进行调查,我怀疑我们必须包括很多DLL。对我来说,这似乎是一种危险的方法。哪一部分是危险的?我提出了两种解决方案。-1:WSE过时了。如果有其他选择,就永远不应该使用它。比如,如果不使用WSE,就会有人死亡。Lose是一个arm-不要使用它。我认为Olive对于我们想要使用它的目的来说有点太实验化了。它甚至在他们的网站上这样说,尽管如此,评论还是不错。桑德斯:如果你坚持使用过时的技术,使用过时的技术是一个可行的选择。问题是他们无法升级到3.0。你还有什么建议吗?WSE不是o过时。它过时了,几乎不受支持。@Jonathan:你能澄清一下.NET CF部分吗?你实际上是在运行.NET CF还是桌面.NET 2.0?我指的是.NET CF对WCF的实现,他们只是使用了一些网络类并添加了xml序列化。我原以为它可以应用于在.NET 2.0上使用WCF,但看起来很简单一点工作。