🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。
🦀专栏简介:博主针对.Net开发和C站问答过程中遇到的问题进行总结,形成本专栏,希望可以帮助到您解决问题。
🐶座右铭:总有一天你所坚持的会反过来拥抱你。
🌈写在前面:从2018年硕士毕业后,我一直从事着.Net开发工作,趁着CSDN这次活动,给大家分享一下.Net客户端领域的技术栈的学习路线,这个学习路线,涵盖的是比较基础的内容,适合刚入门.Net的萌新学习和刚进入职场的毕业生查漏补缺,然后这个博文比较受大家的欢迎的话,后续可能会考虑出一个更详细的版本。致敬我彻夜学习的.Net。
👉本文关键字:.Net、学习路线、萌新入门、毕业生查漏补缺
有的初学者对于如何开始学习.Net感到无从下手,不知看哪些书,或者是看什么视频,没有目的性,这样就会影响学习效率,也会影响学习的热情。最重要的是很多同学学之前问很多和学习无关的问题,比如:C#是不是不如JAVA好?C#有前途吗?等等。对于准备学习编程语言的初学者来说,.Net和Java是初学者首先考虑的两门技术,因此很多人一遍遍的问学.Net还是学Java
,社区中也每天都有“.Net控”在唱衰Java,也有“Java控”在唱衰.Net,一时间硝烟四起,让初学者更加迷惑。在这里我们不探讨学.Net还是学Java,博主认为观望不如学习。本篇文章介绍了博主自己总结的.Net客户端用到的技术栈的学习路线。如果大家有什么更好的想法或者好的建议可以共同探讨。 至于博主为什么选择.Net,因为我是自动控制专业出身,所从事的行业也是工业自动化行业,.Net必不可少。
这里给大家分享的这个学习路线涵盖的内容比较基础,是一个很宏观的路线。
1️⃣ C
首先,大家要了解.Net能做什么,了解.NET,C#语言及其特点(分清.NET和C#的关系),对.Net学习有系统全面的认识。
学习C#这块首推还是刘铁猛老师的视频,在B站可以直接搜到。但是如果你是刚刚学习C#的小白,可以在B站搜索C#的基础线学习一下,刘铁猛老师的视频是需要一定C#基础的。C#学习要掌握的知识点挺多的,需要大家打好基础。如果你这回准备面试,也可以照着如下这部分脑图查漏补缺。
♈ 脑图
♉ 知识点
- C#基础:数据类型、变量、运算符、分支结构、循环结构、方法、反编译器、递归、递归算法的非递归优化等;
- 面向对象:异常、封装继承多态、单例模式、装饰者设计模式、this本质论、static、namespace、类型转换、is与as、抽象类、接口、宫廷系统案例、foreach、随机数及案例等;
- 常用类库:String与StringBuilder、可空类型、文件操作(File、Directory、FileStream、StreamReader、StreamWriter)、常用数据结构(List、Dictionary、Set、Queue、Stack等);
- 高级特性:多项目开发、CLR、CTS、CLS、IL与程序集、索引器、密闭类、静态类与扩展方法、深拷贝和浅拷贝、结构体、值类型与引用类型、拆箱装箱、字符串拘留池、ref与out、正则表达式、XML、序列化等;
- 委托与事件:委托语法、内置委托Func和Action、匿名方法、lambda表达式、lambda的推演、lambda原理探秘、常用扩展方法、事件本质论;
- 反射:反射、实现通用对象拷贝、Attribute及案例、自动动手写ORM引擎;
- 三层架构:三层架构的原理、代码生成器、项目案例;
除了刘铁猛老师的视频,博主主要是利用微软C#官方文档和书籍学习。C#相关的基础和进阶知识,这里推荐《C#图解教程》
这本书,在后续学习书籍章节还会提到此书,这里就不过多赘述了。具体的官方文档链接传送门如下,
♊ 掌握C#基本语法
此部分官方文档给初学者一些入门的认知,它可以直接在浏览器敲出代码,并且能够直观的显示出来。这部分包含了第一个"Hello World"程序,数字类型介绍,分支和循环,字符串类型处理,集合类型List的初探。
C#语言介绍(C#的基础知识)
这部分官方文档介绍程序的基本结构,类型和变量,表达式,语句,类和对象,结构,数组,枚举等方面知识。把这一部分看完,大概会对C#有一定的认识,但是可能不明白的地方也有很多,不要急,只需要多看多敲代码,在后续学习的过程中,会一步一步把前面有问题的地方弄明白。
C#教程
教程部分介绍了控制台的I/O,异步编程模型的基础知识,Web通信、JSON 序列化和面向对象的 C# 语言功能,以及LINQ查询的知识。
这一部分是对第二部分的深入介绍,其中有很多相关的示例,也是学习C#基础知识比较重要的一部分。学习这部分前提是前面的内容已经学习完成(具有一定的C#编程知识)。
学习完上面的部分,且动手敲完里面的例子,相信你对C#已经有一个不错的认识。这时候需要看进阶的知识来巩固学习成果。
C#演练
这部分内容包含了C#更强大的功能,异步编程,设计Windows组件,Windows窗体的介绍,数据操作,和LINQ查询,编写可视化工具等。
C#中的新增功能
介绍了C#的版本,和每次版本中的新增内容,有助于让我们更了解C#的进化史,从而更好的应用它。
♋ C#进阶之路
- 网上寻找编程练习题来带到练手的目的,并且巩固和学习新的C#知识,在这一过程中,一定要学会调试代码,可以提高学习的效率和查错速度。
- 学习数据开发技术,与数据库的交互技术ADO.NE;封装SQLHelper工具类并理解其中的方法及其应用。
- 深入学习C#面向对象基础技能:封装,继承,多态的思想。
- 三层架构,理解三层架构的思想及优点;三层架构项目的搭建方法;使用三层架构实现增删改查从而开发项目。
- 委托、匿名方法、Lambda、Linq查询
- ASP.NET MVC,MVC的开发思想;Razor语法详解;分页、数据传输方式(ViewBag、ViewData、TempData、Model)、各种ActionResult、四种Filter(IAuthorizationFilter、IActionFilter、IResultFilter、IExceptionFilter)、HtmlHelper、路由机制、特性、布局视图。
- 异步操作请求数据;异步分页技术。
- C#/.Net开发中大型软件的思想;C#/.Net开发中大型软件的常用关键技术及应用技能(MVC、EF、Spring.Net、Memcache、Log4Net、T4模板、Mongodb、Redis、WebService、EasyUI、Ajax、WCF、AOP、Nhibernate、简单工厂、抽象工厂、Web API、多线程等);依赖注入等
- .NET Core技术;ASP.Net Core(中间件、静态文件、配置文件、依赖注入、程序缓存等)、EF Core、ASP.NET Core MVC、ASP.NET Core WebAPI、跨平台发布与部署、.Net Core高级调试、微服务等。
♌ 项目实践
自己动手编写一些小而精的项目,达到整体认识的效果,比如经典的"坦克大战",“图书管理系统”,这些都是很"轻量级"的。当你把"坦克大战"项目编写完毕,就可以进行更大的项目设计,增加权限管理等等。
♍ 总结
总的来说,对于C#这一块,就是要在自己日常开发的工作当中去注意,然后去总结,写一些日记,或者说整理的一些文章等等,就是记录下来自己的学习和解决问题的过程,从而帮助自己,去学习C#的一些内容,其实能写成文章就是又加深了一层印象和感悟。然后就是可以通过书籍和B站来进行学习,所以C#学习路径就是视频、官方文档和书籍,官方文档链接已在上文给出,至于看什么书籍呢,我稍后会继续分享。
2️⃣ 开发框架
♈ 脑图
♉ 总结
目前最推荐使用的是Prism,适合大一点的团队进行开发和学习。其实这三个框架各有各的优点,大家可以根据自己的这个需要来进行选择。基本上把Prism学会了之后,学其他的框架也比较容易。
3️⃣ UI框架
♈ 脑图
♉ MAUI
这里推荐的是.Net MAUI,也是微软官方目前在主推的,它主要涵盖的几乎是全平台了(除了Linux平台),Linux平台并不是由官方去支持的,而是通过.Net社区支持,大家可以放心的去学习和了解这些东西。毕竟写一份代码可以在多个平台去跑,这个全平台去跑了一个框架的话,还是有一定的市场。
附上官方文档:
♊ WPF
WPF应该是目前在工业自动化行业使用最多的一项技术,虽然WPF和MAUI不是同一项技术,但是他们还是有一些共通的地方。WPF目前只支持Windows平台。WPF相比Winform就灵活一些,学了WPF,就不要只像Winform那样,一个按钮双击,再去写业务逻辑,要会用MVVM
。
♋ Winform
Winform相对于WPF就是上手快。熟悉常用的控件,包括常用的属性和事件。不要因为有人鄙视拖控件,你就不好好学习控件,要会拖控件,但又不能只会拖控件,自己写也行,日积月累说不定就有自己的控件库了,要对控件有一个客观的认识。
总的来说就是把WPF学好,你想平移到其他的框架上,也是比较容易的。
4️⃣ 控件库
♈ 脑图
♉ 总结
这些控件库,大家是对着这上面的文字进行搜索,基本上也能找打相应的教程。.Net客户端又很多优秀的控件库,供大家免费的去使用。而这里为什么会单独拎出一些收费的控件,就是因为有些企业是愿意付费的,他是愿意花钱去买这些付费的控件库的,买了之后就希望他招聘一些人员,能掌握这些控件,来增加开发效率,所以这些付费的控件库也是有必要去学习和了解的。
5️⃣ 第三方插件
♈ 脑图
♉ 总结
在客户端领域,经常会遇到要内嵌一个浏览器或者是插一个视频等等的第三方组件,这些基本上在GitHub上都能找到相应的内容,根据自己的工作需要,去GitHub上去寻找一下,这里也不多提了。
6️⃣ 网络通信
♈ 脑图
♉ 总结
网络通信是客户端这项技术在里面比较重要的一个环节。如果对于数据网络、网络通讯、数据交互这一块,你根本就不知道的话,那么学习客户端是非常困难的,因为客户端上面想显示一些的数据,你都不知道从哪儿拿。网络通信最基本的就是掌握HTTP的一些基础交互,然后再就是学习socket的这一块,它的难度相对于HTTP来讲的话,对于新手而言,这个socket的难度会比HTTP高很多,学习的成本也比较高。这里推荐一本书《图解HTTP》
。
7️⃣ 数据库
♈ 脑图
♉ 总结
客户端领域中用到最多的是一个非常小型的数据库sqlite,但是它只能存放一些比较简单的内容。如果数据或量大并且复杂的话,建议放在大型数据库中。然后就是MySQL,对于一些前后端分离的项目,后端会用到。
LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。LINQ to SQL是一个数据库到对象结构的一个中间层, 他把对关系数据的管理转变为对象的操作,屏蔽了麻烦的sql,而且,还可以得到vs强大的智能感知功能的帮助。 还有就是数据库调优问题。所以大家还是要去学习和了解的。
8️⃣ 数据结构和算法
数据结构和算法,也是进入大厂必备的一项技能,当然一些小厂根本就不会去考这个东西,所以这个是看自己的一个想法,如果程序想写的好,或者说想继续进入到一些大厂工作的话,数据结构和算法这两个东西是必学的。学习这个的途径,也就是B站、力扣和牛客网,还有这个大话数据结构里面,这本书里面都是不错的一个切入点。
♈ 脑图
♉ B站的视频推荐
♊ 力扣
♋ 牛客网
9️⃣ 设计/开发模式
♈ 脑图
♉ 总结
客户端用的最多的就是这个MVVM和三层架构。然后再就是大话设计模式这本书所涵盖的设计模式都有可能会用到,比如说单例模式,观察者模式、生产消费者模式等等,都是非常重要的,建议大家先看一个模式,然后针对里面的业务场景,自己敲代码,然后通过设计模式优化代码。并且在面试的一些考核过程当中,设计模式也是考核的重要因素之一,因为它要去考验你有没有这种学以致用的能力。
1️⃣0️⃣ 学习网站
- CSDN:全球最大的中文IT社区。
- 微软中国MSDN:了解微软最新动态。
- 菜鸟教程:睡前乐一乐,里面的文章特别有趣。
- 程序猿:推送一些IT行业和一些优秀博文。
- 伯乐在线:分享来伯乐在线博客的热门和经典文章,精华中的精华。
- InfoQ: 关注中高端技术人员的社区媒体,促进软件开发领域知识与创新的传播。
- DotNet:专注.Net相关内容,包括.Net 和C#开发技术文章,工具资源,热门课程等。
- dotNET跨平台 :谈微软.NET,Mono的跨平台开发技术。
♈ 脑图
♉ 总结
学习网站首推就是微软的官方网站,它提供的是最官方最权威的一些技术内容,当然有些内容写的还是不够详细的。此时大家可以通过博客园或者CSDN去搜索一些相关的问题。这里大家会分享一下他们在遇到这个问题时候的处理方法和使用心得。B站这个就不多说了。微信公众号有大佬的微信公众号会发表很多有质量的文章,比如像这个dotnet跨平台
的订阅号会分享很多大佬的文章。对于GitHub源码,学习成本是非常高的,也是非常痛苦的,但是源码还是非常有必要去看的,因为在一些大厂的面试当中,他也会去问一问这种源码相关的一些内容。然后再还有一点特别需要提到的就是这个YouTube,有很多国外的大佬去分享最新的技术,相对于国内的b站的内容来说会更新一点。b站也有视频内容是从YouTube上搬运来的。
1️⃣1️⃣ 解决问题网站
这里主要的在学习网站中已经提及了,就不过多说了。
1️⃣2️⃣ 学习书籍
♈ 脑图
♉ 总结
有的同学对直接看书有比较强的吸收能力,我建议从《C#图解教程》
开始学习,过度到《C#高级编程》
和《深入理解C#》
。
我大概整理了这几本,《深入解析C#》
和《CLR via C#》
的这两本书,单单看完的话呢,耗时并不长,但是如果逐张每张的去练习,去实践去学习的话,还是够学很长一段的。然后《.Net内存管理》
,深入解析理解这个计算机系统,它里面会讲到一些计算机底层的知识点,也是非常有必要去学习的。《.Net性能优化》
是说在我们开发的过程当中,也会遇到卡顿、内存暴涨等等的问题。这本书和《Windows编程技术调试内幕》
,是本不错的参考书籍。大话系列就分享《大话设计模式》
和《大话数据结构》
这两本书。WPF就最推荐《WPF编程宝典C#2012和.NET4.5》
,虽然这本书里的内容不是很新,但是能把这些内容学好了之后,你再去看一些新的书籍,只需要去更新知识点就可以了,而不需要花大量的时间去研究一些新的内容。
1️⃣3️⃣ 工具
♈ 脑图
♉ 总结
一定要掌握的工具,就是VS2022。再就是思维导图的工具,在你做一些分析的时候,都需要去把自己的思路给理清楚。然后再就是Markdown,在这程序开发的领域中,Markdown的使用频率还是蛮高的。再就是一些工作上的汇报,都用这个office全家桶。最后就是Git/SVN这些代码托管工具一定要学习。
1️⃣4️⃣ 面试和职场
求职的话就是要做一些面试的准备和刷题。要考虑到技术官会问到的问题,HR会问到的一些问题,面试会遇到的一些知识点,需要提前去刷面试题。如果不去准备,不去刷题的话,基本上去了就是送人头的,所以一定要记得去准备,去刷题,一般刷算法的话,你要提前刷,刷个几个月你再去。这里推荐一位B站UP主,不高兴就喝水,一位程序员脱口秀艺术家,打工和职场那些事,看水哥的视频就对了。
⭐写在结尾:文章中出现的任何错误请大家批评指出,一定及时修改。
希望写在这里的小伙伴能给个三连支持!