前言

昨天有篇文章在讨论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. AS插件-GsonFormat

    支持 field 类型的修改. 支持快捷键打开 GsonFormat ,默认为 option+s(mac), alt+s(win) 支持 field 名称的修改. 支持添加 field 前缀. 支持多 ...

  2. (网页)bootstrap模态框手动关闭(转)

    在菜鸟教程上的bootstrap 上面的模态框上看到的: 下面是一些可与 modal() 一起使用的有用的方法. $('#identifier').modal({ keyboard: false }) ...

  3. elasticsearch及head插件安装与配置

    1. 环境软件版本说明 系统:ubuntu14.04.1 JDK:1.8 elasticsearch:5.5.2 node:9.11.1 elasticsearch:5.X 2. 环境软件下载说明 1 ...

  4. 我喜欢的vs+va快捷键

    拿到新版的vs,我首先会安装va,然后自定义快捷键.现在有些快捷键被系统占用,可以先remove掉,然后换成自己熟悉的快捷键.需要做到常用快捷键两个按键即可. alt+Q:文件中查询,复杂查询 ctr ...

  5. 自动化测试基础篇--Selenium select下拉框

    摘自https://www.cnblogs.com/sanzangTst/p/7681523.html 一.什么是下拉框 下拉框是多项选择项,选择其中一种,类似下面(以百度搜索设置为例) 源代码如下所 ...

  6. SQL Server 锁实验(INSERT加锁探究)

    insert语句: 其上锁情况为: insert语句会对表上的所有索引作出更新,因此这里看到的索引列较多,我们先把所有的索引搞出来看看: 可以看到所有索引都涉及到了,然后我们来仔细分析下加锁情况: 1 ...

  7. 四、Tableau如何设置数据格式

    一.要求 ‘销售额’:K为单位 ‘利润’:        M为单位,负值用括号括起来,但是正值 ‘利润率’:带百分号,负值用括号括起来仍然时负值 二.解决方案 1.‘销售额’:m为单位 2.‘利润’: ...

  8. FAT32格式和NTFS格式区别

    NTFS(Windows):支持最大分区2TB,最大文件2TB: FAT16(Windows):支持最大分区2GB,最大文件2GB: FAT32(Windows):支持最大分区128GB,最大文件4G ...

  9. March 09th, 2018 Week 10th Friday

    All good things must come to an end. 好景无常. Love is when the other person's happiness is more importa ...

  10. 02.Python网络爬虫第二弹《http和https协议》

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...