我想制作配置数据管理器。这将允许多个服务存储和访问所有这些服务共有的配置数据。 出于Manager的目的,我决定创建一个配置类对象 - 基本上每个配置数据条目都是这样的: 名称,类型和值。
在对象中,这些都是描述配置数据对象本身的字符串。一旦它将这些数据从其数据库中获取为字符串,它就会将其放入此配置对象中。
然后,我希望它通过WCF发送到目的地。但是,我不想发送配置对象的序列化版本,而是发送配置对象的描述的序列化版本。
我想这样做的原因是
要点: 输入:名称,类型和值的字符串
输出:对象的序列化输出;对象本身是“type name = value”
问题:
我决定向不同的方向前进,谢谢你的帮助。
答案 0 :(得分:0)
这是存储和访问数据的好方法吗?
这很难回答,我能给你的最好的是“是”和“否”。是的,隔离这些数据的序列化/补液并不是一个坏主意....不,我并不太关心你描述它的方式。我不确定我是否希望它存储在文本中,除非我打算手工编辑它,如果我手动编辑它,我不确定我是否想在数据库中使用它。它可以做到;只是不确定你是否真的走在正确的轨道上。
我怎样才能以这种方式序列化?
不要建立自己的,不是那样的。使用已存在的已知格式。 XML或JSON将用于手动编辑,或者如果您不需要编辑它,则可以使用多种二进制格式(BSON,protobuffers)。
getConfigurationData方法的函数原型是什么样的?
我首先将'通用'又称常用配置分解为来自特定于服务的配置的单独调用。这使getConfigurationData能够简单地返回富类型以获取公共信息。然后为服务特定数据添加额外的参数和属性,或添加其他方法。举个例子:
[DataContract]
public class ConfigurationInfo
{
[DataMember]
public string Foo;
...
// This string is a json/xml blob specific to the 'svcType' parameter
[DataMember]
public string ServiceConfig;
}
[DataContract]
public interface IServiceHost
{
ConfigurationInfo GetConfigurationData(string svcType);
}
显然你给调用者一点负担来解析'ServiceConfig';但是,您的服务器可以将其视为不透明的字符串值。唯一的工作就是将它与适当的svcType相关联并存储/获取正确的值。