[031] 实战:书大师网站开发准备

.NET大牛之路 • 王亮@精致码农 • 2021.10.19

前面我们花了二十篇左右的文章讲 C# 基础和高级知识点。由于后面要讲的东西还有很多,所以 C# 的内容没办法做到讲得细而全,只能走马观花一扫而过。在后面的内容中如果有遇到 C# 高级知识点,我们再稍带讲一下。

从今天开始我们进入 ASP.NET Core 知识的学习阶段。介于罗列知识点教科书式的讲解有些枯燥,所以本阶段使用实战示例的方式进行讲解,即在开发实际 Web 应用的时候把用到的知识点展开讲解。

1最小化可行产品

在《精益创业》一书中,作者提出了 MVP(Minimum Viable Product,最小化可行产品)理念,得到了很多人认可。MVP 理念核心就是通过不断挖掘用户的需求,不断做迭代增量开发,逐步将一个原型产品演变成满足用户需求的产品。

01927ce9ce9df926a65502c5b893566f.png
图片来源:bit.ly/3DKyY6W

我们也践行 MVP 这个理念,先开发并发布一个最小化可行的网站,后面会随着课程的推进而不断迭代和增量开发。也就是说后面每节课程都会完成此网站的一个或多个功能模块,或者完成一次优化或重构。

本阶段课程实战项目选的是一个电子书分享网站。该网站取名为Bookist,中文可以叫书大师,域名为 bookist.cc。在学习过程中,大家可以通过访问该域名查看示例效果,与自己完成的成果进行对比。

在我们边学习边实战的过程中,有时候为了补充知识点的讲解和演示,可能会在项目中穿插一些产品不需要的临时功能。

我们知道在软件开发方法中有原型法开发方法,原型法又分为抛弃式和演化式。由于我们现在并不知道最终的网站要做成什么样子,所以整个过程我们将采用演化式原型开发方法。

2环境准备

在本文编写时,.NET 6 RC2 刚发布,RC 版本是官方认为可以在生产环境运行的版本,而且 .NET 6 正式版也即将发布了,所以我们也改用 .NET 6 来开发。我的 VS 版本是 2022,安装时默认安装了 .NET 6 SDK。如果你用的是 VS 2019 或 VS Code,则可能要单独安装一下 .NET 6 SDK,请根据自己的需要到官网下载并安装:

https://dotnet.microsoft.com/download/dotnet/6.0

除了使用 .NET 6 这一要求,对于开发环境的其它工具方面大家根据自己喜好选择就行。为了照顾到使用非 Windows 操作系统的同学,我在课程中选用 VSC (Visaul Studio Code)作为代码编写工具。关于如何使用 VSC 开发 .NET 应用请参阅第 009 篇文章。

3开始开发

先创建一个名为 bookist 的项目文件夹,并用 VSC 打开该文件夹。

通过快捷捷 ctrl+` 打开 VSC 的命令行面板。用命令行创建一个解决方案(sln)文件,取名为 Bookist.sln

# 创建一个名为 Bookist 的解决方案
$ dotnet new sln -n Bookist
已成功创建模板“解决方案文件”。

注意:在本课程中,以 $ 开头的表示手动在终端输入的命令行,以 # 开关的代表注释,其它是运行命令后的输出。终端我用的是 Windows 中的 PowerShell,如果你用的是 Bash,注意目录操作的区别。

你可以到官方文档了解所有 dotnet 命令行工具的介绍:

https://docs.microsoft.com/en-us/dotnet/core/tools/

然后使用 ASP.NET Core 空模板(代号为 web)创建一个 Web 项目,取名为 Bookist.Web,并将该项目添加到解决方案:

# 创建一个空的 Web 项目
$ dotnet new web -o Bookist.Web
在 D:\bookist\Bookist.Web\Bookist.Web.csproj 上运行 “dotnet restore”...正在确定要还原的项目…已还原 D:\bookist\Bookist.Web\Bookist.Web.csproj (用时 69 ms)。
已成功还原。# 将 Bookist.Web 项目添加到当前解决方案
$ dotnet sln add Bookist.Web
已将项目“Bookist.Web\Bookist.Web.csproj”添加到解决方案中。

命令执行后,项目的目录结构如下:

122f1c5cb8cc2f9c60797bf84883081f.png

这里暂且不介绍各个目录和文件,后面讲到相关知识点的时候再介绍。

现在,切换到 Bookist.Web 目录,使用下面命令运行项目:

$ cd .\Bookist.Web\
$ dotnet run
正在生成...
info: Microsoft.Hosting.Lifetime[14]Now listening on: https://localhost:7269
info: Microsoft.Hosting.Lifetime[14]Now listening on: http://localhost:5296
info: Microsoft.Hosting.Lifetime[0]Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]Content root path: D:\MyGitHub\bookist\Bookist.Web

打开浏览器访问命令行提示的任意一个网址(比如这里的 http://localhost:5296,你的端口号可能和我的不一样,你也可以使用 ctrl + 鼠标单击 直接打开)。看到如下页面说明一切正常:

e99070b16574fe8fcce4f25becb9e25b.png

如果你使用的是 VS 开发,则直接通过可视化窗口即可完成上面的命令行操作。

4小结

这节课主要让大家了解 MVP 迭代增量开发的理念,并准备好 .NET 6 开发环境,和了解基本的 dotnet 命令行工具的使用。

一个电子书分享网站,最重要的功能就是电子书的展示并能够让用户下载。为了快速上线,我们的网站第一个版本将只展现一本电子书的分享,前期不考虑架构设计和数据库设计,首要目的先把从开发到上线的流程走通。

所以,下一篇我们将实现书大师网站的最小基础功能,并部署到生产环境,快速完成第一个版本的上线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉招聘_INDEMIND|SLAM、计算机视觉、深度学习算法招聘(社招实习)

公司介绍INDEMIND是一家专注于计算机视觉技术研发与嵌入式计算平台研发的人工智能公司,行业领先的计算机视觉方案提供商。公司成立于2017年,核心技术团队成员均为来自计算机视觉领域的顶级技术人员。研发团队结合自身在计算机视觉技术上的优势&#xff0…

2012暑假最后两次组队赛总结

最后两次组队赛的题都相对简单,所以两次都得到较高的题目数!一次是在hdu的diy上做,另外的是在bnu做spoj的题。先补回倒数第二场的总结。倒数第二场一共有10题,当时过的题包括一题枚举求最大值,一题二分求概率&#xff…

依赖Zookeeper生成全局唯一序列号

下面2张图来自:http://www.open-open.com/doc/view/2e0a82e0081d489dace301a2c512053c 关于Zookeeper服务安装,配置,启动, 客户端操作参见:http://aiilive.blog.51cto.com/1925756/1684451 http://aiilive.blog.51cto.com/1925756…

小眼睛有多惨?美颜都懒得救你......

1 眼睛小的人系统一般会自动识别为没睁开▼2 你想笑死我吧???▼3 大家都是狗,凭什么???▼4 这鱼是怎么跳上来的?▼5 感觉有被冒犯到▼6 这个车贴太可爱了!▼7 君子…

软件开发了10年,迷茫了

在新疆做了10年软件开发,从asp开始不断学习,每出现一个新技术自己都会夜以继日的学习,总以为这个技术会是潮流,会持续几年,但结果是不到两年就已经落伍。身边的人慢慢的离开了软件开发队伍,终于2年前自己也…

jmeter聚个报告怎么看qps_Jmeter 使用笔记之 html 报告扩展(一)

题记:在用 loadrunner 的时候可以生成一个 HTML 的报告,并且里面包含各种图表,各种详细的数据。而在使用 Jmeter 测试完后并不能直接生成 Html 的报告(无论是用 GUI 还是命令行启动)。经过查找资料发现 Jmeter 的 extras 目录下有生成 HTML 的…

.NET网站国际化策略

我所在的公司是做SAAS软件,用户群体是面向全球的,因此对应业务系统国际化就是顺理成章的事情。其实国际化重点在于多语言支持,本文就从这方面入手。多语言如上解决方案截图,BQoolCommon.Resource是多语言资源工程,下面…

将数字转化为液晶显示屏的样子

发一个很蛋疼的程序&#xff0c;将一个数字转化为液晶显示屏显示的样子&#xff1a;第一个输入是尺寸&#xff0c;第二输入是要转化的数字&#xff0c;当两个参数都为0的时候结束输入&#xff1a; #include<iostream> using namespace std;struct Print{int size;int num…

计算机标准符合,计算机专利申请要符合哪些标准

需要具体分析&#xff0c;例如&#xff0c;外观专利申请流程&#xff1a;&#xff11;、外观设计专利申请受理阶段专利局收到专利申请后进行审查&#xff0c;如果符合受理条件&#xff0c;专利局将确定申请日&#xff0c;给予申请号&#xff0c;并且核实过文件清单后&#xff0…

史上最强电池!三位诺贝尔奖获奖者研究了大半辈子,却坦言还是没看懂?

全世界只有3.14 % 的人关注了爆炸吧知识手机患了忧郁症电量总剩1%晚上十点半了&#xff0c;还剩10%的电量&#xff0c;等我用完这些电就睡觉..5%了&#xff0c;这个推文看完应该就没电了1%了&#xff0c;算了再看一个&#xff0c;还没关机呢看完了&#xff0c;还是1%&#xff0…

libgdx 学习笔记七 libgdx应用程序生命周期

简介 本章内容描述libGDX 应用程序的结构和怎么根据不同的平台版本使用不同的后台 The Application 做为任意libGDX 工程的主入口点。Application 决定平台的版本和后台图形。Application 接口提供了合适的方法来访问Graphics, Audio, Input and File I/O模块。也提供了跨平台的…

工业相机与民用相机的区别_工业相机和普通相机的区别详解

在机器视觉迅猛发展的今天&#xff0c;工业相机作为机器视觉的核心组件已得到广泛应用&#xff0c;但是很多初学者还是搞不清楚究竟工业相机与普通相机有什么区别。下面小编就带大家一起去看看工业相机和普通相机的区别吧&#xff01;工业相机一、工业相机和普通相机的区别之性…

50个Android应用!Win11支持运行了

文 | 局长出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;Android 应用现已支持在 Windows 11 上运行。微软今日宣布&#xff0c;美国地区 Windows 11 Beta 通道的预览版已支持运行 Android 应用。正如公告所说&#xff0c;如需体验在 Windows 11 上运行…

javascript规范以及设计原则

UI layer的分离 针对CSS: 尽量不要在JS中的添加过多的动态CSS&#xff0c;可以考虑使用addClass 针对JS中的事件&#xff1a; Keep JavaScript Out of HTML 避免以下的代码 <!-- Bad --><button οnclick"doSomething()" id"action-btn">Click…

服务器的类型及作用是什么,按用途分类,服务器有哪些? - 问答库

问题&#xff1a;[问答题] 按用途分类&#xff0c;服务器有哪些&#xff1f;某工程包含两个单项工程&#xff0c;分别发包给甲、乙两个承包商。在施工中发生如下事件。事件一&#xff1a;该工程签约时的计算工程价款为1000万元&#xff0c;该工程固定要素的系数为0.2&#xff1…

删除

【题目描述】 现在&#xff0c;我的 上有 n 个数字&#xff0c;分别是 a1; a2; a3; :::; an。 我现在需要删除其中的 k 个数字。当然我不希望随随便便删除&#xff0c;我希望删除 k 数字之后&#xff0c;剩下的 n k 个数中有最多的不同的数 【输入格式】 第 两个正整数 n 和 …

你发现了吗?数学还能这么美

全世界只有3.14 % 的人关注了爆炸吧知识变身吧傅里叶&#xff01;不&#xff0c;不是变成夜礼服。图片作者&#xff1a;LucasVB和某些公然嘲笑应用的数学家不同&#xff0c;傅里叶特别重视应用领域&#xff0c;而他的傅里叶变换也不负众望成了工程和物理领域里最重要的数学公式…

clickhouse建库_ClickHouse高性能数据库

前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse&#xff0c;接下来进行简单的性能测试。测试数据来源于美国民用航班的数据&#xff0c;从1987年到2017年&#xff0c;有1.7亿条。环境&#xff1a;centos 6.3&#xff0c;32G内存&#xff0c;24核下载脚本&#xff1…

SingnalR 开发到生产部署闭坑指南

前天倒腾了一份[SignalR在react/go技术栈的实践01SignalR默认要协商传输方式SignalR 默认要求协商传输方式[1]不管是.NET客户端还是JavaScript客户端&#xff0c;构建连接时都存在一个默认配置&#xff1a;SkipNegotiationfasle&#xff0c;负负得正就等于要求协商&#xff0c;…

DB2 pureScale在线备份恢复实例1

刚刚接触DB2&#xff0c;对DB2的备份恢复机制不是太熟悉&#xff0c;相关的资料又太少&#xff0c;只好自己慢慢摸索了。 需求 对生产库进行在线压缩备份&#xff0c;备份中包含归档日志&#xff0c;定期将生产库备份恢复到测试环境&#xff0c;确保测试环境采用最新的生产数据…