API(服务)适用于Windows Phone和Website

时间:2012-06-02 10:09:13

标签: asp.net wcf web-services windows-phone-7 windows-phone-7.1

我创建了(在最后阶段)一个需要数据库通信的ASP.NET网站,因此我们创建了WCF服务来连接数据库。如果有Select语句,那么该服务将返回DataTable。

服务工作正常,网站也运作良好

在API创建时,我不知道windows phone sdk不支持DataTable。

我读了一些Windows Phone SDK不支持DataTable的地方,我在Visual Studio中检查过,System.Data命名空间中没有名为DataTable的类。

我是Windows Phone新手。

但是现在我们要创建一个WINDOWS PHONE APP,它也和Website一样,所以我们想要使用现有的API(WCF服务)。

有没有办法完成这项任务。 most of the methods return type is DataTable

我们不想创建两个API(意味着服务)。我该怎么办?

如何创建适用于Windows Phone和网站的服务。

我们已准备好更改API的更改并根据准备更新网站了吗?

感谢

2 个答案:

答案 0 :(得分:1)

刚刚更改了API以返回Stream而不是DataTable

 System.IO.StringWriter reader = new System.IO.StringWriter();
 dt.WriteXml(reader, XmlWriteMode.WriteSchema);//dt is datatable
 return reader;

在网站中进行小的微小更改,阅读流并将其分配给datatable

    StringReader xmlReader = new StringReader(stream);
    DataTable dt = new DataTable();
    dt.ReadXml(xmlReader);

更新

这种方法不可取(这是我的第一个Web服务应用程序),我建议使用JSON / XML响应(返回DTOs)而不是返回DataTable ..

以下链接可能会让您朝着正确的方向前进。

http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide http://mono.servicestack.net/ServiceStack.Hello/

答案 1 :(得分:0)

不确定为什么使用数据表。你的意思是数据集吗?

它们都是XML的全部内容。尝试解析它们。尝试这样的事情:

    var resultNewDataSet = XElement.Parse(xmlContent);

    var result = resultNewDataSet.Descendants("Table")
        .Select(t => new
            {
                aaa = t.Descendants("aaa").First().Value,
                bbb = t.Descendants("bbb").First().Value
            });

    foreach (var res in result)
    {
        System.Diagnostics.Debug.WriteLine("aaa: " + res.aaa + " / bbb: " + res.bbb);
    }