面,也使得C++显得不是那么纯净。winRT提供了组件层级的支持,基于引用计数,以及对各种设备平台的无缝对接。
winJS中,也可以使用winRT组件,但是自己在定制winRT组件上限制比较多,但C++,C#既可以访问winRT组件,也可以编写winRT组件,另外C++对STL支持比较好,目前大型软件的设计,都离不开STL,比.NET效率要高,这是我们应该深入理解和掌握的一门计数。
对winRT组件的要求如下:
1,支持metro风格的app的程序库
2,支持常见的用户体验的控件,
3,与HTMS,CSS无缝集成
4,支持快速响应(50ms以上的操作都要异步化处理)和高扩展性。
开发平台的选择:
1,基于XAML+C++/C#, 做本地应用
2,
HTML+JS, 做云相关应用
3,DirectX + C++, 做游戏开发
winRT中很多概念是从.NET中来的,三者比较,.NET提供了设计规范和模式,C++性能更高,JS具有
web开发的优势。在实际的开发中,需要结合项目实际业务,性能需要,选择不同的开发平台。
基于windows azure平台创建多租户模型的应用程序
windows azure具有以下特点:
易创建:很方便的定义计算服务和存储服务的量。
可伸缩性:计算服务具有负载均衡,存储服务具有自动的横,纵向扩展机制,queue+worker role提供了丰富便利的异步机制,基于数据分片的数据库设计。
高可用性:一般都大于99.9%
按需收费
可度量:可以通过API
查询用到了那些服务,以及用了多少。
多租户的数据模型:
1.单租户+单数据库:数据量少,性能高,安全性高,可以创建单独的SQL Service login,每
个用户只能登录自己的数据库,在数据库中不需要引入多租户的表结构,单这样做的缺点是可能随着数据的增加,维护的数据库太多,每个用户的数据较少时,造成数据库资源的浪费。
2.多租户+单数据库:数据量太大,可能超出SQL的负荷,安全保障低,需要在数据库中维护多租户的数据表结构。
3.多租户+多数据库:实现难度大一些,需要提供数据库自动拆分功能,在最新版的SQL Azure中提供了这一功能。
对于传统的单租户模型:数据库和应用程序,最后到用户,都运行在独立的节点上,数据库和应用部署在用户本地,软件更新需要征询用户同意,可能同时维护多个版本,就像我们目前MX16,某一时刻,市场上同时运行着1.1.1,1.1.2,1.1.3,现场有了问题,需要出差,现场的调试资源也很少,甚至没有。对于服务类软件厂商,停留在卖软件,licence的基础上,很容易出现盗版。
而对于基于windows azure多租户模型,是共享数据库和应用程序的,这样版本就很容易得到一致性控制,可以针对最新版本进行开发,从卖
软件过度到卖服务,避免盗版。资源可扩展,并在不需要时,节约成本。最终导致软件价格下降,软件供应商可以在自己的数据中心就可以完成升级操作,减少不同site出现的不同问题。
多租户模型设计对平台的要求:
计算资源的可伸缩性,易分配性
存储资源的可伸缩性,易分配性
高可用性
合理的收费模式:允许度量,易于度量已用的资源
多租户模型的
设计对程序的要求:
多租户数据模型的设计
提供租户管理(申请,购买,创建,删除等操作)
共享应用程序:租户信息的传递和保持,对业务的透明化
度量和计费
维护
容灾
开发流程的支持
另外,租户的创建要尽量异步,让worker role去做。对租户的操作进行检查,避免租户的非法访问其他租户的资料(客户端,业务逻辑层,数据层)。度量,尽量按需度量,操作越少越好,只度量关心的费用,避免计算资源的浪费。通常的度量内容如:
存储服务的度量
数据的度量(使用量和流量)
计算服务的度量
windows azure提供了以上内容的方便度量接口。数据库的升级,要保证向下兼容,应用
程序可以访问不同的版本的数据库,避免在数据库升级过