前言

昨天有篇文章在讨论webform的设计思路,我已经四五年不用webform了,虽然它也提供了HttpModule和httphandle来处理请求,提供了一般处理程序ashx来简化处理流程,但依然会想起它的form runat=server,想起注册客户端脚本,想起那堆服务器控件,还有著名的GridView72变。但即使不用服务器控件,它也能提供很强大的功能。

后来微软提供了另一套解决方案asp.net mvc 。其实刚开始我并不习惯,一是因为思路转变,新知识需要学习。二是因为当时做报表用rdlc,但mvc不支持。rdlc对于数据的处理很强大,但浏览器兼容性太差,用于winform客户端效果还是很棒的。mvc用熟后,webform再也没用过了。我没再用过的东西多了,但不否认它们依旧强大,也足够支撑你庞大的业务。

C/S端的话,winform和wpf依旧应该很流行。这块我做的少,理念上大同小异。

无意浪费时间去争论谁好谁坏,能为你挣钱的都是好框架。闲话少说,书归正传。今天我根据以往接触或未来想要进修学习的业务规模,来总结下对应的技术栈,来为未来准备,面向未来思考。

第一种类型企业官网

性质:访问量少,网页功能相当简单。一般为首页,公司介绍,产品介绍,联系我们等。

对应解决方案:

这类可推荐一些开源CMS,无需关心后台,设计好页面,只修改前端页面就行。

如果打算自己开发,见几个表存取下完事。不要想太复杂的架构。简单来,快速交付。

数据库:可采用access,SQLite或sqlserver,mysql都行。

.net需要储备:了解ado.net,dapper,泛型,反射等。了解数据库操作常用语句。

第二种类型流量内容网站

整个网站属于新闻类型,有较多内容分类,日均访问量一万以下。每小时平均一千量。相对于iis每秒成百上千处理数,这点量丝毫不成压力。能日均一万访问量,那说明这个站在小圈子内有很大名气了。

对应解决方案:

仍然推荐开源或自研的cms,一般方案首页和分类定时静态化或启用缓存,明细页直读数据库或经过缓存。

数据库:sqlserver,mysql,mongodb

.net储备:

定时任务如hangfire,quartz.net,

Cache系列(页面缓存,httpruntime缓存等),

安装windows服务topshelf

常用的设计模式等。

数据库增量备份还原与全量备份还原。数据库索引优化。

uv和pv等了解。

搜索引擎优化知识必要了解。

第三种类型小流量业务管理系统

小流量业务管理系统的特点是业务较复杂,但用的人数可能控制在几人几十人。但业务单据一天天下来也非常多。有很多公司每年底或年初会清数据,汇集到数据仓库,新的一年新数据。我之前待过的一家集团超市公司有几个分店,业务系统基于powerbuilder开发,用的是db2数据库,每天营业额数据也挺大的。每天十点有日结,月底有月结。

对应解决方案:

这里一般是购买商业软件或者基于产品二次开发了,完全从头开发需要投入很多时间和费用。

数据库:sqlserver,mysql,postgresql

.net储备:

数据库存储过程,函数,优化,关联表等。

数据库性能重中之重。

数据库每几分钟增量备份,一周全备份。读 写分离也可以在这时介入。

Redis可以考虑引入。

设计模式有需要的场景。

在计算报表和一些情况下,多线程,并行处理数据也会考虑引入。

Dapper,EF开始了用武之地,干起来!

依赖注入,aop 可以考虑引入。

可考虑引入前端vue,element。

以上考虑部分,根据业务规模和使用频数来决定是否引入。业务量太小时,引入多余架构反而有些笨重。

第四种类型百花齐放互联网和大数据量项目

性质:面向c端或B端。访问量大,业务多。虽然还有很多细分,但面向了互联网,我们就时刻准备着未来它能爆发式迎接大批量数据,我们的应用要高可用,健壮!时刻准备着,为未来!哪怕很多互联网公司生存周期只有几年!

数据库:Mongodb,mysql,postgresql

.net储备:

数据库集群。

Mongodb集群,分片等。

必不可少,Redis缓存,缓解数据库压力。需要了解redis运行机制,缓存穿透和缓存雪崩等。

必不可少,消息队列rabbitmq或Kafka,多业务系统之间消息传递,解藕。需要了解rabbitmq运行机制和amqp协议。

很重要 Elastic-search,Es可以通过mongo-connector实现同步mongodb数据,是一个数据极快的搜索引擎。另外可以用ELK搭建日志分析系统,这块我还需要练练手,需要了解Es如何应用,部署,问题排查等。

理论积累之微服务:微服务api网关,监控,服务发现,熔断降级,限流等。可参考微软olreans,Akka.net,ocelot,appllo,前些天过千的surging。有源码的常分析借鉴,理解透。

理论积累之TDD:单元测试,集成测试,自动化测试。

理论积累之CI/CD:需要熟练掌握jenkins配置。熟悉docker生态工具用法。

理论积累之领域驱动:微服务怎么拆?怎么微?服务之间如何联系?领域驱动设计为你提供了大量的建议,虽然不会都完美,但可以为你提供思路。领域,子域和限界上下文,领域服务,事件驱动,CQRS责任分离,贫血富血模型。我现在正在抽时间看这个,期待能有所应用。

理论积累之.net:

并行编程,异步编程。多线程安全等。

网络编程socket,orleans的网关连接就是基于socket,在之上又包装了一层gateway连接。socket和tcp/ip通信息息相关,熟练了这个,其他语言同样思路都会了。很多RPC框架也是基于socket,是网络连接的源泉。

.netcore mvc的通用主机,内置kestrel,中间件等,单元测试,docker运行等需要深入了解。

理论积累之Linux:

.netcore最重要特性是跨平台,以前对linux不熟悉的部分,需要尽快熟练,要变成一个老手。

业务演练之单点登录

业务演练之秒杀

业务演练之短信限发

业务演练之实现消息队列模型

业务演练之实现分布式通信模型

业务演练之搭建微服务框架模型。

后语

粗糙了列了一堆技术栈,好像都见过,深入一问总卡壳,我觉得还是写的文章太少。不写出来,印象就不会太深刻。我最近已经开启了两日一更,不知道能坚持多久,而且太散。先继续积累吧,以后能不能写成系列性的文章再说。收拾心情再出发!

.Net业务搭配实用技术栈的更多相关文章

  1. .Net业务搭配实用技术栈(转)

      前言 昨天有篇文章在讨论webform的设计思路,我已经四五年不用webform了,虽然它也提供了HttpModule和httphandle来处理请求,提供了一般处理程序ashx来简化处理流程,但 ...

  2. 算法与数据结构(二) 栈与队列的线性和链式表示(Swift版)

    数据结构中的栈与队列还是经常使用的,栈与队列其实就是线性表的一种应用.因为线性队列分为顺序存储和链式存储,所以栈可以分为链栈和顺序栈,队列也可分为顺序队列和链队列.本篇博客其实就是<数据结构之线 ...

  3. 阿里Java面经大全(整合版)

    本文里的面经内容全部来源于牛客网,作为秋招备战复习与查缺补漏时使用.里面部分面经有我的注释和想法,以及部分解答,不一定正确,大家可以查询补充. 阿里巴巴,三面,java实习 昨天晚上11点打电话来,问 ...

  4. 开源:Sagit.Framework For IOS 开发框架

    一:创造Sagit开发框架的起因: 记得IT连创业刚进行时,招了个IOS的女生做开发,然后: ----------女生的事故就此开始了----------- 1:面试时候:有作品,态度也不错,感觉应该 ...

  5. 用Lua定制Redis命令

    * { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...

  6. 大众点评CAT开源监控系统剖析

    参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监控系统的设计与实现 深度剖析开源分布式监控CAT [分布式监控CAT] Client端源 ...

  7. 马蜂窝 IM 移动端架构的从 0 到 1

    (马蜂窝技术原创内容,公众号 ID:mfwtech) 移动互联网技术改变了旅游的世界,这个领域过去沉重的信息分销成本被大大降低.用户与服务供应商之间.用户与用户之间的沟通路径逐渐打通,沟通的场景也在不 ...

  8. 从游击队到正规军(二):马蜂窝旅游网的IM客户端架构演进和实践总结

    一.引言 移动互联网技术改变了旅游的世界,这个领域过去沉重的信息分销成本被大大降低.用户与服务供应商之间.用户与用户之间的沟通路径逐渐打通,沟通的场景也在不断扩展.这促使所有的移动应用开发者都要从用户 ...

  9. ES6高级技巧(二)

    Array.from const cities = [ { name: 'Milan', visited: 'no' }, { name: 'Palermo', visited: 'yes' }, { ...

随机推荐

  1. [译]在Linux上的提高MySQL/MariaDB安全性的12条建议

    MySQL 是世界上最流行的开源数据库系统,而MariaDB(MySQL的一个分支)是世界上发展最快的开源数据库系统.安装MySQL服务器之后,它的默认配置是不安全的,保护它是一般数据库管理中的基本任 ...

  2. Bresenham算法的实现思路

    条件已知两个点的坐标p1(x0,y0),p2(x1,y1)要求画出这条直线 之后的e代表每次的误差积累,初始值为0,可以计算出斜率为k=dy/dx=(y0-y1)/(x0-x1) 1.x为阶跃步长(直 ...

  3. Nginx 出现 403 Forbidden 最终解决

    Nginx 出现 403 Forbidden 最终解决 步骤一: 检查目录权限.权限不足的就加个权限吧. 例子:chmod -R 755 / var/www 步骤二: 打开nginx.conf 例子: ...

  4. c/c++ 图相关的函数(二维数组法)

    c/c++ 图相关的函数(二维数组法) 遍历图 插入顶点 添加顶点间的线 删除顶点 删除顶点间的线 摧毁图 取得与v顶点有连线的第一个顶点 取得与v1顶点,v1顶点之后的v2顶点的之后的有连线的第一个 ...

  5. esxi网络中虚拟机的相关操作

    一个虚拟机的克隆就是原始虚拟机全部状态的一个备份或镜像.克隆的过程不影响原始虚拟机.而快照指的是虚拟磁盘在某一特定时间点的副本.执行快照将保留虚拟机的状况和数据. 一.实验拓扑图: 目标:克隆虚拟机, ...

  6. 《数据库技术基础与应用(第2版)》学习笔记——第7章~

    从这章开始,操作的内容开始增多,概念的东西越来越少,可能跟学校的教学目的有关,但是跟我的学习目的不匹配,就不再继续整理. 总结:这本书适合大学本科生学习和了解数据库的相关知识以及Access和SQL ...

  7. https 建立连接过程

    http://blog.csdn.net/wangjun5159/article/details/51510594 思考问题的顺序 学技术时,总是会问什么?这里也不例外,https为什么会存在,它有什 ...

  8. ArcMap2Sld:一个将MXD中图层配图样式转换为OGC的SLD文件的开源工具

    在一个项目中,用户采用GeoServer做为GIS服务器(原因嘛当然是免费能省钱,经过验证可能还会在性能和稳定性等表现力也有优越性),但是手上收集的数据都是ESRI格式的,这倒不打紧,因为GeoSer ...

  9. 【SDOI2014】向量集

    [SDOI2014]向量集 题目描述 我们分析一波: 假设我们询问\((A,B)\),\(x_i>x_j\)若 \[ A\cdot x_i+B\cdot y_i>A\cdot x_j+B\ ...

  10. sqlserver 2000数据压缩解决方法

    --sqlserver 2000数据压缩解决方法. /************************************************************************* ...