Day 13 - .NET Core奇遇记

主导的第一个计画就是帮厂商开发一个平台并且包含3D模型模拟的功能,然後需要有一个後台给厂商能够上传图纹并且进行分类,兴喜若狂的我迫不及待把上一个模拟平台的程序码翻出来查看....

时间压力下产出的程序码有够惨

当把程序码翻出来查看的时候,才深深感受到时间压力下写的程序码只能说有够惨,以前端开发为例当有一个功能新加入的时候就直接生一个function,然後参数的命名也没有特别去思考导致读一个区块的程序码时,常常还要特别下断点看是读取的参数是在做什麽事情。

另外引用到函式库的部分(Three.js),做客制化的时候也是直接去改掉原本定义的一些行为,导致後续有版本的更新时常常需要确认哪个部分更新的时候不会盖掉原本写的功能。上述提到的状况算还好,但比较惨的是画面需要加入特定物件的时候都是直接使用appendChild的方式,结果想要改画面的时候发觉每一个节点的处理行为太过杂乱,需要一个一个去检查注解调之後会影响到那些功能。

最後则是ASP.NET Web Forms的程序码,由於是其他单位提供的程序码然後用过很多个计画,导致有许多的资料夹以及测试的档案难以做切割。并且之前接触ashx、asmx的写法虽然花一点时间但感觉没有很上手,所以写到後来内心一直很想要换个框架或者是其他的方法处理後端的行为。

摸索新框架

也因此上述的各种情况让我感觉光是还技术债的时间,不如直接写一个新的专案重新规划需要的功能,并且可以把初版完成到一个程度後,如果有类似的需求可以直接引用来延伸开发。

那要怎麽去找新框架呢,我第一个想到的是过去几个月有使用的程序语言开始寻找,从C#和Javascript的关键字找了几个结果,首先是Javascript在後端的开发语言找到了Node.js,虽然说Node.js的一些概念是源自於Javascript,但有一些的观念需要花费一点时间学习因此将它列为候补清单。

所以呢刚刚没提到的C#,则是找到了.NET Core的相关资讯後就决定要使用它来开发新的专案,比较大吸引我的原因就是蛮多的功能在Visual Studio开发上算蛮省力的,并且又经历了几个月.NET Framework的洗礼,所以觉得整体上手起来会比较顺利。

简易的操作和重点归纳

接下来会分享专案建立时的基础流程,并且使用Visual Studio 2022年实作这一些事情,除此之外也会简单带一点在开发上可以留意的地方,以及可以参考的相关资源汇整等等。

建立专案

Imgur
开启Visual Studio 後点击建立新的专案
Imgur
接着会看到许多的范本然後由於专案我是希望使用MVC的概念开发,因此选取ASP.NET Core Web应用程序的选项後点击下一步
Imgur
这一个步骤就是输入这个专案的名称以及路径位置(如果想要放在特定的路径这里就需要修改),完成後接着就按下一步
Imgur
这一个步骤分别有架构、验证类型以及是否需要启用Docker的选项(不过Docker的部分没有去实作因此略过说明),首先检视框架的选项展开後会看到.NET Core 3.1、.NET 5、.NET 6,在选择的考量下可以参照目前各版本的支援生命周期以及开发的规划选择(在这里我们选择.NET 6预览版)。

接着在验证类型的部分有个别帐户、微软身份认证平台与windows的验证类型,这几个选项主要都是会使用个别帐户去练习注册和登入的功能,算是还蛮适合入门学习的时候可以参考的部分。上述两个选项确认之後接着就可以按建立罗!

实作小技巧

要如何看到想看到改完之後的效果

Imgur
Imgur
当程序码改完之後要看到修改後的情况可以点击画面上红框框的地方,或者是快捷键F5即可开启修改後的网页画面和功能

怎麽新增资料库连线的设定档

Imgur
假如今天需要连线到其他的资料库时,连线的的相关资讯需要到appsettings.json设定,并且在ConnectionStrings(上图的红框处)内新增连线的详细资讯如下。

"IdentityConnection": "Server=IP位置; Database=资料库名称; User ID=帐号; Password=密码;"

另外还需要至Program.cs新增刚刚新定义的资料库连线如下图
Imgur

Entity Framework常用的ORM方法

Code First

这个方法主要是资料库没有现有的资料表情况下可以考虑使用的设计方法,以MVC的架构来说大致上的概念就是在专案内的Model区块定义资料表与各自的栏位,并且透过Migration的方式更新到资料库端。对於这个我还蛮常使用的,但当有引用到多个DbContext需要留意更新的指令有没有对应到,除此之外设计栏位的时候也有蛮多的属性可以对照资料表的概念设计。

参考来源

Model First

这个部分的画在新开发的专案很少使用这个方法,其中一个原因为部分的现有资料表的结构不太能符合新系统的设计,因此就比较倾向使用Code First的方式,但也是提供相关的资讯给大家参考。

参考来源

部署网站

Imgur
在这个部分首先参照画面上在该处点击右键部署
Imgur
接着在布署的类型上有几种可以选择,这里以我最常使用的方式说明(选择资料夹)
Imgur
接着是部署的路径设定基本上可以不用特别调整,但需要留意的是部署完成後如果是要上架到IIS上,基本上只要把这个路径的资料夹放上去就可以了!(在还不知道这件事情前常常把整个专案都放上去xDD)
Imgur
都设定完成後最後就是点击发布将你的部署档案产生出来罗~~

使用後的心得

不得不说从开发工具、资料库到使用框架都是微软爸爸的东西开发起来还蛮方便(全家餐的概念),光是官方上的教学资源就可以手把手的完成一个基础的网站,并且在近期的Visual Studio 2022的版本也针对.NET提供更方便和有效率的功能,在跨装置开发的框架上个人还蛮推荐的!

开发後厂商使用的心得

在执行计画的其间除了自己主导的专案外,还支援了几个同事辅导的KPI项目(也是要平台载入模拟的场景),如同前述提到的当我完成一个初版之後,就参照相同的功能快速产生多个专案,这样也可以节省从头来耗费时间的成本(更重要的是只有我一个人开发QQ)。

而提供给厂商使用之後基本上他们对於功能面的操作没有太多的意见,主要都会询问这个网站可以使用多久之类的问题,所以其实用什麽语言或者是框架对他们来说没有太多的意见,但整体而言的反馈还不错觉得一切辛苦都值得了。


<<:  [Day02] Which one is better? Oh... I mean more suitable

>>:  [Day 12] 当冲实验结果概述

Day 30 聊聊一些 JS 几个常听到的名词

API 常听到工程师在工作场域中说要取得什麽 API,那这个 API 表示的是什麽意思呢? API ...

[访谈] APCS x 学测个申 JacobLinCool

今天邀请到一样是和我同一组铁人赛「NTNU-Unic0rn」的组员,也是师大资工同届的同学 Jaco...

ETA screen testing (1)

上一篇我们完成了车站列表页的 ViewModel 和 Presenter 的 unit test。现...

【Day6】 Introduction

基本语法 前一篇我们提到了输出要用cout,那如果我们今天想要输入进资料呢?这时候就要使用到cin啦...

[Day23] swift & kotlin 游戏篇!(5) 小鸡BB-游戏制作-Tab功能分页

游戏示意 swift - tab功能分页 游戏页面排完版了 接下来就建立下方蓝色的分页吧 分页的功能...