Questions tagged «wcf»

Windows Communication Foundation是.NET Framework的一部分,它为快速构建面向服务的应用程序提供了统一的编程模型。

12
如何处理有关WCF与Web API的技术争论?
我现在正在管理一个由15名开发人员组成的团队,而我们在选择技术时陷入了困境,该团队被分为两个完全相反的团队,就WCF与Web API的使用进行了辩论。 支持Web API使用的团队A提出了以下原因: Web API只是编写服务的现代方式(Wikipedia) WCF是HTTP的开销。这是TCP,Net Pipes和其他协议的解决方案 由于[DataContract]和[DataMember]以及这些属性,WCF模型不是POCO SOAP不像JSON那样可读性强 与JSON(通过HTTP传输)相比,SOAP是网络的开销 没有方法重载 支持WCF使用的团队B说: WCF支持多种协议(通过配置) WCF支持分布式事务 WCF有许多很好的例子和成功案例(虽然Web API仍然很年轻) 双工非常适合双向通讯 这场辩论仍在继续,我现在不知道该怎么办。我个人认为,我们应该仅在正确的使用位置使用工具。换句话说,如果我们想通过HTTP公开服务,则最好使用Web API,而在TCP和Duplex方面则要使用WCF。 通过搜索互联网,我们无法获得可靠的结果。支持WCF的职位很多,但相反,我们也发现有人对此表示抱怨。我知道这个问题的性质听起来可能有争议,但是我们需要一些好的提示来决定。我们处于一个偶然地选择技术可能会让我们后悔的时机。我们想睁大眼睛选择。 我们的用法主要用于Web,我们将通过HTTP公开我们的服务。在某些情况下(例如5%到10%),我们可能需要分布式事务。 我现在应该怎么办?如何以建设性的方式处理这场辩论?
49 wcf  decisions  web-api 

2
从JSON移至Protobuf。这值得么?
我们有可以提供XML或JSON(WCF)的REST Web服务。我在玩实现Protobufs的想法。为什么? 优点 减轻服务器负载。 较小的邮件大小-较少的流量。 现在切换比现在容易。 缺点 需要实施 很难对消息进行故障排除/嗅探以进行调试。 我可以在服务器上启用GZip,而JSON将消耗尽可能多的流量 您对此有何建议和/或经验?

5
MVC,WCF,EF,LINQ-是我吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 8年前关闭。 ...还是事情变得越来越复杂? 在我看来,这些天您需要了解很多知识,才能“正确”开发MS Web应用程序。在糟糕的过去,我们并没有更好的了解,我们有了数据库表,ASP.NET,ADO.NET,并且您使用相对简单的概念构建了一个Web应用程序。 如今,似乎有很多框架可以“帮助”您“正确”地完成工作,但是我不认为这会使事情变得更容易和更好。我有这种感觉,我会成为少数,但是还有其他人认为事情有点发疯了吗?

3
我应该使用哪种.NET REST方法/技术/工具?
我正在实现RESTful Web服务和几个主要在Silverlight中的客户端应用程序。我在开发API的服务器端和客户端时发现了很多选择,但不确定哪种方法最好。我担心的是稳定性以及一个从现在开始几个月将继续存在的平台。 我们开始将REST Starter Kit与.NET 3.5一起使用,但在更新到.NET 4.0时,移至新的WCF Web API。他们所有的文档都表明WCF Web API替代了RSK。但是,Web API仅在Preview 4中,尚不包括对Silverlight或Windows Phone 7客户端的支持。 WCF Web API看起来像System.ServiceModel.Web库中提供的WCF WebHttp Services东西的包装,这使我认为仅使用内置东西可能会更简单,但是Web API确实提供了一些不错的功能。 我特别想尝试为客户端确定最佳课程。我的主要要求是我需要支持快速,轻松地将反序列化到客户端对象中。Web API提供了一个不错的客户端库,但没有Silverlight版本。 我想使用正在积极开发和支持的最新方法和工具集。 REST入门工具包真的过时了吗? 有没有人成功实现WCF Web API工具包? 通过内置的WCF WebHttp Services功能使用这些功能是否值得System.ServiceModel.Web? 是否有适用于任何客户端(Web,Silverlight等)的单一解决方案? 您有什么建议?
16 .net  rest  wcf 


2
我应该从WCF交换到NserviceBus吗
我们有一个中央服务器,可以从位于客户端网络中各个位置的多台PC发送和接收消息。为了简化此操作,目前,我将WCF与TCPNetBindings结合使用,并使用通过证书保护的双工通信。 现在,我们有很多问题-主要是我们被要求支持“断开模式”(我们需要容错)。据我所知,没有简单的方法可以使用WCF堆栈执行此操作-我们需要实现一些功能,也许还要使用msmq。我最近一直在研究NServiceBus,从中可以看出它似乎很合适-容错能力,可以通过简单的http网关通过Internet发送消息等。我知道它在社区中广受尊重,并且从调查中可以看出原因。 所以,我的问题是……使用NServiceBus听起来像是一个明智的主意,还是有人有与此相关的任何其他建议/现实世界经验?我想我担心引入的新技术我了解的相对较少,并且面临诸如保护它,以可靠的方式设置一切,一路走来的陷阱之类的问题。.我也对“黄金-电镀”的体系结构,然后选择一些有光泽的方法,最终会使我在实现过程中陷入困境,而不是坚持使用WCF并使之对我有用。 谢谢!

3
从WCF到Java Webservices的互操作似乎出奇的问题。有什么好的资源吗?
在最近的项目中,我们基于.Net的开发团队的任务是与全球各地基于Java的Web服务进行集成,我们确实遇到了很多令人惊讶的事情(当然,我们再也不会感到惊讶了)因为WCF生成的XML不被Java服务接受。 似乎也没有太多关于此主题的信息,我们从Yaron Nave出色的WCF博客http://webservices20.blogspot.com以及MSDN WCF论坛http:上 获得了一些不错的技巧。//social.msdn.microsoft.com/Forums/zh-CN/wcf/threads。 这里有没有人真的感觉到自己对此有所了解,并且知道有关该主题的权威资源?对书籍,博客或任何网站上的提示感兴趣。 编辑: 我对设置此线程上可接受的答案感到 不满意,因为两个最佳答案中的每一个都有一些价值:1.我们可能最终会做更多的HTTP Webrequest实现,而不是与WCF对抗。 2.但是WCF Express Interop Bindings 1.0也是一个非常明智的技巧。
13 java  wcf 

2
WCF / SOA-为什么要为简单请求创建参数对象
我们公司正在启动一个相当大的SOA计划。我们正在做很多正确的事情:良好的沟通;在适当的地方购买工具的钱;并且我们已经引进了一些优秀的专业知识来帮助我们过渡。 我们正在尝试制定可以作为一个整体遵循的标准,其中一项提议的标准使我颇为困扰: 我们已经在模式上进行了标准化,其中每个操作都需要一个请求对象并返回一个响应对象。 我意识到这对于许多人来说或多或少是一种标准方法,但是我在问我为什么要打扰?(我对所接受的智慧不是很好,我需要一些理由)。 我将提供的大多数服务是简单的组织元数据检索。例如,找到特定用户的安全策略。这需要一个用户ID,无其他要求。该标准告诉我,我应该将此请求包装在一个对象中,并将返回的策略包装在一个响应对象中。 查看合同产生的WSDL会加剧我的不安。WCF自动生成请求和响应消息,甚至包装请求/响应对象。 我完全理解,如果您要发出复杂的请求,那么就需要一个复杂的输入对象。即使服务不涉及,那也是您要做的。 我的问题是为什么在以下情况下我应该自动包装请求和响应: 它使简单服务的表现力降低 无论如何,您都会为复杂的服务而做 WCF无论如何都会创建请求/响应消息 我发现以下论点支持这种方法: 它通过允许将可选参数放入请求对象中来支持版本控制。 过去,我做了很多的COM,我认为这几乎是版本控制的反模式。对于某些事情,我想它会有所帮助,但我希望它会有所帮助,无论如何您已经有一个参数对象。 它允许将常见数据和行为隔离到基类 这个给我带来一些分量。 它使人们远离RPC样式的行为而转向消息传递的行为 我已经在Microsoft网站上阅读了此内容,并从我们的专家那里听到了,但是我仍然不清楚它们的含义或价值所在。看起来自然的界面是否使人们倾向于忘记他们正在调用远程服务? 我正在考虑重构大约300种方法的签名,因此这是不小的痛苦。我非常喜欢实现的一致性,因此我愿意承担痛苦,这将有助于知道最终所有这些都是值得的。
12 soa  wcf 

1
架构模块化服务应用程序
我正在考虑设计一种本质上是模块化的新解决方案,并希望创建一个支持该设计的结构,以便将来轻松进行扩展,明确分离关注点,按模块进行许可等。在网络上发现的关于模块化或组合应用程序的是以UI为中心的,专注于Silverlight,WPF等。就我而言,我正在开发WCF服务应用程序,该程序将由从事各种UI项目的其他开发人员使用。 背景 我的项目的目标是创建一个集中的业务/域逻辑源,以支持我们的多个当前重复流程,规则等的业务应用程序。虽然并非可以实现模块化的所有好处,但我想抓住建立一个可以利用我们可以利用的那些部分的框架的机会。 我通过查看服务应用程序公开的API来开始设计。显然,可以按照我所考虑的模块化路线来隔离服务。例如,我将拥有FinanceService,InventoryService,PersonnelService等服务,这些服务将我的服务操作分组以在API中提供高内聚性,同时保持较低的耦合度,因此客户端仅需使用与他们的应用程序相关的服务。 对于我来说,我可以为每个服务分别拥有单独的模块,例如MyApp.Finance,MyApp.Inventory,My.Personnel等。跨领域关注点和共享类型将在MyApp共享程序集中。从这里我有点束缚。 (哦,我应该提一下,我将使用IoC容器进行依赖注入来保持应用程序的松散耦合。我不会提及哪个容器,因为我不想打开Pandora的盒子!) 在MyApp.ServiceHost中,我将创建一个与每个模块相对应的服务宿主文件(.svc),例如FinanceService.svc。服务主机需要服务的名称,该名称与配置文件中的信息相对应,该配置文件包含定义服务合同的接口。然后,将IoC配置用于映射要使用的接口的具体实现。 1.服务层应该实现API并委托给模块,还是应该使模块自包含(因为它们包含与该模块相关的所有内容,包括服务实现)? 解决该问题的一种方法是拥有一个MyApp.Services“模块”,其中包含服务合同的实现。每个服务类都简单地委派给包含该操作的域逻辑的相应模块中的另一个类。例如,MyApp.Services中的FinanceService WCF类委托给另一个接口,该接口在Finance模块中实现以执行操作。例如,这将使我能够维护精简的服务外观并将实现“插入”到服务实现中,并且无需使模块担心WCF。 另一方面,也许每个模块都是独立的,因为它具有接口和实现。服务主机引用模块中的服务合同接口,并且IoC也配置为使用模块中的适当实现。这意味着除了添加新的.svc文件和IoC配置信息外,无需更改服务层即可添加新模块。 我正在考虑如果从标准WCF切换到RESTful服务接口,或者转而使用RIA服务之类的影响。如果每个模块都包含服务合同的实现,那么如果我更改服务技术或方法,则必须在每个模块中进行更改。但是,如果外观是其自己的模块,那么我只需要换出该部分即可进行更改。然后,这些模块将必须实现一组可能在共享程序集中定义的合同(接口)的不同集合??? 2.处理模块之间的资源共享和/或模块之间的依赖关系的最佳方法是什么? 以接收操作为例。乍一看,这很有意义,因为进货是库存功能,因此进入库存模块。但是,在财务方面,我们还需要生成收据并授权付款。 一方面,我希望使用某种类型的域事件/消息传递来传达操作。库存模块引发一个GoodsReceivedEvent,该事件由Financial模块处理以生成收据并启动付款过程。但是,这意味着财务模块需要了解已收到的库存项目。我可以简单地通过ID来引用它们,但是如果我需要收据的其他信息,例如名称和/或描述,单位成本等,该怎么办?每个模块都拥有自己的版本的清单项目以适应该模块的需求是否有意义?在这种情况下,财务模块在处理GoodsReceivedEvent时将必须执行自己的库存项目查找。 ... 我之所以使用此示例,是因为我已经与各种ERP系统进行了大量合作,并且知道它们是采用这种类型的模块化设计的-我只是不知道如何操作。我上面也没有明确提及,但是我更喜欢遵循域驱动设计原则来设计解决方案,并相信这种类型的模块化恰好适合该领域。 非常感谢我对此有所帮助。

1
如何在ASP.NET中构建良好的服务层?
我研究了一些问题,以及用于构建良好服务层的技术,但与此相关的一些问题我需要帮助。 首先,我需要一些信息。当前,我们有许多Web应用程序以蜘蛛网的方式相互通信(所有Web应用程序和数据库数据都以令人困惑的方式相互通信)。 我们希望对此进行更改,以便所有应用程序都经过一个服务层,在该服务层中,我们可以更多地使用缓存并封装通用功能等等。 我们希望该层也具有Web API,以便第三方客户端可以使用该服务中的信息。 我看到的问题是,如果我们使用MVC4 Web API构建服务层,则不需要使用webAPI在应用程序之间进行通信,这意味着我们必须构造URL并使用JSON / Xml。听起来不太有效。我假设有一个更好的方法将与实体和WCF一起在应用程序之间进行通信,但是我们可能会松开Web API的魔力? 因此,问题在于是否有一种方法可以将服务层既用作Web API(JSON / XML),又用作具有实体的后端服务层。如果我们被迫使用2个不同的服务层,我们可能不得不重复一些功能和其他不好的事情。 希望这个问题很清楚,请询问是否需要更多信息。

2
在我自己的应用程序中模仿Exchange Server的“ RBAC AuthZ”…(有类似的东西吗?)
Exchange 2010中有一个代表团模型,其中一组的WinRM的cmdlet的essentally分为角色,并分配给用户的角色。 (图片来源) 考虑到我如何利用PowerShell的所有优势,同时使用正确的低级技术(WCF,SOAP等),并且在客户端不需要任何其他软件,这是一个很好且灵活的模型。 (图片来源) 问题 我是否可以在.NET应用程序中利用Exchange的委派模型? 有没有人试图模仿这种模式? 如果必须从头开始,我将如何模仿这种方法?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.