我正在做一个项目,其中我必须有 3 个平台(ASP、桌面(Windows 窗体(和 Xamarin(必须连接到数据库。我一直在尝试,但似乎我无法直接连接到数据库。Sqlserver 只是在几秒钟后关闭连接。所以我尝试了网络服务方式。我无法添加服务引用。
我搜索了一下,似乎我不得不:在PCL中卸载Xamarin.Forms nugget包,在解决方案属性中取消选中Windows Phone,重新启动VS并重新安装Nugget包。然后我能够添加服务引用。
但后来它说我需要Sytem.Web.Services参考才能工作。但我不能添加它...
那么,在所有这些之后,我怎么可能像这样连接到SQL Server呢?在ASP和桌面中它工作正常,我通过包含所有连接的类库直接连接。但是我对此感到挠头...
有什么想法吗?
当您有多个应用程序需要访问相同的数据时,您最好在它们之间放置一些它们都与之通信的东西。这减少了跨应用程序的重复逻辑量,意味着您只需向单个服务公开数据库。
Database
|
|
|
API
/|
/ |
/ |
/ |
/ |
Mobile--- Desktop ---Website
如果您将 .NET 堆栈用于所有内容,则您的 API 可能会在 Web API 或 WCF 中实现 ASP.NET。我推荐 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;
}
}
}