【发布时间】:2012-03-30 05:13:02
【问题描述】:
这和客户有关系吗?我的意思是,如果我将 AspNetCompatibilityRequirements 设置为必需。 wcf 是否仍可从 WP7、android 和 ios 等移动设备访问?
【问题讨论】:
这和客户有关系吗?我的意思是,如果我将 AspNetCompatibilityRequirements 设置为必需。 wcf 是否仍可从 WP7、android 和 ios 等移动设备访问?
【问题讨论】:
与客户端无关。 ASP.NET 兼容性在following article 中有说明:
尽管 WCF 模型的设计目的是在跨 托管环境和传输,通常情况下, 应用程序不需要这种程度的灵活性。 WCF 的 ASP.NET 兼容模式适用于不支持的场景 需要能够在 IIS 之外托管或通过其进行通信 HTTP 以外的协议,但使用 ASP.NET 的所有功能 网络应用平台。
与默认的并排配置不同,WCF 托管 基础设施拦截 WCF 消息并将它们路由到 HTTP 之外 管道,在 ASP.NET 兼容模式下运行的 WCF 服务 完全参与 ASP.NET HTTP 请求生命周期。在 兼容模式下,WCF 服务通过一个 IHttpHandler 实现,类似于 ASPX 的请求方式 页面和 ASMX Web 服务被处理。因此,WCF 的行为 在以下 ASP.NET 功能方面与 ASMX 相同:
HttpContext:在 ASP.NET 兼容模式下运行的 WCF 服务可以 访问 Current 及其关联状态。
基于文件的授权:在 ASP.NET 中运行的 WCF 服务 兼容模式可以通过附加文件系统访问来确保安全 控制列表 (ACL) 到服务的 .svc 文件。
可配置的 URL 授权:ASP.NET 的 URL 授权规则是 当 WCF 服务在 ASP.NET 中运行时对 WCF 请求强制执行 兼容模式。
HttpModuleCollection 可扩展性:因为 WCF 服务在 ASP.NET 兼容模式全面参与 ASP.NET HTTP 请求生命周期,在 HTTP 管道中配置的任何 HTTP 模块都是 能够在服务之前和之后对 WCF 请求进行操作 调用。
ASP.NET 模拟:WCF 服务使用当前身份运行 ASP.NET 模拟线程,它可能与 IIS 不同 如果 ASP.NET 模拟已为 应用。如果 ASP.NET 模拟和 WCF 模拟都是 为特定的服务操作启用,服务实现 最终使用从 WCF 获得的身份运行。
【讨论】:
它启用 ASP.NET 会话状态,这不是从 iOS、Android 和 WP7 访问 WCF 服务的挑战。使用 WCF 与这些平台(至少对于 iOS 和 Android)进行通信的真正问题是缺乏合适的客户端代理。这些客户端可以更好地使用 RESTful 服务,这可以通过 WCF 完成,但不使用 ASP.NET 会话状态,因为 RESTful 服务是无会话的。使用 MVC 路由和 JsonResult(或 MVC4 中的 Web API)也可以相当优雅地做到这一点。
【讨论】: