我正在学习wcf,但我无法理解其中的好处。我有没有时间想要使用传统的网络服务?
我读了另一个有这些好处的帖子:
我阅读了编程WCF服务但是这是一本有点像CLR通过C#的高级书。我现在正在阅读学习WCF服务,并将阅读Essential WCF(推荐)。
如果我使用普通类尝试与Web /服务引用交谈,会发生什么?我知道这听起来很天真,这只是我缺乏网络服务的经验。
我正在编写一些WCF服务,因此我接触到具体细节。他们正在与我的网站主机提供的SOAP网络服务进行交互,因此我可以在我的网站上获取统计数据。这种方法有什么不对吗?
由于
答案 0 :(得分:2)
WCF是用于开发连接系统的统一编程模型。这意味着您使用单一框架来开发面向服务的解决方案。 WCF允许您相对不了解您的服务实现,并且无需担心客户如何使用您的服务并处理通信。这允许您通过不同的方式配置服务实现并以各种方式公开它,而无需触及您的服务实现。这是统一的部分。如果没有WCF,您必须熟悉特定于特定通信技术的框架,例如ASP.NET asmx Web服务,.NET远程处理,MSMQ等,并且通常这些框架会强制您的服务实现和蠕变,例如使用WebMethod属性或必须从MarshallByRefObject对象等派生,你只是不能采取您的服务实现,并轻松地通过另一个通信堆栈暴露它。如果我有一个添加两个数字的服务,为什么它不能通过http或tcp轻松暴露而不必担心低级别的细节?这是你的帖子中关于绑定的问题。绑定允许您接受服务并对其进行配置,以便可以使用不同的编码在不同的传输和协议上公开,而无需接触您的服务实现。
我有没有时间想要使用传统的网络服务?
Web服务使用定义良好,已接受和使用的标准,如HTTP和SOAP。因此,如果您希望您的服务被广泛的客户使用,那么您可能希望将您的服务公开为Web服务。 WCF带有开箱即用的预配置绑定,允许您的服务轻松地作为Web服务公开:basicHttpBinding和wsHttpBinding。您可能还需要考虑RESTful服务,这是一种适合HTTP模型更自然的架构风格。 WCF也支持RESTful服务
如果我使用普通话会发生什么 尝试与网络/服务交谈的课程 参考?我知道这听起来真的 天真,这只是我缺乏经验 在网络服务中。
WCF服务可以像ASP.NET asmx Web服务那样公开服务的wsdl。您只需向客户端项目添加服务引用即可生成客户端代理。还有一个名为svcutil的命令行工具,它还生成客户端代码,使您可以轻松地与服务进行通信。客户端服务类基本上镜像服务接口。您为该服务创建客户端代理的实例,然后像其他任何.NET对象一样简单地调用它的方法。在封面下,您的方法调用将转换为消息并通过线路发送到服务器。在服务器端,该消息将被分派到适当的服务方法。
我希望这有点帮助。有很多在线内容,例如MSDN和9频道的视频,你可以查看。你越是砸它并让自己接触它,更清晰的WCF会得到我的肯定。此外,WCF是 THE 框架Microsoft建议在.NET中开发连接系统。其他技术ASP.NET asmx,WSE和.NET Remoting很可能仍然可用,但可能不会得到进一步支持和开发。
答案 1 :(得分:1)
有许多现有方法可用于构建分布式应用程序。这些包括Web服务,.NET Remoting,消息队列和COM服务。 Windows Communication Foundation将这些统一到一个用于构建和使用服务的框架中。 以下是来自MSDN Why Use Windows Communication Foundation?
的链接答案 2 :(得分:1)
WCF实际上是“新”标准和新一代Web服务 - 甚至更普遍的通信 - .NET世界的协议和库。
每当你觉得需要让两个系统相互通信时 - 想想WCF。无论是公司局域网中的公司防火墙,还是通过互联网,通过直接呼叫或延迟消息排队系统 - WCF都是您的答案。 Mehmet写了一个非常好的总结,说明WCF如何统一WCF之前微软世界中存在的众多通信标准。
我会想到“学习WCF”一书,你应该比编程WCF好多了 - 这已经是非常先进的东西了!
WCF的主要支柱之一是您始终通过代理与服务进行通信的架构 - 无论该服务是使用NetNamedPipe绑定在同一台机器上运行,还是在服务器上的Down Under中运行于世界的一半 - 没有区别,您总是通过代理。这也允许WCF如此可扩展 - 由于代理总是在客户端(您的应用程序)和服务之间,它提供了扩展WCF的行为和内部工作的绝佳方式,以满足您的喜好和需求。
WCF基本上建立在SOAP通信之上 - 因此,连接和使用现有的SOAP服务应该没有任何问题。借助WCF REST入门套件以及即将推出的.NET 4.0发布周期,WCF还将扩展其REST风格的Web通信范围,如果这将成为您的要求。
所有这些确实显示了WCF最大的优势之一:它是一个统一且极其灵活且可扩展的通信框架,可以处理您抛出的任何内容。仅凭这一点就足以让我学习WCF了(首先我会同意这一点,我同意!),你不会后悔为这项努力付出的努力。
马克
答案 3 :(得分:0)
您是否正在撰写具体的申请表,或者只是沾沾自喜?
Google协议缓冲区,是一种非常好的通信选择。 John Skeet& Marc Gravell都完成了C#实现。 See here