自从体会到DSO在SQL Server2005 中的险境以来,这一个多月的工作都围绕着它所进行着。不知道是不是因为国内做基于Analysis Services的产品较少的缘故,似乎对DSO之类的讨论非常少。但是对于我们Team现在,DSO十足是一个心病。
大家都认识到微软的SQL Server 2005发布的重要性,如果我们的产品不能及早支持这个平台,很快将会在队伍中消亡。DSO之所以是个心病,是因为在以前的版本中,我们太依赖它了。在基于Analysis Service 2000的平台上,我们利用DSO几乎实现了它所能实现的所有功能(我们以前的平台是ASP+COM+SQL/AS2k)。从创建数据库,维度,立方体,到Partition,Roles,Level等所有对象的创建和维护,我们在代码中都实现了。由于在 2005上面不能再使用DSO的缘故,我们列出了四条出路:
1. 借助2005中自带的Migration程序把2000的数据库迁移过来,并希望DSO仍能被迁移版本支持。
结果是令人失望的,一是没有能成功迁移数据库(旧数据库我们实现了Virtual Cube等很多不兼容或不被支持的特性),二是由于旧版本基于Meta Data 服务的Repository的概念消失,导致DSO的功能单向不能继续使用。
2. 如果数据库不能迁移,我们自己创建一个操作AS2005的管理平台(类似Management Studio),操作2005数据的同时,像2000一样同时更新一个存在SQL Database中的Repository。
这个任务如果采用,可行性和难度都是非常大的,而且我们不可能让用户也使用这个平台去操作他们的数据库。
3. 用托管代码操作AMO来包装DSO的所有接口,并通过CCW在COM中使用。
看似有一定难度,工作量不是很大,因为如果能实现这个DSO的Wrapper,并保证接口都不改变,那么表现层,中间层的代码我们都不需要改变。
4. 利用AMO,修改所有表现层,中间层,和数据层的代码。
第四种方案就是实现一个新的系统了,所有旧的ASP框架将被重构。工作量大,周期长。
我们的目标是要尽可能快地完成到2005的迁移,基本保持产品所有功能都能使用。最后鉴于各方面情况的考虑,我们采用了第三条方案。
现在我就在这个方案的实施中煎熬...
我们面临的第一个挑战就是.NET 2.0被COM的顺利调用,似乎很顺利,我们在VS2005的平台上的CCW论证的很成功,也具有了一定的说服性。
其次面临的问题是DSO的Wrapper,这个最艰巨的任务。我们从DSO实现接口开始,通过RCW反编译.NET代码开始,把DSO实现的所有接口都在UML类图中表示出来(如果有朋友需要的话,我可以提供该类图的Visio版本)。并罗列了系统中用到的所有DSO接口使用。这些只是一个需求工作的开始。然后我们不切实际地用DSO的架构准备作为新类库的开发。这里我遗憾地是没有提早做AMO和AS2005细节的Research,以至于这个为新类库的架构工作毫无用处。(待续)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述