在这里统一说Web开辟,能够有失颇偏,毕竟我后端一向都是用PHP完成的,没用过.net也没用过java,但我想大致都是一样都,我就此论述一下我所以为的“顺序=数据结构+算法”。
输入输出头脑
相关于前端顺序来讲,前端用户的操纵为输入,然后经由逻辑处置惩罚后,把数据输出到后端;
相关于后端顺序来讲,从数据库取数据算做输入,然后经由处置惩罚后,输出到前端展现;
相关于数据库来讲,关于数据的操纵指令为输入,操纵后发生的输出效果为输出(如删除胜利返回值,写入胜利后返回值等)
开辟历程当中的逻辑处置惩罚头脑
后端输出到前端展现逻辑
基于输入输出的头脑:输入(数据)+处置惩罚(算法)+输出(数据);
数据由数据结构构成;
依据详细营业需求,肯定输出的数据结构;
假如肯定的输出数据结构过于庞杂,拆分为单个简朴数据结构完成;
肯定单个简朴数据结构的输入源;
肯定输入源的数据结构;
用算法逻辑把输入源转化为输出数据;
把单个简朴数据结构组装为终究的庞杂输出数据结构;
前端遍历输出的内容,拆解数据做显现。
前端输入到后端的处置惩罚逻辑
肯定后端须要存储的数据结构;
把庞杂的输入数据结构拆分为简朴数据结构;
依据简朴数据结构,遍历用户输入内容获得输入数据组装;
组装简朴的输入数据结构通报到后端;
后端拆解前端输入的庞杂数据结构为简朴数据结构;
遍历单个庞杂数据结构并存储,且返回每一个步骤的存储效果,失足做数据回滚;
把存储效果返回。
其他思索
详细营业逻辑能够相对更庞杂,平常get体式格局取数据对应的是后端的输出逻辑头脑,数据存储对应的是前端输入头脑。
这套的主意重要目标是把庞杂顺序只管做简化,并以数据和算法的头脑去思索顺序自身。
别的一方面以数据拆解的头脑只管把庞杂逻辑变简朴。
一些伪代码示例
存储示例
<?php
$input = $_post['input'];
// 拆分 start
$product = $input['product'];
$product_sku = $input['product_sku'];
// 拆分 end
// 存储历程示例 start
$db = Db::beginTransation();
try {
$product_id = Product::save($product); // 单个存储
ProductSku::save($product_sku,$product_id); // 单个存储
$db->commit();
} catch(DbException $e) {
$db->rollBack(); // 失足回滚
}
// 存储历程示例 end
输出示例
<?php
// 肯定输出数据结构 start
$result_data = [
'member' => [
'member_id' => 3,
'member_name' => '用户名'
],
'order_list' => [
[
'order_id' => 1,
'order_sn' => '订单号'
],
[
'order_id' => 1,
'order_sn' => '订单号'
]
]
];
// 肯定输出数据结构 end
// 拆分数据结构处置惩罚 start
$member = Member::find()
-> select(['member_id','member_name'])
->asArray()
-> one();
$order_list = Order::find()
->select(['order_id','order_sn'])
->asArray()
->all();
foreach($order_list as &$item) {
$item['time'] = time(); // 对数据列表做其他处置惩罚
}
// 拆分数据结构处置惩罚 end
// 组装数据并输出 start
return [
'member' => $member,
'order_list' => $order_list
];
// 组装数据并输出 end
前端头脑一样如是,我就不做说清楚明了。
这几天 SF 增加了新的板块——直播。我也收到了官方的约请。4 月 7 日(本周五)晚 20:30 和人人一同聊聊项目中的一些总结。讲座传送: Yii2之RESTful顺序基本设想及目次计划