2012-02-10 75 views
-1

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

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

  1. 托管服务:什么是托管它的最佳方式,牢记没有网页?我想过将它托管在一个工作角色中,并使用Queues存储来存储来自客户端的请求......这很好吗?对于服务使用WCF托管角色可能更好,将存储工作的队列和将从队列中提取任务的工作者角色排队(先入先出)。你推荐什么人?

  2. 你有任何示例代码如何序列化一个对象并将其发送到WCF服务,然后反序列化它?我有这个问题,不能得到它的工作。

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

我已经在此发布了另一个问题:Best Practices WCF Service - Windows Azure但我在Azure的开始阶段。

+0

因此,将只托管WCF服务,客户端可以以安全的方式(证书)连接和保存数据到SQL azure,基本上会有相当多的后台工作......所以为此,我考虑将它托管在一个工作人员的角色会更好......担任主持人并拥有相当多的背景工作......这会影响表演吗? – user1200425 2012-02-10 20:32:35

+0

嗨再次...我去了一篇文章:,你认为这种认证方法,而不是使用SSL证书?验证客户端的最佳方式是什么?再次感谢! – user1200425 2012-02-10 20:45:29

+0

每个问题请提出一个问题。 – 2012-02-11 03:27:27

回答

2

除非

  1. 你希望得到您的服务或每封邮件要处理可能需要较长时间交通非常繁忙,客户端即可使用异步服务调用
  2. 你有特别严格的安全关注和需要使用gatekeeper pattern

我会为您的服务使用Web角色。这应该给你非常好的和简单的可扩展性 - 只需增加更多的角色实例。

通过队列将业务处理卸载到后台工作人员角色的模式主要用于在流量非常高或计算成本很高的服务中进行负载均衡,或执行非常严格的访问控制。

为了安全起见,证书是相对复杂的,特别是如果您必须想出一种将它们分发给客户端的方法。在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仍然适用于许多用例。

对于更具体的答案,你将不得不提供更具体的服务和你的情况。但是,如果您处于早期阶段,仍然需要就如何继续进行选择(这听起来像是这样),那么这些链接应该可以帮助您开始。