将sql数据库公开为Web服务,以便从Android手机访问

时间:2011-07-25 11:37:46

标签: .net android web-services

我使用Eclipse在Android中创建了两个EditText字段和一个提交按钮。现在我需要开发一个Web服务,最好是在.NET中公开我的数据库。我必须说在发布之前我确实看到了[http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspx],但我不知道如何使用WCF服务,而是我更喜欢REST或SOAP。 / p>

我现在只需点击一个按钮即可调用webservice,该按钮将获取ListView中数据库特定列的值列表,其中包含Android模拟器上的复选框

请有人告诉我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:2)

修改

根据下面的说明,我会在Android上跳过“...同步SQLiteDatabase ...”部分后台服务(因为在目标Android设备上似乎没有任何可以同步或缓存的内容) 。我会让该后台服务直接调用您的Web服务。

这里重要的是在工作线程中执行Android应用程序的实际HTTP请求。如果你从UI线程(也就是默认主线程或主线程)调用它,那么Web服务很可能不会足够快地回应以保持应用程序处于活动状态,Android会将其视为无响应的应用程序。

默认情况下,Android Service将在调用者运行的同一个线程中运行(很可能是UI线程)。您可以查看管理所有线程的IntentService

但在此之前,我认为您需要设计数据库并整理您的Web服务。不幸的是,我对微软的产品有点过于生气,以便为您提供有用的帮助。但我认为必须有大量的教程和“操作方法”。

<强> ORIGIN:

Wikipedia对REST应该是什么有一个非常好的定义。这个概念也很好地映射到Android ContentProvider's concept

假设您想要在Web服务器上公开数据库,我想我会编写一个简单的基于REST的Web服务(在您的Web服务器上),这使您可以访问应用程序所需的表和列(不多,没有更小)。

默认情况下,我可能会继续编写一个后台服务(在Android上),定期同步一个SQLiteDatabase(仍然在Android上),可能通过一个ContentProvider(注意ContentProviders不是唯一的通信方式使用数据库,实际上我甚至会说与数据库通信甚至不是ContentProvider)的主要特征。

最后,我会在同步结束时广播通知(仍在Android上),以便任何(Android)客户端知道何时自动从SQLite数据库请求新数据。也许通过按下UI中的按钮也可以触发获取新数据,以便用户也可以触发手动更新。

如果你写了更多关于你的Android应用程序及其应该实现的内容,我会修改我的答案,使其更加正确和具体。