Orion's Studio.

我真的真的真的只想查条数据!

2017/03/27

怎么那么难

* 每一天数据上辈子都是折翼的天使,翻山越岭来看你! *

我想在前端页面显示某个物件的大名,

最简单的逻辑就是:

** 前端 ** == RESTful请求 ==> ** 后台 ** == SQL查询 ==> ** 数据库 **

看上去好简单

抛开数据库不谈、那么

从前端展示入手

数据传输最重要的就是数据格式解析了

为了Web端更好的解析当然是采用JSON格式了,毕竟木有尖括号和属性名,体积比XML小(就忽略二进制吧

然而我们是Windows端,要解析JSON格式还得引个什么什么包

解析出来直接显示就太不优雅了吧,总得建个模型保存一波,取名 SomethingInfo

然后就是 get post put delete 请求,每个都写 ** 一大段 ** 太费事,于是得封装一个 Request 类吧(一大段如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

var client = RestClients.GetClient();
var request = new RestRequest("something", Method.GET);
request.AddHeader("TOKEN", xxx);
request.AddQueryParameter("Data", JsonConvert.SerializeObject(new
{
Parameter1 = parameter1,
Parameter2 = parameter2
}));
var res = client.Execute(request);
var jsonRes = ErrorHandle.TestError(res);
foreach (var info in jsonRes["Data"]["Somethings"].ToObject<SomethingInfo[]>())
{
// ...
}

请求也写好了,可是这样代码分散了些,于是都塞到一个 SomethingModel 类里

好,前端部分到此位置,工作量还算小

然后是麻烦的后台

首先得写个 routes 管理路由

然后该写个 SomethingController 处理请求啦

于是第一个问题: ** 授权 **

在处理请求前得先进入一个 SomethingAuth 类确保 token 有效性

现实需求操作服务器频率有点爆炸,于是乎建了一个 SomethingCache ** 缓存 ** 类,优先从缓存中取数据,定期更新缓存

然后问题又来了,多个请求互相干扰怎么办?

这里就用到了 Actor 模型建了 SomethingActor 确保 ** 同步 **

最后才是 SQL 查询

把这些组成 SomethingRepertory

大功告成

不知道有木有数,我们建了多少类???

总结:封装是魔鬼,Ctrl C 万岁

我真的真的真的只是想查条数据!

CATALOG
  1. 1. 怎么那么难
    1. 1.1. * 每一天数据上辈子都是折翼的天使,翻山越岭来看你! *
    2. 1.2. 从前端展示入手
    3. 1.3. 然后是麻烦的后台
    4. 1.4. 总结:封装是魔鬼,Ctrl C 万岁