多个 Azure 移动应用之间的通信?通过HttpClient还是其他选项?(.网络后端)



简化方案:

一个 Azure 移动应用"ServiceManagement"(包括数据库)

两个 Azure 移动应用,相同的代码,一个在欧盟"ServiceEU"中,一个在美国"ServiceUS"中(每个应用都有自己单独的数据库)

客户登录到服务管理,选择他希望将数据托管在哪个区域。客户购买服务选项 ->付款记录、所选选项等都保存在服务管理中。

现在,ServiceManagement连接到ServiceEU或ServiceUS,并告诉它为客户创建相应的服务计划。在客户购买服务选项的时间之后,服务之间将没有通信。

除了HttpClient之外,还有其他选项来处理 Azure 移动应用"服务管理"和"服务EU"或"ServiceUS"之间的通信吗?

我当前的代码似乎有效,但我找不到此类情况的任何资源/文档。所以我不确定是否有更好的选择。

/// <summary>
/// Hosted in ServiceManagement
/// </summary>
/// <returns></returns>
[HttpGet]
[ActionName("completeRemote")]
[ResponseType(typeof(String))]
public async Task<string> completeRemote()
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("ZUMO-API-VERSION", "2.0.0");
//Calling completeAll from different Azure Mobile App "<url>"
var res = await client.GetAsync("https://<url>/api/Test/completeAll");
res.EnsureSuccessStatusCode();
var str = await res.Content.ReadAsStringAsync();
str = JsonConvert.DeserializeObject<String>(str);
//verify request completed
//Do something with str
return str;
}

请记住,这是一个非常简单的概念

除了 HttpClient 之外,还有其他选项来处理 Azure 移动应用"ServiceManagement"和"ServiceEU"或"ServiceUS"之间的通信吗?

据我所知,C#移动应用程序后端是一个Web API。通常我们会使用 httpclient 将请求发送到 Web api 应用程序以获得结果。

如果不想使用 httpclient,可以使用 azure 移动客户端 SDK。

编写代码很容易。

您可以从 Nuget 包安装它。

Install-Package Microsoft.Azure.Mobile.Client

这是示例代码,希望它能给你一些提示:

注意:它仍会将请求发送到移动应用后端。

public static async Task<string> GetApplicationToken()
{
var clientUri = $"https://your-mobile-app-id.azurewebsites.net";
var client = new MobileServiceClient(clientUri);
var response = await client.InvokeApiAsync<string>("/api/values", HttpMethod.Get, null);
return response;
}

可以使用 Azure 服务总线(或托管自己的服务总线)

在需要高度可靠的云时依赖 Azure 服务总线 应用程序和服务之间的消息传递服务,即使其中一个或 更多是离线的。

关于维基百科上的企业服务总线:

企业服务总线 (ESB) 实现通信系统 在相互交互的软件应用程序之间 面向服务的体系结构 (SOA)。

当它为分布式计算实现软件架构时,它 因此也实现了更通用的特殊变体 客户端-服务器模型。而一般来说,任何使用 ESB 的应用程序都可以 轮流充当服务器或客户端。

最新更新