zoukankan      html  css  js  c++  java
  • 基于.Net进行前端开发的技术栈发展路线(三)

    前言


    上一篇《我的技能树二》文章分享了我的技能中的前端技能和Java技能,今天继续跟大家分享的就是后端技能了。


    我的技能树


    我当前的技能树:

    我的技能树

    其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练。未标注的只是了解。


    数据库


    我的技能树

    数据库

    数据库是信息化系统编程的基础。因为我一直是做信息化系统的,所以这一块比较熟悉。最初熟悉的数据库是基于PB开发的Sybase,SQL Anywhere,现在已经不流行了。后来转到了SQL Server,再后来转到了Mysql,然后又熟悉了Sqlite。现在常用的数据库是Mysql和Sqlite的组合。这样选择的主要原因还是因为使用的人多,还免费。现在用这两种数据库也基本够用了,Mysql主管理系统端应用,而Sqlite主小型程序应用和Web前端应用。
    对数据库的掌握,需要哪些基本知识点呢,我认为这些是必须的:

    • 标准SQL语法:掌握SQL语言中的DML,DDL,包括CRUD,多表关联,分组汇总等
    • 数据库性能调优:需要掌握对索引的基本理解,通过SQL执行计划对SQL语句进行优化。可以说不懂索引的话,就等于不会数据库编程,这样的系统是无法投入实用的,只是个玩具。
    • 数据库管理:初级DBA的一些能力,比如数据库对象的权限管理

    ORM

    ORM我使用Entity Framework(EF)和Dapper,一个重量级,一个轻量级,适用于各自不同的应用场景。我曾经对是否使用ORM很纠结,因为ORM确实对系统性能是有影响的。但后来我想开了,机器是为人服务的,我们使用ORM的目的,是为了解放人,能够使解放人释放出的红利,能覆盖机器开销增大而增加的成本。这个账,总体是算的过来的,否则ORM就不会流行了。同时,我们也要尽可能好的使用ORM,要细心研究,合理使用,使得ORM对性能的影响在可控的范围内尽量小,如果只做到菜鸟级别的使用,那可能是得不偿失的。
    随着ORM的流行,我已经很少直接写SQL了。不过我也不喜欢EntityFramework的导航属性,觉得使用它时限制感比较严重,而且性能问题也比较明显,所以我的个人偏好的方式是,用“写SQL”的方式使用ORM,也就是使用LINQ,既利用了我对SQL熟悉的能力,也用上了LINQ的灵活性。
    对于EF和Dapper的选型,我一般是:如果是做的是“产品”,那么使用EF,所以即使它只是一个单机版的小的系统,如果它是产品,我也会用EF+Sqlite来实现。而Dapper用于实现“接口”,比如产品系统要和外部系统对接,外部系统是项目型的,它的模型是不确定的,因此非常适合使用Dapper,一方面在外部接口端直接写SQL,在代码端又能用上对象化编程模型,两端的编程都得到了方便。

    Ado.Net

    对于传统的Ado.Net的使用,我现在已经不用了。对Ado.Net的了解,我只是在学习C#的时期,作为练手原因写一些demo,现实应用中已经完全没有必要使用它了。和它一起可以彻底淘汰的有:DataTable,DataSet。所以,但我看到还是使用DataTable的同学,我不禁想劝TA:该进步了同学!


    设计模式


    我的技能树

    为什么要学习设计模式呢?其实对我来说,不能叫“学”,而是“了解”设计模式。在了解设计模式之前,我一直是按自己对OOP的本能理解在进行设计和开发。所谓“二十一种设计模式”,“二十四种设计模式”,源头都是来自于Java界。当我看到这些提法就有担心,自己的设计是不是遵循了设计模式的基本原则?有没有可改进的空间?因此觉得需要对设计模式有个全面的了解。
    对照看过基本设计模式的书,一方面确实开阔了眼界,另外感觉对自己的实际编程帮助有借鉴,但其实也不大。一个原因是,自己平时的设计中,其实基本遵循了设计的一些原则,和某些设计模式类似。比如:工厂、单例、外观、装饰、组合等,自己下意识的就在用。另外,一些不常用的设计模式,自己其实平时也不会用到,原因可能是自己平时写的不是需要发布的那种第三方的类库,而都是项目的类库。这些类库,都是为了解决现场问题而设计的,而不会为了实际中没有发生的需求而进行预先设计。所以就没有必要精雕细琢,增加当前不需要的设计,这样对要遵循某种设计模式的必要性就降低了。
    虽然看过设计模式的书后,现在我在编程过程中,大部分设计模式都不会有意识的去用,都还是凭对OOP的基本理解,代码怎么简洁,怎么容易阅读,怎么方便扩展这些基本原则来考虑,不会强求套用设计模式。我觉得这个思路也是对的。如果做什么设计都要去套用设计模式,可能适得其反,搞出不伦不类的设计架构。不过不管怎么样,不定期的回顾设计模式,将对设计模式的进一步的思考更好的融入到自己平时的设计中去,自己其实做的还不够,也需要加强。
    我当前在产品中,用到的设计模式,我能想起来的,可能包括:简单工厂模式,单例,组合,桥接,外观,装饰,代理。

    讲到这里,通过总共三篇文章的讲解,我也对我的整个技能进行了梳理,对自己的技能的进一步发展,也有了更清晰的规划,那应该包括:

    • 熟悉ionic:掌握包括angular,cordova这些跨平台的前端开发模式
    • 应用vue:现在vue越发流行,虽然前端我采用了angular,但可以将vue应用到我的产品后端,将传统的bootstrap+jquery+knockout的技术组合升级为bootstrap+vue的组合。
    • 需要一定程度的加强Android下的Java开发,学习IOS下的开发,能开发基于各平台的cordova插件
    • 不定期的回顾设计模式,将设计模式的优点内化为自己的能力。

    在学习过程中,我在网络上收集过一些学习资料,在经过阅读后也甄选出比较经典的一些资料。有需要的朋友,可以在后台回复关键字“获取技能树”,可获得包括《C#高级编程》第七版,《Java编程思想》第四版,和《大话设计模式》的下载链接。

    欢迎关注本人微信公众号,更及时的关注最新文章(每周多篇原创文章,以及多篇专题文章):

    微信公众号
    扫描二维码关注


  • 相关阅读:
    PAT Advanced 1067 Sort with Swap(0, i) (25分)
    PAT Advanced 1048 Find Coins (25分)
    PAT Advanced 1060 Are They Equal (25分)
    PAT Advanced 1088 Rational Arithmetic (20分)
    PAT Advanced 1032 Sharing (25分)
    Linux的at命令
    Sublime Text3使用指南
    IntelliJ IDEA创建第一个Groovy工程
    Sublime Text3 安装ftp插件
    Sublime Text3配置Groovy运行环境
  • 原文地址:https://www.cnblogs.com/holyknight17/p/10335111.html
Copyright © 2011-2022 走看看