我有一套现有的单例WCF服务。它们是长期运行的流程,可以持续进行大量工作,并通过WCF服务合同展示自己与其他流程进行通信。
当开发WCF Web API时,我很兴奋,因为看起来我终于可以取消所有烦人的合同内容,只需为每项服务提供与平台无关的REST API并拥有进程通过HTTP请求和JSON响应进行通信。
现在看起来Web API已成为IIS托管的ASP.Net功能,让我试图弄清楚我是否只是遗漏了某些内容,或者我的WCF服务是否将无法再提供REST接口
如果Web API不再真正针对我的场景,那么ASP.Net团队对于希望为其他消费流程提供基于HTTP / JSON的API的非终止单例进程设想了什么?
答案 0 :(得分:5)
您不必在IIS中托管ASP.NET Web API服务。有一个名为“Self Hosting”的选项,如果您愿意,它允许您在另一个进程(例如Windows服务)中托管您的API服务。我认为您当前的架构可以作为自托管应用程序正常工作。
答案 1 :(得分:1)
您可以使用ServiceHost
中的this MSDN example进行自托管。见related SO post。基本上 - IIS不是WCF托管的必要条件。
如果您使用的是webHttpBinding
,则只需创建从ServiceHost
扩展的WebServiceHost
即可支持REST。