学习ASP.NET Core需要关注什么?
“我有点不知道自己应该关注什么”
学习 ASP.NET 以前相当简单。你只需创建一个新的 WebForms 项目,就可以开始运行了。
现在(坚持使用 ASP.NET Core)您有了选择,有很多选择。
- MVC、Razor Pages 还是 API?
- 如果是 API,哪个 SPA?Angular、React、Vue 还是其他
- Typescript 或 Javascript
- Visual Studio 还是 Visual Studio Code?
难怪您无法决定从哪里开始,但您必须开始,那么该做什么呢?
好吧,你可以让别人为你做决定。
只有一个问题...
...当人们对你的决定不感兴趣时,他们(自然地)倾向于根据自己的经验和偏好提出意见,而你真正需要的是更具体的东西。
您需要一种方法来自己做出决定。
好消息是,犹豫不决是整个过程中最糟糕的部分。
此时,你对未来任务的艰巨性感到最为不确定。
我的一位老上司曾经把这称为“白纸时刻”。
一旦你踏入这个领域,其他一切都会水到渠成,你将能够专注于自己的特点,而不是选择学习什么。
此外,你还会拥有动力,这是一个更好的状态!
以下是如何从“选择,这么多选择”到“啊,构建这个功能很有趣”(以尽可能少的步骤)
- 想出一个小应用程序的想法
- 选择一个“堆栈”开始
- 构建第一个功能
- 重复
首先,想出一个小应用程序的想法
学习这些东西的最好方法是建造一些东西,看着它燃烧起来,然后找出你的打字错误的地方!
照片来源:Citoy'Art Tempus fugit via photopin (许可证) *
小型应用程序非常适合这种情况,因为您不必与任何人分享它(除非您愿意),所以您可以自由地构建任何您喜欢的东西!
如果您缺乏灵感,这里有一些想法。
爱好/兴趣
如果您对某件事感兴趣(运动、爱好、漫威宇宙等),那么围绕它构建一些东西可能会很有价值。
您将受益于对这个主题的真正兴趣,并且几乎肯定能够想出很多有关功能的想法。
寻求灵感
如果您仍然茫然,请在 Google 上快速搜索编程副项目,您会找到很多想法。
它们并非都适用于 Web 应用程序,但很多都适用。我很喜欢 #34 的想法:午餐选择器(自己决定午餐吃什么,这样就不用自己做了!)。
我还喜欢Dave Ceddia 的这个列表(专门针对 React,但也适用于其他框架)。
然后选择一个“堆栈”开始
乍一看,这似乎是“把骰子抛向空中,看看它们落在哪里”的变体,但请考虑一下……
看起来你面前有很多条路,但现在只有两条。
服务器端应用程序或 API + 客户端。
其余一切都取决于这个选择。
服务器端应用程序
这是一个服务器端应用程序(ASP.NET MVC 或 Razor Pages)。
一个请求来自浏览器。
ASP.NET 处理该请求(通过MVC 控制器或 Razor 页面),执行一些业务逻辑(可能与数据库交互),然后返回视图/页面(在服务器上编译为 html)。
API + 客户端
现在将其与这个例子进行比较。
在这里,“后端”以 API 的形式公开,并使用 Angular/React 等编写单独的前端客户端。
这一次,用户界面已经移至客户端(在浏览器中运行)。
在服务器(ASP.NET 部分)上我们仍然有控制器,但它们返回数据(通常为 JSON)而不是编译的 html(通过 Razor Views/Pages)。
它们是一样的!
嗯,蓝色虚线下方的部分无论如何都是如此。
这对您来说非常棒,因为这意味着无论您使用 MVC、Razor Pages 还是决定建立 API,您与数据库交互并对数据执行逻辑的部分都将保持不变。
事实上,在 ASP.NET Core 中,MVC/Razor Pages 和 Web API 都有效地合并并共享相同的底层框架。
因此,无论您选择从哪里开始,您都将学习 ASP.NET Core 工作原理的基础知识(包括依赖注入、启动配置、通过 ORM(如实体框架)进行数据访问等)。
从哪一个开始?
现在您仍然需要弄清楚是否先尝试服务器端或 API + 客户端。
这些标准可以帮助您做出决定。
1. 工作机会
如果您最终希望找到一份构建 ASP.NET 应用程序的工作,那么对您可从事的工作进行一些研究可能会有所收获。
一种方法是访问某个在线求职网站(Indeed、Monster 等)并查看您所在地区列出了哪些 .net 职位。
这至少会让你知道风吹的方向。
2. 先前经验
也许您已经拥有一些 html 和 javascript 经验。
在这种情况下,您可能更愿意坚持您所了解的内容并选择带有 javascript/html 客户端的 API。
也许您以前使用过服务器端框架并希望从那里开始。
请记住,无论您选择服务器端还是客户端应用程序,您仍然会编写大量看起来很像 html 的代码,无论是在 Razor 页面/视图中还是作为 React 组件中的 JSX。
同样,Typescript 和 Javascript 在语法和功能上也越来越接近,因此您所学到的很多知识都可以互相转移。
3. 最简单的选择
如果您没有令人信服的理由来选择其中一个,那么如果从 ASP.NET MVC/Razor Pages 开始,您可能会发现“移动部件”较少。
最后,如果您仍然无法决定,那么开始比选择“正确”的选项更重要,所以掷骰子并继续前进吧!
哪个 JavaScript 框架?
如果您选择 API + 客户端堆栈,那么您将面临这个不可避免的难题。
最大的危险是,你最终会试图一次性学习太多东西(Web API、ASP.NET、数据访问和<insert-javascript-framework-here>
)。
那么如何才能避免让自己负担过重呢?
1. 使用现成的客户端测试你的 API
您无需构建前端,而是可以使用Insomnia之类的工具在构建 API 时对其进行测试。
这样,您可以轻松地向您的 API 发起请求,而无需陷入 JavaScript 框架的困境。
2. 使用项目模板启动“简易模式”
如果您决定同时解决 JS 框架,ASP.NET 模板项目是一个不错的选择。
无论是从 Visual Studio(通过文件 > 新建项目)还是 CLI...
dotnet new angular
或者
dotnet new react
这将帮助您以最小的项目开始并运行,以供参考。
现在,构建你的功能
我知道,说起来容易做起来难,对吧?
这正是选择尽可能简单的功能以及尽可能简单的构建方法真正值得的地方。
所有的学习都在这里进行,通过反复试验,找出你不知道的东西以及如何找到答案。
该过程的这一部分无可替代,这就是为什么从简单的功能开始是关键。
如果您尝试构建整个“Twitter 克隆”,您会发现很难获得那些推动您迎接下一个挑战的小胜利。
那么更好的办法是尝试建立 Twitter 的一小部分。
也许,一个简单的页面显示一条硬编码的推文,只有标题和文本,然后从那里开始构建。
重复
现在您已经掌握了一项小功能,您可以解决接下来的一两项功能。
专业提示:如果您以能够重复使用业务逻辑的方式构建 MVC/API 项目,那么您的生活就会变得更加轻松。
您为前几个功能编写的逻辑/数据访问代码可以轻松成为学习“其他堆栈”的基础。
了解如何通过这个超快速技巧重构控制器中的逻辑
例如,如果您选择首先尝试服务器端,则可以通过 API 公开相同的业务逻辑,并开始构建一个简单的前端客户端来查看其比较情况。
以这个控制器动作为例。它返回“订单数据”(你可以通过前端应用程序(例如 React)显示)。
public class OrderController : Controller {
// rest of code omitted
public IActionResult ById(string id){
var order = _orders.Find(id);
if(order == null){
return NotFound();
}
return Ok(order);
}
}
虽然这将返回一个 MVC 视图(具有相同的订单数据);
public class OrderController : Controller {
// rest of code omitted
public IActionResult ById(string id){
var order =_orders.Find(id);
return View(order);
}
}
重要的是,不,是至关重要的是,这些控制器操作尽可能少,并且纯粹专注于公开数据或呈现视图。
如果您将重要的业务逻辑推送到另一个类/服务/处理程序(如_orders
本例所示),那么改变调用该逻辑的方式就变得非常简单。
换句话说,尽量避免这种事情!
public class OrderController : Controller {
// rest of code omitted
public IActionResult ById(string id){
var order = _dataContext.Orders.FirstOrDefault(x=>x.Id == id);
if(order == null) {
order = new Order();
}
return View(order);
}
}
在这里,我们陷入了困境,因为业务逻辑位于控制器操作本身中,这使得现在以不同的方式公开相同的数据变得更加困难。
去!去!去
你想学习 ASP.NET,世界需要你学习 ASP.NET!所以,给自己减压吧。
不用担心学错东西。
您可以通过实践来学习(您做的越多,您就越能准备好学习世界向您提供的任何语言/框架/架构)。
您的 ASP.NET 学习计划
- 选择一个有趣且“可构建”的副项目
- 选择两种主要架构之一(“堆栈”)
- 识别一个微小的特征(简单,很少活动部件)
- 弄清楚如何构建该功能(最简单的实现)
- 确保控制器操作(和/或 Razor Page 代码)保持最少
- 重复步骤 3-5
- 当你想尝试不同的东西时,切换架构(堆栈)
尝试一下并告诉我你的感受:-)
在你离开之前,看看如何用这个超快速的技巧重构控制器中的逻辑
鏂囩珷鏉ユ簮锛�https://dev.to/jonhilt/what-to-focus-on-when-learning-aspnet-core-52cm