在Azure中托管WCF服务并使用它们

时间:2012-02-10 20:30:05

标签: wcf azure

我对在Azure中托管WCF服务有一些不明确的问题:我将只有一个Web服务(没有网页),只有一个Web服务通过更多的客户端将能够将数据保存到SQL Azure。

我在本地计算机上创建了Web服务。

  1. 托管服务:托管服务的最佳方式是什么,请记住没有网页?我考虑过将其托管在一个辅助角色中,并使用Queues存储来存储来自客户端的请求......这样可以吗?是否可以更好地为服务使用WCF托管角色,将存储排队存储工作以及将从队列中提取任务的工作者角色(先进先出)...?你推荐什么人?

  2. 您是否有任何示例代码如何序列化对象并将其发送到WCF服务然后反序列化?我遇到了一些问题,无法让它发挥作用。

  3. 我使用证书时遇到了这项服务的安全性。

  4. 我在这里发布了另一个问题:Best Practices WCF Service - Windows Azure但我在Azure的开头就已经开始了。

1 个答案:

答案 0 :(得分:2)

除非

  1. 您希望您的服务获得非常繁忙的流量,或者每个要处理的邮件可能需要很长时间,客户端可以使用异步服务调用
  2. 您有特别严格的安全问题,需要使用gatekeeper pattern
  3. 我会为您的服务使用网络角色。这应该为您提供非常好的和简单的可伸缩性 - 只需添加更多角色实例。

    通过队列将服务处理卸载到后台工作者角色的模式主要用于非常高流量或计算上昂贵的服务中的负载均衡或强制执行非常严格的访问控制。

    为了安全起见,证书是相对复杂的,特别是如果您必须想出一种将它们分发给客户端的方法。在Azure上,使用Azure访问控制服务(ACS)可能更有意义,这允许您与各种身份提供商(如Live ID,Google,Yahoo!)进行联合安全性。和Facebook。如果您的客户端处于Windows企业类型环境中,则他们可以与其内部部署的Active Directory联合。最好的方法取决于您的具体情况。 ACS的良好起点是

    http://msdn.microsoft.com/en-us/library/windowsazure/gg429784.aspx

    您使用ACS的详细信息取决于您的服务性质。如果它是SOAP服务(例如WCF中的wsHttpBinding或basicHttpBinding),我会使用WIF。这是非常好的支持,编程非常简单。同样,有很多关于如何做到这一点的教程。谷歌将成为你的朋友。如果您正在开发REST服务,那么开发起来会有点复杂,但仍然非常可行。

    http://social.technet.microsoft.com/wiki/contents/articles/4067.aspx

    对于序列化要发送到WCF服务的对象,如果在客户端使用.Net,则由WCF客户端堆栈为您处理。网上有很多关于这方面的教程,样本,书籍和培训课程。尝试将此作为Azure上的入门者

    http://msdn.microsoft.com/en-us/library/windowsazure/gg651130.aspx

    SOAP或REST的选择又取决于您的场景

    • REST将为您提供更广泛的支持,例如移动设备等。
    • SOAP为您提供了更多安全选项和一些更复杂的行为,但会限制您的客户端而不是REST

    REST现在非常受欢迎,但它确实取决于您的需求。 SOAP仍然适用于许多用例。

    要获得更具体的答案,您必须提供有关服务和方案的更多具体细节。但是,如果你处于早期阶段,仍然需要选择如何继续(这听起来像),那么这些链接应该有助于你开始。