我正在考虑一个中型/大型项目,它将需要存储不同的数据类型,并将它们呈现给不同的客户端。
我现在正在努力的是,如何构建一个能够存储不同类型的对象并在需要时查询它们的数据和服务层。
例如,假设有一个客户机-服务器应用程序,其中客户机只能读取每个单独服务器的广播,现在再考虑这样一个场景:一家花店和餐馆用智能手机向街上的一个人广播他们的数据。
class SoCalledServer
{
public AccessibleClientData Broadcast(ClientData broadcastMessage)
{
Broadcast(broadcastMessage)
}
}
class RestaurantClient : AbstractClient
{
public SomeGenericDataType menu;
public RestaurantClient()
{
menu = new SomeGenericDataType<List>();
menu.Add("Sushi");
menu.Add("Fried potatoes");
}
public override void BeginBroadcast()
{
server.Broadcast(menu);
}
}
class FlowerShopClient : AbstractClient
{
public SomeGenericDataType flowersOnSale;
public FlowerShopClient()
{
flowersOnSale = new SomeGenericDataType<List>();
flowersOnSale.Add("Daisy");
flowersOnSale.Add("Rose");
}
public void BeginBroadcast()
{
server.Broadcast(flowersOnSale);
}
}在这个例子中,我有两种不同类型的数据(一种是餐厅的菜单,另一种是花店的花),它们可以有自己的不同成员(例如。菜单有价格和成分,鲜花商店的数据有鲜花名称和描述,数量和/或价格等。)并且这个“客户端”样本可以扩展。
我应该如何对这种类型的应用程序建模?我应该使用哪种数据库模式来存储未识别和各种类型的数据?我的服务器和客户端应用程序应该如何相互通信?最重要的是,客户端应该如何获取广播的数据类型(从泛型类型)?
发布于 2012-12-29 20:28:16
此服务将如何操作此数据?它只会拯救它吗?它会对这些数据进行一些计算吗?你的描述太笼统了。
假设您只想写/持久化/读取数据,您可以简单地保存字符串并让客户端自己进行解析。支持按id查询。键/值和文档数据库的工作原理是这样的。
更重要的是,您应该考虑服务的责任是什么,并相应地设计内部结构。
发布于 2012-12-29 20:44:37
另一个想法是将它们反/序列化为XML或Json。一些提示:
// get stuff here
String json = GetJsonString(expression));
List<T> result;
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
var serializer = new DataContractJsonSerializer(typeof(List<T>));
result = (List<T>)serializer.ReadObject(ms);
} 或者XML:http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx
您可以将对象转换为XML/Json进行传输。然后,为了存储,在类未知的一端将它们反序列化为匿名对象(没有指定的类)。
这样,即使类是未知的,您也始终可以存储所有数据。无处不在,无时无刻。
https://stackoverflow.com/questions/14081604
复制相似问题