Asp.net 怎样从入门到精通?

内容纲要

新人不要被下面一堆内容吓到,如果刚好手里有书、视频、和官方文档,看了一部分就大胆尝试吧!

c#,asp.net,甚至xamarin,经过长时间的演化,如果大概了解高阶语法,常见设计,api,新人可能需要花很多时间,但是,你的需求可能只是一个简单控制台程序,微型网站,几个动态页面,一个简单的app,实现可能基础语法知识和几天到小半个月就能完成。所以,大胆去做。

刚起步不要考虑复杂的设计模式、架构、前端和UI设计。随着写代码的过程慢慢学习和领悟。(这些知识全部要大概了解一下要花很久)(另外,即使入门后,在实际项目中,最好不要过于追求完美的设计模式,甚至过度开发。写代码和做项目,我们一般是用来解决实际问题)

不如先做自己想做的事,一个控制台程序,一个网站,一个应用(c#还支持android和ios)

另外还能unity开发游戏(unity官方也有很好的入门教程,感觉比某些付费的还好)。

azure学生和教师 免费额度-申请


关于零基础的自学者

1、入门阶段

如果你是零基础的初学者,我希望你不要一味的看书,书太多了,可能看5年也看不完。如果有点基础,可以花几个月去做一个小型项目,实战

.net core 和 .net 5是开源的

(.net5面向全平台开发已经发布了,赶紧尝试一下吧!!推荐做一个全平台windows,iOS,android app,增加项目的受众!!

)。

.net 传统桌面版,可以通过逆向工具反编译源码。

一开始可能框架设计不好,数据库设计不好。只要尝试和理论结合就会慢慢变好,所以大胆尝试去做。运动员不会只看书,当然专业的运动员对饮食,肌肉发力,也同样有深入的了解。

做成一个项目,对自己的知识和能力帮助很大。也可以考虑组团在网上实现项目,http://dev.azure.com,有免费套餐,或者github

2、基础理论重不重要

数据结构,算法,操作系统,原理固然重要,但是,你在开车的时候,不必了解发动机,离合的原理。

对工具的了解,对框架的了解,对api的了解,开发经验也同样重要。


什么是asp.net?

asp.net源于1996年, asp 技术作为IIS 3.0一部分被微软发布。

asp:Active(动态) Server(服务器) Pages(网页)

asp.net 第一版于2002年一月,和.NET Framework 1.0一起发布。作为asp技术的后继产品。

希望更多的人可以学习编程,学习.net技术。

在2017年我接触asp.net core之后,

我的学习路线大概为
c#基础,c#三本->asp.net core->typescript->angular->rxjs->redux

asp.net现在已经升级成为了asp.net core,这段时间因为爱好开始做自己的几个小站,分享下我学习c#的个人心得

.net core 3.0已发布,wpf(桌面),xamarin(移动ios,android),uwp(windows store),asp.net(网站)平台在3.0中统一!还有Unity游戏引擎。

有兴趣可以尝试使用.net,做个全平台开发的小项目。


关于求职(非入门):

Asp.net 官方文档

Azure 官方文档

很多公司的项目停留在.net 4.6及前的,在用 c# 的 sqlCommand,DataSet api调用t sql,所以求职的话,可能求职面试,及工作中,需要这方面知识。

现在国内环境已经改变:

EF Core 和 ASP.NET Core 确实好用,但是国内大环境如此,新人的话(一般是将要或刚离开校园),最好先找到合适的工作(养活自己)。

asp.net core,.net core,现在已经逐渐回暖,正如,c++和qt岗位一样,培训机构几乎空白,合格的程序员少,当然如果你在二线,三线城市可能需要到北上广深发展。很多大公司和国企在用(10k起跳,到20k以下工作很好找,学历够+有工作经验,20k到40k(还有额外年终奖和项目分红)工作大城市工作机会也不少)。

而且,.net你懂的,开发快速,最少的人,最短的时间完成大型项目,很少996。

一些小公司和三线城市的企业,可能还在用老旧的上一代框架(.net5要出了,.net core也要成上一代了。)。总之,发展机遇自行选择。

简历优化:

必学生存技能

20220517224829620

当别人都美化简历时,你不做,可能就无法生存,学会适当美化做过的项目。

很多时候,别人比你薪水高,老板高看一眼,可能仅仅在于简历

至少要说清楚,

做过的项目:xxx

项目用到的技术:

xxx

xxx

技术优点:

xxx

xxx

等等 ...

该说的加分项,一定要说清楚。

千万不要说,做过项目xxx,项目xxxx,项目xxx。

做过的项目和经历的公司,都是可以适当美化的。

关于刷题

大多数岗位都会进行面试题考核,不要想逃避规则。别人技术不如自己,起薪比自己高,可能仅仅在于对方比自己多花了一周刷题。勇敢面对吧。

比如,c#基础理论、语法题,winform,wpf,asp.net,xamarin,unity理论和实践题,数据结构,基础算法,c语言基础。说实话,一个10年经验的老程序员,没有刷过题可能也会翻车

面试时谈及做过的项目

勇敢表达出来,用到的技术和知识,架构想法。这个时候不是藏着的时候。


sql语句和套html组成的项目不论.net和java,绝大多数情况,绝非主流模式,如果能有更好的工作,最好避免这家公司

html,css基础知识。

数据库基础知识:

数据库设计基础知识,比如基本类型,表。

sql server官方下载 推荐Developer 全功能免费版,用于开发和学习。

T sql - w3cschool.cn 文档

asp.net mvc基础知识。

linq基础知识。

c#基础知识。

vs调试

用sql server 自己跑一下sql 各种语句,练习一下数据库设计。

再使用原始 api ( sqlCommand之类) 和mvc, 做一个小型项目,比如实现简单的用户注册,提交表单功能。

运气好的话,可能会找到实习的工作。

时间比较紧的话,建议配合文档和自己写demo(例子)测试(github和很多地方有很多例子可以参考),进行学习(一定要学会百度,谷歌寻找答案,很多看起来很难的问题,花点时间,可能自发的熬夜,一般会找到答案,或者折衷方法,如果不是工作,实在想不明白,就跳过,过段时间再看看)。

运维和生产环境知识:

网站使用azure,azure数据库+应用服务(定时备份任务,部署都非常简单快捷,庞大的运维成本比如linux环境,直接省了,而且应用服务也能使用vs调试),可能比自己使用云虚拟机(自己搭建sql+web环境,比如服务商的原因,数据永久丢失),要简单,稳定,便宜的多。但是最好也了解一下。比如数据库备份,环境搭建。

另外,有时候不太理解,一些规模不小的企业,喜欢在没有专职运维人员的情况下,一个廉价linux vps跑几个网站和数据库,而且往往没有每天备份。

git知识

对于使用此技术的公司,是加分项。


学习和开发工具:

推荐:windows和MAC环境下面下载 | IDE、Code 和 Team Foundation Server | Visual Studio 学习和个人开发者微软免费提供Visual Studio社区版,下载安装就可以了。

其次:如果不想使用功能全面的IDE或者在Linux下,可以使用VSCode Visual Studio Code - Code Editing. Redefined


入门阶段:

c#通过看文档,或者基础书,了解基本语法,然后,通过控制台应用体验lambda表达式,linq,async task。

语言基础:

c sharp第一本:asp.net的主流开发语言是c#,要学习C#首先要看的书是《深入理解C#》作者是Jon Skeet,(C# in Depth, Fourth Edition 英文第4版)这本书会按C#的发展过程,带你逐步深入理解C#语法,从一开始的泛型,委托等,到基于他们构建起来的linq,然后基于linq,构建起来的linq to sql,并行编程,到C#5的Task(Task),一步步下来,你会比国内很多人了解C#的语法,你会分辨出网上对C#的误解与明白C#的强大。

C# in Depth, Fourth Edition

About this site, and C# in Depth

c sharp第二本:然后继续看《CLR VIA C#》,作者是Jeffrey Richter,翻译是周靖,里面很多东西可能会晦涩难懂,看完这本书你会知道,为什么C#里面的一些东西是怎么设计的,知道该怎么使用。

c sharp第三本:很多时候,你会感觉自己写的代码结构,命名的参数、变量非常恶心,总是感觉还差点什么,这时可以看《.NET设计规范 : 约定、惯用法与模式》很多C#专家参与进来,分享给你微软c#官方,使用C#时,遇到的种种坑, 使你的代码结构有很大的提高。

推荐了解的路线图

c#官方开发进展(实时最新,任何人可以参与讨论)

如果不是工作需要,推荐学习最新版的asp.net core

asp.net core官方开发进展(实时最新,任何人可以参与讨论)

asp.net core路线图

dotnet core官方开发进展

dotnet core路线图

推荐用来入门的源码示例:

asp.net core Razor:糅合了mvvm框架+mvc+webform精华。学习的话,当前可以看asp.net core官方文档和官方音乐商店示例程序(点击连接)。

asp.net程序设计:

asp.net mvc入门:精通ASP.NET MVC 5,作者:Adam Freeman ,(精通 ASP.NET core 2.0 mvc英文版已经出来了 Pro ASP.NET Core MVC 2)

深入asp.net:ASP.NET MVC 5 框架揭秘 作者:蒋金楠,大家可以关注下他的博客:Artech - 博客园 这个大牛博客里面有部分讲解asp.net core原理的资料

Entity Framework框架:

官方提供基于.net 针对数据库的ORM框架(Entity Framework is an object-relational mapper (O/RM) that enables .NET developers to work with a database using .NET objects.)

什么是ORM?object - relational mapper

object(对象)-relational(关系) mapper(映射)

Entity Framework Core(基于.net core 强烈推荐)

Entity Framework (EF) Core是 Entity Framework 数据访问技术的轻量级,可扩展,开源的跨平台版本(Entity Framework (EF) Core is a lightweight, extensible,open sourceand cross-platform version of the popular Entity Framework data access technology.)

既可以通过这种简单的方式设置数据模型

也可以通过这种精细化的方式建模

EntityFramework6(基于.net Framework)

虽然强烈推荐将EntityFramework6升级到EntityFramework Core,但是如果你必须维护EntityFramework6项目的话,可以参考EntityFramework6源码

数据库应用设计:

理解关系数据库:明白关系数据库的表的优化,建立表之间的高效索引

理解Entity Framework Core:EF Core如何建立表之间的关系,一对一,一对多,多对多关系,级联,EF Core扩展,性能优化,数据迁移(一定要花点时间研究下,做好项目的向后兼容)。

另外还应该研究下国外asp.net开源框架,比如,我自己研究时看的,nopcomerce。asp.net core,EntityFramework,asp.net Identity,都是开源的,建议大家也研究下,帮助挺大的。

数据库sql入门:强烈推荐日本大神MICK的 SQL基础教程 ,很神奇的一本书。

.Net框架设计:

Microsoft.NET企业级应用架构设计(第2版)建议结合Jeffrey Richter大神的《CLR Via C#》。如何构建一个复杂的.Net应用,减少繁琐的代码,不仅仅可以应用到Web应用,还可以应用到桌面应用,移动应用等。


实战:

使用asp.net core + EntityFramework Core写一个博客系统,或者写一个微型论坛,或者在线商店asp.net core web程序(支付接口那里不用必须完成),入门项目,暂时不考虑sql语法,


html网页编辑器:

1、可以使用TinyMCE | The Most Advanced WYSIWYG HTML Editor , TinyMCE老牌编辑器,有使用 LGPL 2.1授权协议的免费社区版提供下载TinyMCE | Download WYSIWYG HTML Editor,源码免费开放,使用typeScript开发。地址:tinymce/tinymce 。(如果出售软件包含该编辑器的话,一定要注意版权,另外希望大家尊重软件和图书版权,保护版权自觉从我做起

2、quill

BSD3协议的现代WYSIWYG 编辑器,官网 界面简洁美观,不足之处就是需要同步编辑器和页面控件的文本,对新人可能有一点复杂。


前端和web设计相关:

html,css基础:基础书,或者看文档。

bootstrap:看文档或者看书,然后分析源码。

自己做一个认为不错的页面。

javascript:看书或者文档,自己做一个有趣的特效。

asp.net core web api:

配合fiddler或者其他http数据包分析工具边学边验证,可以配合前端单页程序框架开发优秀的网站程序,以及开发移动端app

asp.net core web api 官方文档

建议学习的辅助技能:

  1. 学会使用浏览器调试html、css和javascript
  2. 学会使用浏览器和fiddler分析http数据包。(可以尝试javascript调试和抓包分析一些网站的接口调用,比如登录,点赞,获取列表)
  3. 学会使用浏览器扒特效

实时通信应用框架

SignalR

实时通信,比如socket可能会被杀毒或者防火墙拦截,SignalR通过多种协议实现实时通信WebSocket,SSE(Server-Sent Events,服务器发送事件),长轮询(Long Polling)。对服务器的80,443端口访问一般不会被拦截,所以与传统通信协议,相比比较稳定。

WebSocket

传统的通信协议,绝大多数编程语言和框架都支持。

Blazor 未来的Web

Blazor 是什么?

答:Browser Razor ,浏览器中运行的Razor,

什么是Razor?

ASP.NET Core 的 Razor 语法参考

Razor is a markup syntax for embedding server-based code into webpages.

Razor是在(比如asp.net mvc)网页中嵌入服务端代码的标签语法。

借助WebAssembly在浏览器中运行c#,一开始是实验性个人项目(Blazor源码),现在已经成为asp.net官方团队维护的项目(现在,各大浏览器基本已经支持webAssembly)。

在asp.net core 3.0中Razor已经变成预览版(不再是实验性项目)。

如果前端采用Blazor,将使网站的前后端开发语言一致(此时,绝大部分项目应该都是c#),减少成本,并且前端受益于c#的语法糖和稳定性。

Blazor当前有两种架构,

1、一种是原始的客户端运行Blazor(将c#通过mono编译成WebAssembly在浏览器中运行),浏览器需要下载WebAssembly,移动设备打开会比较慢。

2、另外一种是服务端运行Blazor(本来该在浏览器中运行的c#,在服务器中运行,通过SignalR与浏览器的javascript通信),无需浏览器下载WebAssembly,浏览器打开很快,但是服务器承担额外的开销。


深入(升职加薪)

k8s(kubernetes)和dapr

大数据分布式应用框架,比如我自己的项目中,k8s+dapr作为开发基础,asp.net identity作为授权注册页面和服务,各个微服务pod作为微服务api节点,blazor server作为web ui。轻松维护构建复杂功能的网站系统。

grpc

现在我开始在网站系统各种微服务之间的通信采用grpc,blazor server采用grpc.web(兼容http1协议)。同时硬件设备之间的数据控制采用grpc进行控制和数据采集。

docker

作为k8s的基础,不需要很深入,至少需要了解大概。

mvvm框架

我采用的是ReactiveUI mvvm框架,在桌面程序、blazor、xamarin中都可以使用。响应式技术,熟练了用起来非常舒服。而且架构清晰,极大减少代码量。

redis、kafka、mongo、rocketmq,rabbitmq、ElasticSearch 、mysql

正在逐步学习和尝试在项目中应用,感觉.net程序员应该与时俱进,了解现在的主流大数据、互联网成熟的各种解决方案,并在项目中应用,利用这些技术和.net技术解决问题,创造价值。

我自己的开发方法

思考功能,画图架构关系,设计框架,模块细节,实现框架和单元测试,再逐步实现功能。具体的功能在小程序中测试之后,添加到项目中。

相关资料:

asp.net core: asp.net core 1.x 原名为asp.net mvc6,而且早于.net core诞生,后来.net core出来后,为了统一平台,于是asp.net mvc6更名为asp.net core,现在中文asp.net core学习资料可以参考文档和官方示例,.net core 3.x正式版快出来(可以从这里下载),.net core包含桌面(wpf,winform),asp.net,移动(xamarin),c#8。(wpf源码winform源码xamarin源码, c#8新增功能

ASP.NET Core 官方中文文档,大部分基本都已经汉化了,

微软官方文档:技术文档、API 和代码示例

.net官方文档:.NET 文档

.net core下载

ASP.NET Core 官方中文文档

aspnet/MusicStore 微软asp.net团队官方代码示例,著名的音乐商店例子程序。需要Visual Studio预览版才可以在本地打开。(asp.net core最新的技术潮流用在这个简单的示例上面)

nopSolutions/nopCommerce asp.net core的大型项目Nop商城项目

ASP.NET asp.net团队在github上的主页。

aspnet/EntityFrameworkCore EntityFrameworkCore源码

aspnet/Mvc asp.net Mvc源码

aspnet/Razor asp.net Razor源码


其他技能

TypeScript

typescript:由微软主导,C#的首席架构师已经加入了typescript的开发,javascript的超集,已经将扩展部分提交给javaScript语言委员会。在javascript的基础上,添加了泛型、面向对象的类、静态类型,错误安全检测。TypeScript可以编写支持javaScript的代码。减少了大型项目开发时,因为javascript的动态类型,难以开发维护大型项目的缺点。TypeScript 官网。可以在官网看一下教程和文档。

注意:关于单页程序

如果项目具有比较复杂的逻辑,类似应用。使用单页程序比较合适。但是如果你项目只是一个简单的问答版块,几篇日志,简单的购物系统,不建议增加不必要的复杂性。

另外,采用单页程序,对于搜索引擎,可能需要自己维护一套seo系统,抓取页面,然后判断搜索引擎访问时,返回缓存页面。

慎重考虑。

如果是asp.net和单页程序集成的话,建议采用混合应用,混合asp.net的页面认证及某些功能,和单页程序mvvm框架。

angular、vue.js新一代前端语言和框架和RxJS,Redux

angular:现代前端UI框架,功能全面,google出品。angular的学习我看的ng-book:The Complete Guide to Angular 4 结合这本书看的RxJS in Action (豆瓣)自述 | Redux 中文文档顺便入门了RxJs和Redux。

Vue.Js 热门项目,现代前端UI框架,渐进式MVVM前端开发框架,易于上手、易于同其他库进行整合,同时具备完善的工具链和生态系统

RxJS(Reactivex Js):微软发明的基于事件的函数式编程框架,基于流的概念,Angular中的倚天剑。

Redux:由Dan Abramov在2015年创建。是受2014年Facebook的Flux架构以及函数式编程语言Elm启发,Angular中的屠龙刀。在angular中Rxjs可以很容易实现Redux。


javaScript:我看的犀牛书(JavaScript权威指南,作者:David Flanagan )入门的,你可以看本薄一点的。(javaScript经过ECMAScript 2015,ECMAScript 2016产生了很多新变化和思想,建议了解下,犀牛书里面的标准只到了ECMAScript 5)

javaScript最新的标准 ECMAScript® 2019 语言特性提案

jquery基础:锋利的jquery,作者:单东林 / 张晓菲 / 魏然

ajax:前端异步脚本

前端框架:深入理解Bootstrap,作者:徐涛

bootstrap:文档我看的Bootstrap 中文文档 · Bootstrap 是世界上最流行的、移动设备优先的、响应式前端开发框架。


阅读源码

asp.net ,桌面,xamarin 源码并没有多难以阅读。

  1. 源码中使用了很多c#新特性,因此需要掌握
  2. 英语词汇量,如果你能提高词汇量到2w,更容易阅读,.net源码非常便于阅读,如果能一眼看懂变量名和方法名,逻辑、用途也能了解大概。
  3. 编程基本功,自己参与过一些c#项目开发,不至于一看源码就头疼

辅助技巧:

学会使用Visual Studio 查看代码引用,文本搜索,预览查看代码。


其它补充:

我看完这些后,感觉自己离精通差很远的距离,只能说是刚学会走路吧,

题主我自己也是个业余学编程8年的菜鸟,2014年发表的这个回复,2016年业余时间开始为了去做一个自己梦想中的网站系统,花时间深入研究C#语法,.net,发现了自己之前的很多不足。到2017年5月,大概学了这些

欢迎大家参与微软文档本地化:

微软官方文档本地化项目github首页:https://aka.ms/MVP19Q2CNTeam13O

微软件官方文档地址(可在文档中直接点击编辑):Technical documentation, API, and code examples

微软新推出的学习平台:Microsoft Learn


题外话

如果你是非科班出身,一定要花点时间研究简历。

另外,刚毕业的朋友,一定不要听信一些成功学或者长辈的话,无脑加班,无限付出。

假如,一生寿命70岁,按照程序员大家普通说法,干到35岁。35到70还有很多事情等着你去做。

而且,中小企业好像平均寿命只有7年左右。

身体是革命的本钱。

长时间疲劳工作,远离社交,远离人群,就像工业化后流水线的工人,对自己生活和心理伤害非常大。如果可以适当参与一些生活中的集体活动。

可以健身,玩玩哑铃(如果时间不多可以只做哑铃),跑步,骑单车。或者拳击,散打,泰拳(如果学习格斗记得自备护具,另外,业余玩玩就行,不要轻易打比赛)。


关于asp.net,asp.net core,asp.net 5,dotnet,dotnet core 其他要说的

asp.net 自诞生之日起,就在不断的产生新技术。直到现在,和久远的将来。

公司和个人需要不断的学习和适应新技术。同时也需要不断的投入成本来学习。

可能也是.net培训机构少的原因,也是当前asp.net core(2019、2020)国内公司没有大面积普及的原因(996下班之后,公司和个人可能所剩精力不多)。

但是,一个不断变化,投入大量人力物力,适应市场发展,技术迭代的开发框架,肯定会带来很大的益处。


.net未来发展趋势,未来需要什么样的职位?

.net开发效率越来越高,c#未来会出到10以上版本,甚至20以上。c# 4之前的老旧特性可能会不怎么使用了。

另外,.net可以非常快速的开发整套系统,比如电商可以用.net做后台,网站,全平台app(wpf+xamarin:windows,ios,android)。所以,也许只需要1、2年,.net 会有很多全栈开发工程师岗位(就算没有大量出现,也可以在离职时,多很多选择)。

xamarin的跨平台是否稳定?xamarin基于mono,unity也基于mono,所以可以参照unity。

当然,对于app开发,mvvm之类的框架也需要了解。就像asp.net core,至少要了解ef core和依赖注入,sql,表关系。

很多流行app已经或者考虑采用wpf开发。

作者:赫敏璋

给TA打赏
共{{data.count}}人
人已打赏
.NET

杨中科-.NET下 DDD落地实战-直播课问答回顾

2022-4-12 11:21:48

.NET

分享我做Dotnet9博客网站时积累的一些资料

2022-5-17 11:26:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索