针对云和自托管应用程序?

时间:2011-04-15 14:00:54

标签: c# database azure cloud saas

我打算构建一个可以由客户以传统方式或在云端(SaaS)托管的应用程序。

由于两个目标之间存在很多差异,我必须遵循哪些指导方针来减少未来的问题?

我特别想到持久性存储......一方面我有传统的RDBMS(SQL Server,Oracle等)或者像MongoDB,couchDb等nosql系统,另一方面,我有使用“专有”和特定存储(Azure表,MS世界中的Sql Azure)。

我觉得有可能会有很多IOC,但是由于我是云端的新手,我会很感激任何反馈。

当然,我希望(乐观?)能够很容易地在方法之间切换......

THX

2 个答案:

答案 0 :(得分:2)

SQL Azure是SQL Server的一个重要子集。从编程的角度来看,它们本质上是等价的(例如SP,表,索引,触发器等)。

有一些事情今天启用或不同(例如没有CLR,没有Sql Broker,大小限制)。您可以编写一个应用程序,最大限度地减少或消除对那些不受支持的功能的依赖性,您的应用程序将更“便携”。

Windows Azure表(以及其他存储组件)是特定于Windows Azure的。您需要封装使用它们的组件,并为依赖于它们的应用程序的其他部分提供兼容的界面。一个典型的例子是数据访问组件。或者用于异步通信的队列访问。

IoC / DI可以提供帮助,但它们不是强制性的。

答案 1 :(得分:2)

你正在思考正确的路线。当您围绕特定平台设计解决方案时,您应该以一种平台特定功能的使用者与实现屏蔽的方式来封装依赖关系。这是您执行此操作的地方

  • 创建平台的缩进 intefaces。
  • 使用IOC容器或任何其他方法 解耦组件。
  • 清楚地分离与平台相关的代码 来自其他逻辑。例如,如果使用Azure存储库,则将存储处理代码完全保留在单独的项目中。


说起来容易做起,但同样适用于Azure。如果团队在设计和开发过程中了解这些事实,您可以获得可以迁移到任何虚拟化平台的解决方案。