Xamarin与SQL Server的通信

时间:2017-07-12 16:12:24

标签: c# asp.net sql-server web-services xamarin

我正在制作一个项目,我必须拥有必须连接到数据库的3个平台(ASP,桌面(Windows窗体)和Xamarin)。我一直在试验,但似乎我无法直接连接到数据库。几秒钟后,Sqlserver就会关闭连接。所以我尝试了webservice方式。我无法添加服务参考。

我搜索过,似乎我不得不:在PCL中卸载Xamarin.Forms nugget包,在解决方案属性中取消选中Windows Phone,重新启动VS并重新安装nugget包。然后我就可以添加服务参考。

但后来它说我需要Sytem.Web.Services引用才能工作。但是我无法添加它......

所以,在这之后,我怎么可能像这样连接到SQL Server?在ASP和桌面中它工作正常,我通过包含所有连接的类库直接连接。但是我对这个问题感到头疼......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

当您有多个需要访问相同数据的应用程序时,您最好在它们之间放置一些与之通信的内容。这减少了跨应用程序的重复逻辑数量,这意味着您只需要将数据库公开给单个服务。

                        Database
                           |
                           |
                           |
                          API
                          /|\
                         / | \
                        /  |  \
                       /   |   \
                      /    |    \
            Mobile---   Desktop  ---Website

如果您正在使用.NET堆栈,那么您的API可能会在ASP.NET Web API或WCF中实现。我推荐使用Web API,因为它更简单。任何可以说HTTP的东西都可以与之交谈。

然后,为了与您的API进行通信,您通常会在低级客户端周围创建一个包装器,以便与API的端点进行通信。这通常采用包含HttpClient或RestSharp之类的类库的形式。这个类库是通过任何.NET应用程序可以使用的NuGet包提供的。

这里有一些伪代码(不要指望它编译)

namespace MyClientAPI
{
    public class MyClient
    {
        private readonly string _baseAddress;

        public MyClient(string baseAddress)
        {
            _baseAddress = baseAddress;
        }

        public List<Customer> GetCustomers()
        {
            var restClient= new RestClient(_baseAddress);
            var request = new RestRequest("customers/all");
            var customers = restClient.Execute<List<Customer>>(request);
            return Customers;
        }
    }
}