简化方案:
一个Azure移动应用程序"服务管理"在欧盟(包括数据库)
两个Azure移动应用程序,相同的代码,一个在欧盟和#34; ServiceEU"一个在美国" ServiceUS" (每个都有自己独立的数据库)
客户登录ServiceManagement,选择他希望将数据托管在哪个区域。客户购买服务选项 - >付款记录,选定的选项等保存在ServiceManagement中。
现在,ServiceManagement连接到ServiceEU或ServiceUS,并告诉它为客户创建相应的服务计划。除了客户购买服务选项的时间之外,服务之间不会进行任何通信。
除了HttpClient
之外还有其他任何选项可以处理Azure移动应用和服务管理之间的通信。和" ServiceEU"或者" 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;
}
请记住,这是一个非常简化的概念
答案 0 :(得分:1)
除了HttpClient之外,还有其他任何选项可以处理Azure移动应用程序与服务管理之间的通信。和&#34; ServiceEU&#34;或者&#34; ServiceUS&#34;?
据我所知,C#mobile app后端是一个web api。通常我们会使用httpclient将请求发送到web api应用程序以获得结果。
如果您不想使用httpclient,可以使用azure mobile client SDK。
编写代码很容易。
您可以从Nuget Package安装它。
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;
}
答案 1 :(得分:0)
您可以使用Azure Service Bus(或托管您自己的服务总线)
当您需要高度可靠的云时,依赖Azure Service Bus 应用程序和服务之间的消息服务,即使是一个或多个 更多是离线。
关于维基百科上的企业服务总线:
企业服务总线(ESB)实现通信系统 在一个相互作用的软件应用程序之间 面向服务的体系结构(SOA)。
...
它实现了分布式计算的软件架构 因此也实现了更一般的特殊变体 客户端 - 服务器模型。而通常任何使用ESB的应用程序都可以 表现为服务器或客户端。