【问题标题】:.NET Remoting vs. Web Services vs. Windows Communication Foundation (WCF).NET Remoting vs. Web Services vs. Windows Communication Foundation (WCF)
【发布时间】:2009-02-03 16:34:39
【问题描述】:
有人愿意帮助我了解 .NET Remoting、Web 服务和 WCF 的优缺点吗?我在 .NET Remoting 和 Web 服务方面做了一些工作,我正在构建一个新的 ASP.NET 3.5 Web 应用程序,我将在其中使用 SQL 2008 DB。首先,我想知道是否值得为这个应用程序真正研究 WCF。
在这种特殊情况下,以下是一些相关点:
- 大多数持久性数据都是错误和使用跟踪。
- 即使我使用 .NET Remoting,流量也无法保证物理远程处理服务器,但我希望有一天它会实现!
- 目前,我预计不需要从其他网络应用中获取这些数据。
不过,我还是想知道:
- 您何时/为什么要在 Web 应用程序中使用 .NET Remoting?
- 您何时/为什么要在网络应用程序中使用网络服务?
- 您何时/为什么要在 Web 应用程序中使用 WCF?
- 我应该考虑使用 LINQ to SQL 之类的技术吗?
- 还有其他更好的选择吗?
【问题讨论】:
标签:
asp.net
wcf
web-services
remoting
【解决方案1】:
实际上,我将我们的软件从传统的 .NET Remoting 切换到了 WCF。 Remoting 导致的通信膨胀是惊人的(只需查看 Wireshark 跟踪)。在迁移到 WCF 之前,我考虑过只使用传统的 .NET Web 服务,但我们为远程调用实现的接口需要进行大量修改(我们使用了一些 out 和 ref 参数,如果我不是,Asp.Net Web 服务无法做到这些)错了)。
真的,我想不出使用 Asp.Net 网络服务的理由,但我不是 Asp.Net 人。对我来说,它比 WCF 没有任何优势。使用 Web 服务可能更容易,但 WCF 提供的灵活性正是我所需要的。尤其是在消息格式方面。
我喜欢我的 WCF 服务,因为通过一项服务,我可以提供 JSON 或 SOAP/XML,并且支持所有协议(ipc、tcp 和 http)。
如果您希望在基于 Web 的场景中使用 WCF,那么它的严格绑定要求您为 HTTP 和 HTTPS 定义一个端点。与传统的 Web 服务不同,它“正常工作”,无论其安全与否。
【解决方案2】:
好问题!像你自己一样,我以前没有看过 WCF,想知道它是否会使 Web 服务或多或少过时?
关于您关于 Linq2SQL 的观点 - 鉴于这是一个出色的新应用程序,您可能会在几年内维护代码库 - 就个人而言(并且有可能因此而被否决 - 但请记住,这是一个有效的观点!)我倾向于查看实体框架。
我知道它的缺点,对我来说最大的问题是它与 DAL 的耦合过于紧密 - 因此它不能轻易地进行单元测试(相信我,这对我来说是一个大问题,尽管我确实有胆量感觉有一种解决方法可以实现这一点)。
但是,我个人的看法是,MS 不会让这项技术被淘汰,而且我必须考虑到有关它将取代 L2S 的传言。另一方面,L2S 是一种更成熟的技术,也是一种更安全的选择。
也许我太天真了,但我相信 Dan Simmons 说他们正在(最终)将 EF 交付为一个完全持久无知的架构 - http://blogs.msdn.com/dsimmons/pages/ef-faq-entity-classes.aspx#_Does_Entity_Framework
【解决方案3】:
我更愿意研究 EF,然后是 L2SQL。
只能连接到 MSSQL 的想法是我从未采用 L2SQL 的原因,从那时起很明显,MS 总有一天会放弃它。