什么是Silverlight应用程序中的数据存储的简单解决方案?

时间:2011-10-17 10:28:56

标签: c# sql-server xml silverlight

我在IIS上运行了一个silverlight应用程序,目前有一些数据列表硬编码到c#中,这不是我知道的好主意,但这是一个概念验证演示,现在我需要继续获取数据来自另一个可以修改的来源。

我查看了xml文件以及sql数据库。问题是客户端不愿意在机器上安装任何额外的东西(长安全过程),因此sql express可能不实用。我也尝试过调试sql compact edition,但我似乎无法找到任何体面的教程。

数据由三个相当短的包含字符串和整数的小对象列表组成。我正在寻找一个,最好是简单快速实施的解决方案,理想情况下不需要在服务器上进行任何额外的安装。

有没有人有任何可能方便的建议或链接?

提前致谢

4 个答案:

答案 0 :(得分:1)

如果您习惯使用LINQ查询数据而不是SQL,Sterling DB听起来很适合您。它非常轻量级,并且在服务器或客户端上不需要额外的任何内容(除了明显包含在代码中)。它使用隔离存储来存储数据。所有序列化/反序列化都由库来处理。

编辑:

根据您的评论,数据是“静态的”(意味着所有客户端使用相同的数据),最好不要使用像Sterling这样的客户端数据库,甚至(如您所提到的)SQL CE。您对这种类型的“目录”数据进行硬编码有所保留是正确的,因为该数据的更改需要新版本的软件。

进行抽象的一种简单方法是简单地在包含所有数据的XAP旁边托管XML文件。您可以以任何方式编写XML。在软件中,每次应用程序运行时,下载XML文件,解析它并填充目录应该相当简单。当需要更改目录时,只需修改XML文件即可。

答案 1 :(得分:0)

我知道这不是一个理想的解决方案,但您可以尝试使用制表符分隔的文本文件。它们是最容易创建的。

答案 2 :(得分:0)

我使用XML(web.config)来存储所有客户端使用的数据,例如预配置或默认用户设置值,并使用Isolated Storage用于客户端独立数据,例如用户UI布局设置。

答案 3 :(得分:0)

我会将对象序列化为XML并将它们存储在服务器上,这样做相对容易

您可以将值拉入和XDocument

XDocument ConnectionStrings = XDocument.Load(System.AppDomain.CurrentDomain.BaseDirectory + "ConnectionStrings.xml");

以下是我正在使用的序列化功能

    private static XDocument Serialize<T>(object obj)
    {
        XDocument ReturnValue = new XDocument();

        //Create our Serializer with the type that was passed in
        XmlSerializer Serializer = new XmlSerializer(typeof(T));

        //Serialize our object to a string writer
        System.IO.StringWriter sw = new System.IO.StringWriter();        
        Serializer.Serialize(sw, obj);

        //We use a string reader to read the string from our Writer (created when serialized)
        System.IO.StringReader sr; 
        sr = new System.IO.StringReader(sw.ToString());

        //Then we can load the string reader giving us an XDocument
        ReturnValue = XDocument.Load(sr);

        return ReturnValue;
    }
    private static T Deserialize<T>(XDocument Xdoc)
    {
        T ReturnValue;

        //Create our Serializer with the type that was passed in
        XmlSerializer Serializer = new XmlSerializer(typeof(T));

        //Create a string reader to access the XML data in our XDocument
        System.IO.StringReader sr = new System.IO.StringReader(Xdoc.ToString());

        //Deserialize the XML into our object
        ReturnValue = (T)Serializer.Deserialize(sr);

        return ReturnValue;
    }