entity-framework - 使 Azure 云项目在云端/云端运行?

标签 entity-framework azure wcf-data-services

要使为 azure 开发的项目(也)可在云外部署(例如在 Windows Server 计算机上)需要执行哪些步骤?我的项目有 2 个 worker 角色。一个基本上是数据挖掘器,另一个托管(自托管)WCF 服务。它使用 Azure 表服务、队列和 Blob 服务。这些元素将如何从云中转换出来? SQL 数据库还是 NoSql 方法?我如何添加抽象级别以允许它使用实际可用的资源,而不需要修改底层实现(即我的 DataServiceContext 类基本保持不变)?

编辑1:

辅助角色 <=> Windows 服务

Azure 表服务 <=> EntityFramework + WCF 数据服务?

最佳答案

我曾经参与过一个项目,需要在云和本地部署,并使用相同的代码库。也许我可以分享一些我的想法。

设计时我们需要关心很多方面,主要关注云和本地之间的不同环境,并在我们的系统中构建一些虚拟化层。这样我们就可以通过配置进行切换。

  1. 文件系统:我们有一个虚拟的文件操作接口(interface),其中包含文件保存、删除和获取的方法。然后我们有两个本地和 blob 的实现类。

  2. 数据库:这可以通过支持 SQL Server 和 SQL Azure 的简单 SQL 帮助器类轻松完成。只需要更改连接字符串即可。但在使用SQL Server时我们也遵循SQL Azure的限制,例如不能跨数据库查询。

  3. 配置:我们将一些配置移至数据库并从 web.config 启用缓存,特别是对于那些可能在运行时更改的配置元素。这是因为在云上部署时,我们无法更改 web.config,除非推送新包。

  4. 托管:由于我们的项目是 WCF 服务,因此我们为底层服务实现创建了多个托管项目。其中一些用于本地部署,例如 Windows 服务托管、控制台应用程序托管和 IIS 托管。我们还有一个 Web 角色和 worker 角色,可用于在云上托管我们的服务。托管项目非常简单,并且都使用相同的服务实现类。

  5. 日志:我们利用文件系统层,使日志可以保存在本地文件(本地部署)或表服务(云部署)中。

  6. 缓存:我们从ServiceStack学习了代码,并为Windows Server AppFabric Cache和Windows Azure Shared Cahce构建了缓存接口(interface)和一些实现。可以通过配置进行切换。在下一个版本中,我们将为云服务缓存实现另一个实现类。

  7. 无状态:我们确保我们的应用程序,尤其是服务实现是无状态的。这不仅对于云部署非常重要,对于本地部署也非常重要。

希望这有帮助。

关于entity-framework - 使 Azure 云项目在云端/云端运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14642188/

相关文章:

json - 在 WCF 数据服务上请求应用程序/json 时请求的媒体类型不受支持

entity-framework - 如何在 WCF 数据服务中编写 'In' 查询?

c# - EF6 创建一个额外的空实体(表)

mysql - 在 MySQL 中编写与 UUID 列匹配的查询的正确方法是什么?

c# - 使用 Entity Framework 减少数据库调用

c# - 创建 Dictionary<string, EntityProperty> 的字典以存储在 Azure 表存储中

c# - 将 Entity Framework 导航属性映射到ViewModel对象

azure - 在 Azure 中选择哪种容器服务

html - 使用 IE 从不同主机获取时的 CSS 图像路径

c# - 不是正确的<type>?