SQL Azure适用于桌面客户端应用程序吗?

12

我有一个客户经营着一家小型企业。他们需要定制的数据库解决方案,我正在研究各种选择。我的经验仅限于使用本地SQL服务器的.NET(没有ASP.NET),然而这个客户并不懂技术,并且能够外包DBA任务将对他们有好处。我完全是Azure新手,只是浏览了一下教程,它们似乎都针对开发MVC ASP解决方案。客户不需要基于浏览器的解决方案。从不同地理办公室使用的fat desktop client将是我可以提供的最便宜的选项。我只是想节省一些时间,通过浏览所有的教程和文档,才发现这不是SQL Azure的预期用途。实际上,我的问题归结为:

  1. 我可以使用Entity Framework 4开发C#/.NET WPF桌面应用程序,并让它访问SQL Azure而不是本地SQL Server吗?

  2. 使用EF4和SQL Azure是否存在任何已知的捆绑风险?

  3. 与使用本地SQL服务器相比,使用SQL-Azure是否存在其他隐藏的开发成本/复杂性?

  4. 基本的工具支持是否相同?我能否得到用于故障排除的SQL Profiler工具等同支持?

  5. 最后一个问题与安全有关,我不够复杂,无法问出一个好问题,但是这种方式访问SQL Azure数据库是否被认为是一种安全风险?

2个回答

7
  1. 可以,但更适合的方法是使用WCF数据服务或其他形式的Web服务(asmx或WCF)作为应用程序的服务层。我喜欢这种方法用于业务线应用。我讨厌基于Web的业务线应用,通过使用连接到服务的WPF桌面应用程序,您可以在云中运行并提供云服务,而无需基于HTML。

  2. SQL Azure现在完全支持EF。过去曾有一些问题,但我最近没有遇到任何问题。

  3. 就开发成本和复杂性而言,Azure桌面托管环境在开发角度有点麻烦,但我没有遇到重大问题。您失去了共享本地DEV SQL Server的能力,除非您使用托管实例......当然,这会产生开发成本,因为您必须支付使用费用。

  4. 好观点!SQL Azure目前不提供SQL Profiler支持。我个人使用内置的EF跟踪支持来实现此功能。

  5. 直接暴露SQL Azure数据库从安全角度来看不是一个好主意。这就是为什么我建议在第1点中命中WCF数据服务(或其他Web服务)端点。


我不确定你所说的无法共享本地开发SQL Server是什么意思?没有任何阻止你在开发中使用本地SQL Server或SQL Express(实际上,这非常合理),只需更改连接字符串即可。你能解释一下吗? - Steve Morgan
感谢您详细的回复。我有一些WCF经验(仅限局域网),所以这可能是正确的路线。我应该提到我对EF是新手(尽管我有一些Linq to SQL经验)。在观看了一些关于EF的培训后,我被一些拖放式RAD功能所吸引,但我可以看出,在长期来看,使用服务层会更好。关于WCF,我仍然觉得所有的绑定选择(特别是所有的ws*口味)都很令人困惑。在我的项目中,我只使用过net.tcp,但这可能不适用于这里。有什么建议吗? - Tod
我的意思是运行一个Azure虚拟机,并拥有其他人可以连接的“真实”Azure环境。我猜你可以提供一个连接字符串来实现这一点...但我通常会按照你建议的方式运行常规SQL服务器。 - Jeff
1
我喜欢BasicHttpBinding的想法。它是跨平台兼容和透明的,这很好。但它不支持回调(除非使用PollingDuplexBindign)。我不太喜欢wsHttpBinding。话虽如此,如果您正在使用WCF数据服务并公开它们,那么您将使用REST绑定。我个人更喜欢公开WCF数据服务IQueryables而不是传统的服务操作(有些人不同意这种方法)。在这种方法中使用DTO,我的IQueryables实际上没有返回原始EF实体,而是对预过滤的DTO进行了投影。 - Jeff
你也可以在BasicHttpBinding中使用二进制编码。虽然这种方式不太兼容,但可以通过二进制序列化来提高速度。Net.Tcp是性能最好的(尤其是在使用Http进行二进制序列化时),但根据我的经验,在让客户端允许访问它方面会带来一些麻烦。 - Jeff

5
您可以开发一个桌面或本地应用程序,该应用程序使用SQL Azure作为您的数据库。
需要采取标准的Azure预防措施-假设连接故障会发生,并确保您的应用程序具有重试逻辑以恢复操作。还要注意,SQL Azure将终止任何超过一分钟的操作,以保留其他用户的服务。如果您有大量数据和一些麻烦的查询,那可能是相关的。
EF与SQL Azure很好地配合。 SQL Azure本身存在一些限制,您可以从Microsoft网站上的文档中阅读有关此内容。如果您为Azure设计数据库,则该数据库将在SQL Server或SQL Express上正常工作(但不一定反过来)。
除了每月数据库费用外,您还需要支付离开数据中心的数据。仔细设计您的应用程序,以最小化从数据库检索的数据量。您不再需要为进入数据中心的数据付费,这有所帮助。
您仍然可以使用SQL Management Studio和Visual Studio内的数据连接。但没有SQL Profiler。管理工作室中有一些令人恼怒的事情无法做到,但没有什么是不能克服的。
您将不得不打开防火墙规则以访问数据库,但希望它们是有限的。身份验证是通过SQL Server凭据进行的,而不是集成身份验证。
我不太倾向于这样做,但它可以工作。

感谢您指出“标准Azure预防措施”,因为我是新手,所以在我熟悉文档的同时,提前了解这些内容非常有帮助。您关于支付离开数据中心的数据费用的评论让我感到惊讶。在发布之前,我认为我已经理解了定价和计量部分的月度费用。您是否有一个链接可以显示额外的数据费用? - Tod
1
请查看http://www.microsoft.com/windowsazure/pricing/ - 标题为“以GB为单位测量的数据传输(与Windows Azure数据中心之间的传输)”的部分。 - Steve Morgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接