我有一个经营小型企业的客户。他们需要一个自定义数据库解决方案,我正在研究各种选项。我的经验仅限于使用本地SQL Server(没有ASP.NET)的.NET,但是,这个客户端是非技术性的,并且可以从外包DBA任务中受益。我是一个完整的Azure noob,我刚刚扫描了这些教程,它们都是针对开发MVC ASP解决方案的。客户端不需要基于浏览器的解决方案。使用来自不同地理办事处的胖桌面客户端将是我能提供的最便宜的选择。我只是想节省一些时间来浏览所有教程和文档,结果却发现这不是SQL Azure的目的。实际上我的问题归结为:
我可以使用Entity Framework 4开发一个C#/。NET WPF桌面应用程序,并让它命中SQL Azure而不是本地SQL Server吗?
EF4和SQL Azure是否存在任何已知问题?
使用SQL-Azure而不是本地SQL Server是否存在其他隐藏的开发成本/复杂性。
基本工具是否支持相同?我能想到的一个具体例子;获取SQL Profiler工具进行故障排除?
最后一个问题是与安全相关的问题,我不够复杂,不能问一个好问题,但是这样一个SQL Azure数据库被认为是一种安全问题吗?
答案 0 :(得分:7)
是的,您可以,但更合适的方法是使用WCF数据服务或其他形式的Web服务(asmx或WCF)作为应用程序的服务层。我喜欢这种业务应用程序的方法。我讨厌业务线的Web应用程序,通过使用服务连接的WPF桌面应用程序,您可以获得在云中运行并拥有云产品的好处,而无需基于HTML。
SQL Azure现在全面支持EF。过去有一些问题,但这些天我没有遇到过。
在开发成本和复杂性方面 - 从开发角度来看,Azure桌面托管环境有点像PITA,但我没有遇到重大问题。除非您使用托管实例,否则您将失去共享本地DEV SQL Server的能力....当然,由于您必须为使用付费,因此需要支付开发成本。
好点! SQL Azure目前不提供SQL Profiler支持。我个人使用内置的EF跟踪支持来实现此功能。
从安全角度来看,直接公开SQL Azure DB并不是一个好主意。这就是我建议在第1点点击WCF数据服务(或其他Web服务)端点的原因。
答案 1 :(得分:5)
您可以开发一个将SQL Azure用于数据库的桌面或内部部署应用程序。
您需要采用标准的Azure预防措施 - 假设将发生连接失败并确保您的应用程序具有重试逻辑以恢复操作。另请注意,SQL Azure将终止任何花费超过一分钟的操作,以保留其他用户的服务。如果您有大量数据和一些讨厌的查询,那可能是相关的。
EF适用于SQL Azure。 SQL Azure本身存在一些限制,您可以从Microsoft网站上的文档中了解这些限制。如果您为Azure设计数据库,它将在SQL Server或SQL Express上正常工作(但不一定相反)。
除了数据库的每月费用外,您还需要为离开数据中心的数据付费。仔细设计您的应用程序,以最大限度地减少从数据库中检索的数据量。您不再需要为进入数据中心的数据付费,这有助于。
您仍然可以在Visual Studio中使用SQL Management Studio和数据连接。但是没有SQL Profiler。使用Management Studio有一些令人恼火的事情,但没有什么不可克服的。
您必须打开防火墙规则才能访问数据库,但希望它们会受到限制。身份验证由SQL Server凭据进行,而不是集成身份验证。
我不倾向于这样做,但它有效。