我打算构建一个可以由客户以传统方式或在云端(SaaS)托管的应用程序。
由于两个目标之间存在很多差异,有哪些……
你正在考虑正确的线条。当您围绕特定平台设计解决方案时,您应该以一种平台特定功能的使用者与实现屏蔽的方式来封装依赖关系。这是您执行此类操作的地方
说起来容易做起来难,但同样适用于Azure。如果团队在设计和开发过程中了解这些事实,您可以获得可以迁移到任何虚拟化平台的解决方案。
SQL Azure是SQL Server的一个很大的子集。从编程的角度来看,它们基本上是等价的(例如SP,表,索引,触发器等)。
有一些事情今天启用或不同(例如没有CLR,没有Sql Broker,大小限制)。您可以编写一个应用程序,最大限度地减少或消除对那些不受支持的功能的依赖性,您的应用程序将更“便携”。
Windows Azure表(以及其他存储组件)是特定于Windows Azure的。您需要封装使用它们的组件,并为依赖于它们的应用程序的其他部分提供兼容的界面。一个典型的例子是数据访问组件。或者用于异步通信的队列访问。
IoC / DI可以提供帮助,但它们不是强制性的。