Tag: 可扩展性

存储数据的最佳(免费)方式? 如何更新文件系统?

我对如何解决这个问题有一个想法,但我想知道我的问题是否更简单,更易于扩展。 我正在研究的程序有两种基本forms的数据:图像和与这些图像相关的信息。 与图像相关联的信息先前已存储在极其简单的JET数据库(四个表)中,这在存储的字段中变得既慢又不完整。 我们正在转向数据存储的新实现。 鉴于所涉及的数据结构简单,我认为数据库过度。 每个图像将具有它自己的信息(捕获参数),将是一组相互关联的图像的一部分(比如在相同的三十分钟时间内拍摄),然后是一个更大的组的一部分(由同一个人拍摄) )。 现在,我将人们存储在具有唯一标识符的字典中。 然后每个人具有不同图片组的列表,并且每个图片组具有图片列表。 所有这些类都是可序列化的,我只是序列化和反序列化字典。 相当简单的东西。 图像是分开存储的,因此字典的大小不会变成天文数字。 问题是:当我需要添加新的信息字段时会发生什么? 是否有一种简单的方法来设置这些数据结构以考虑未来可能的修订? 在过去,我在C中处理这个问题的方法是创建一个带有大量空字节(至少是ak)的可序列化结构,以便将来扩展,结构中的一个字节表示版本。 然后,当程序读取结构时,它将知道基于大量switch语句使用哪个反序列化(旧版本可以读取新数据,因为无关数据将进入被忽略的字段)。 C#中是否存在这样的方案? 就像,如果我有一个类是一组String和Int对象的类,然后我将另一个String对象添加到结构中,我如何从磁盘反序列化一个对象,然后将字符串添加到它? 我是否需要让自己拥有多个版本的数据类,以及一个采用反序列化流并根据存储在基类中的某些版本信息处理反序列化的工厂? 或者是类似字典的类,非常适合存储此类信息,因为它会自动反序列化磁盘上的所有字段,如果添加了新字段,我可以捕获exception并用空白字符串和Int替换这些值? 如果我使用字典方法,是否存在与文件读/写相关的速度命中以及参数检索时间? 我认为如果一个类中只有字段,那么字段检索是即时的,但在字典中,与该类相关的开销很小。 谢谢!

.NET中的插件式架构

我正在尝试实现类似应用程序的插件。 我知道已有几种解决方案,但这只是该概念的certificate,仅此而已。 这个想法是默认情况下使应用程序主应用程序几乎没有function,然后让插件相互了解,让它们实现所有需要的function。 出现了几个问题: 我希望运行时的插件通过我的应用程序了解彼此。 这并不意味着在代码时他们无法引用其他插件的程序集,所以他们可以使用它的接口,只有插件function初始化应该始终通过我的主应用程序。 例如:如果我同时加载了插件X和Y,并且Y想要使用X的function,它应该通过我的应用程序“注册”它的兴趣来使用它的function。 我必须在我的应用程序中有一种“字典”,我存储所有加载的插件。 注册我的应用程序后,插件Y将获得对X的引用,以便它可以使用它。 这是一个好方法吗? 在编写使用X的插件Y时,我需要引用X的程序集,因此我可以针对其接口进行编程。 这有版本控制的问题。 如果我对插件X的过时版本编码我的插件Y怎么办? 我应该总是使用所有组件都在的“中央”位置,总是有最新版本的组件吗? 有没有专门处理这些.NET设计的书? 谢谢 编辑:我认为人们正在偏离我提出的两个问题。 我可以看看MEF和#develop,但我想得到具体的问题答案。