【发布时间】:2023-09-15 14:02:02
【问题描述】:
我即将开始将基于 C# 的桌面应用程序转换为基于 Web 的应用程序。出于几个原因,我想通过 Web 服务从逻辑中删除 GUI。微软有 asmx 文件、WCF 以及下周在 PDC 上可能会有的新东西。数据可以通过 SOAP、REST、JSON 以及可能的 12 种其他方式传递。
谁能推荐我应该开始使用的 .NET 框架?
【问题讨论】:
标签: .net web-services
我即将开始将基于 C# 的桌面应用程序转换为基于 Web 的应用程序。出于几个原因,我想通过 Web 服务从逻辑中删除 GUI。微软有 asmx 文件、WCF 以及下周在 PDC 上可能会有的新东西。数据可以通过 SOAP、REST、JSON 以及可能的 12 种其他方式传递。
谁能推荐我应该开始使用的 .NET 框架?
【问题讨论】:
标签: .net web-services
您即将迁移到一个新平台。我会去WCF。它可以满足您的所有需求。
最初,当您移动时,您可以使用 httpBinding,它非常接近 ASMX Web 服务,并且基于 SOAP。如果您以后需要一些高级功能,那么您绝对可以使用 webHttpBinding,这将为您提供基于 REST 和 JSON 的接口。 WCF 是非常强大的编程模型,您绝对应该转向它。
【讨论】:
我投票给 WCF,放下手。
【讨论】:
如果您想要 SOAP、REST 和 JSON 选项,那么您可能需要查看 WCF Web Programming Model 和 WCF JSON support,尽管我个人对 REST 实现并不满意。但是 WCF 以牺牲configuration hell 为代价提供了最大的灵活性。一定要熟悉它的diagnostics and svcTraceViewer,以免产生神秘的、无用的异常。并注意生成的客户端的broken implementation of the disposable pattern。
【讨论】:
对于像您这样的桌面应用程序,将数据作为 JSON 传递没有多大意义。它的主要用途是允许从网络浏览器更轻松地访问。虽然它们的用途不同,但 REST 也可以这样说。
在我看来,对于两个 .NET 应用程序的通信,WCF 是可行的方法。虽然对于许多人来说,ASMX 更容易符合他们的思维方式(只需用 WebMethodAttribute 装饰一些东西就完成了),但我不推荐它,因为缺乏体面的授权/身份验证/加密(任意选择)及其方式微软似乎不再鼓励使用。
顺便说一下,你也可以看看WSCF - Web Services Contract First。不幸的是,现在您有更多选择可供选择。 :)
【讨论】: