我在这里感到疲惫,悲伤和沮丧,感觉像是一个完全白痴。我很抱歉,如果我的帖子太长而且组合得不是很好,但是我想在这里有一些经验的人请给我一些建议。
我目前正在测试我创建的应用,以便让人们添加活动,搜索活动,评论并获得有关他们注册的活动变化的通知。我已经使用了Azure移动服务,这一切似乎运作良好。这对我来说主要是一个学习应用程序,因为我非常喜欢菜鸟。
现在我们即将推出应用程序,我已经开始查看Azure中的数字了。我现在正在使用免费版本,其中每天16k api电话是免费的(将在发布时转移到定价级别) - 但这些数字看起来完全没有了!
每天有2-3个设备似乎运行600-700个API调用。当然,我确实很难运行测试应用程序,但我想有些用户可能会这样做。
所以 - 3个设备消耗了4%的每日免费通话费用。这意味着33个用户可以填写配额,而第一个付费等级仅为300个用户提供空间。
我在这里读错了吗?我的应用程序不可行吗?我认为,即使是我的诺言,也有可能吸引几千名用户。这是否意味着我必须去顶级?因为我买不起。
问题的堆栈部分:
我将用户登录,我创建表格,然后当他们点击搜索时我会做这样的事情:
eventenItemList = await eventenTable.Take (200).Where (item => item.Dateandtimeend >= DateAndTimeIn).
Where (item => item.Dateandtime <= DateAndTimeInEnd).
Where (item => item.Fylke == fylke).
Where (item => item.Pris <= MaksPris).ToListAsync ();
我希望这是一个单独的API调用,但它似乎会运行数十个调用 - 就在那里?怎么可能?
当用户不在应用程序中时,我在Android中运行后台服务,该服务通过用户创建的事件的本地数据库,然后检查数据库是否有任何更改。我这样做:
var table = db.Table<MyEvents> ();
foreach (var e in table) {
eventenItemList = await eventenTable.Where (item => item.Id == e.EventId).ToListAsync ();
if (eventenItemList.Count == 0) {
} else {
//I here notify the user that something new is up - and what it is. Time changed, comments or whatever.
我猜这是愚蠢的,因为它可能在这里为每个循环调用一个API?但在数字中它似乎只做了2次调用 - 就像我期望的那样。
人们,我在这里可怕的失落。我今晚在应用程序周围随机点击了大约一百次 - 并且累计超过1500次api通话。从那以后我一直在冷汗。任何关于这个api呼叫系统如何工作的建议或信息都将非常感激。答案 0 :(得分:4)
我没有一个简单的答案,但不要惊慌!
1)了解您正在进行的API调用。 查看您正在制作的请求。我相信一切都最终是对REST API的调用,因此您可以将查询反向设计为抽象。这将是关键的一步。
2)了解你的抽象。 Linq是各种事物之上的大量抽象。这提供了强大的力量,但也存在精神上过度简化你正在做的事情的成本的危险。您实际制作到您的支持商店有哪些疑问?它是否正确地击中高效键或您是否通过表扫描进行分页? (假设存在这样的事情,我不知道)。这会循环回#1。
3)一旦了解了查询如何破解API调用,您将获得开始解决问题所需的数据。
事实上,您知道您使用的API调用远远超出预期。你知道这个。现在是时候弄清楚如何以及如何优化它。 :)