是否同时针对云和自托管应用程序?

| 我打算构建一个可以由客户以传统方式或在云(SaaS)中托管的应用程序。 由于两个目标之间存在许多差异,为减少将来的问题,我必须遵循哪些准则? 我特别考虑持久性存储……一方面,我拥有传统的RDBMS(SQL Server,Oracle等),或者也许有Nosql系统(如MongoDB,CouchDb等),另一方面,我必须工作具有“专有”和特定的存储(Azure Table,MS世界中的Sql Azure)。 我有很多IOC的感觉,但是有可能,但是由于我是云新手,所以我希望收到反馈。 当然,我希望(乐观?)能够轻松地在方法之间进行切换... 谢谢     
已邀请:
您正在考虑正确的路线。在围绕特定平台设计解决方案时,应以封装依赖关系为目标,以某种方式保护平台特定功能的使用者不受实现的影响。 为平台创造吸引力 接口。 使用IOC容器或任何其他方法 解耦组件。 明确分离平台相关代码 从其他逻辑。例如,如果使用Azure存储库,则将存储处理代码完全放在单独的项目中。 说起来容易做起来难,但是同样适用于Azure。如果团队在设计和开发过程中意识到这些事实,那么您可以拥有一个可以移植到任何虚拟化平台的解决方案。     
SQL Azure是SQL Server的很大一部分。从编程的角度来看,它们本质上是等效的(例如SP,表,索引,触发器等)。 今天有些功能无法启用或有所不同(例如,没有CLR,没有Sql Broker,大小限制)。您可以编写一个应用程序,以最小化或消除对那些不受支持的功能的依赖性,并且您的应用程序将更“便携”。 Windows Azure表(和其他存储组件)特定于Windows Azure。您将需要封装使用它们的组件,并为依赖于它们的应用程序的其他部分提供兼容的接口。一个典型的例子是数据访问组件。或排队访问以进行异步通信。 IoC / DI可以提供帮助,但不是强制性的。     

要回复问题请先登录注册