Day 4. 关於.NET後端(2)

开开始学後端的人多少会听到ASP.NET、.NET Framework、.NET Core,但不清楚他们是什麽,因此这边简单说明一下


.NET Framework

如果说C#、VB.NET都是人看得懂的程序语言,那.NET Framework就是在他们下面的大框架,他主要负责3件事情

  • Base Class Library (BCL)
    负责提供许多的组件让使用C#跟VB.NET的工程师可以使用微软提供的内建写法来完成一些功能,例如System.IO,只要引用了这些组件就可以使用某些微软提供的Function,让工程师不需要在自己花很多的时间去写出很基本的功能。
  • 建置/编译器
    当你按下建置时,.NET Framework编译器会将你写的程序码转换成.dll或是.exe之类的档案,其中要注意的是不管是哪个版本的.NET Framework都是只能建立在Windows平台上,这也因此後面会有.NET Core的出现。
  • Common Language Runtime (CLR)
    负责执行编译出来的exe或dll,特别要注意的是,Runtime是有版本相容的问题的,例如你的IDE建立了一个.NET Framework 4.8的专案,但你建立完後把程序交给客户,但客户那边的电脑只有.NET Framework 3.5,那就会无法执行,这时就是要让两边的版本一致,看是你降级或是对方升级。

.NET Core

因为程序的需求不断进步,开始会有跨平台(for Linux)的需求,所以微软又另外发明了.NET Core,对於原本就在用.NET Framework的工程师来说,几乎可以说是能无痛的切换到.NET Core来开发程序(不是完全无痛,WinForm无法在Linux上执行,所以该痛的还是会痛),对於.NET Core,新手需要知道的有这些:

  • 跟.NET Framework一样有BCL,但少了一些(例如WinForm要用的Windows.Form),因此在开发上如果直接复制原本的程序到.NET Core,还是有些地方需要修改(修改的幅度不一定),但很多方法都是相同的,因此切换上算是轻松的。
  • 跟.NET Framework一样有建置/编译器,但因.NET Core模组拆得更细的关系,因此建置出来的东西会比较小,速度也更快,吃的资源也比较少,更符合微服务的需求。另外在输出执行档时,除了原本的runtime跟执行档分开的模式Framework Dependent Deployment(FDD),多了一种把runtime一起打包成执行档的模式Self-contained Deployment(SCD)。
  • 跟.NET Framework一样有runtime,但他的runtime已经可以在Linux上跑了,因此可以跨平台。

Xamarin

如果你学了C#,但又想要开发Android或iOS的App,不管是.NET Framework还是.NET Core都无法做到跨这两个平台,因此诞生了Xamarin的技术。不过Xamarin只能用C#,无法使用VB.NET来开发,所以前一篇才推荐新手在选择上比较推荐先学习C#,而Xamarin能做的事情也是一样有以下几点:

  • 提供BCL
    虽然一样是C#的写法,但跟.NET framework及.NET Core的BCL还是有些不一样,有多了一些BCL也有少了一些BCL。另外Xamarin.Android跟Xamarin.iOS对应Android跟iOS的SDK都是一对一的,因此在开发上有问题也可以直接找Android的开发资源或是Object-C的开发资源来参考。

  • 建置/编译
    可以编译出Android的APK或iOS的App安装档,但笔者当时学的时候要编译iOS的App时必须在Mac上才能编译,或是使用VM的技术开一台Mac的虚拟机,然後在VM里面编译。

  • 根据框架可另外分成:

    • Xamarin.Android:
      可以用VisualStudio来开发Android的App,VS在安装开发Xamarin的功能时会顺便让你自由选择你所需要的Android SDK版本,并藉此来开发。
    • Xamarin.iOS:

    Xamarin 可让开发人员使用与 Xcode 中提供的相同 UI 控制项来建立原生 iOS 应用程序 Objective-C ,但新式语言的弹性和简洁性 (c # ) 、.net 基类库的强大功能 (BCL) --MSDN

    也就是说只要你会写C#,并且开发过Xamarin.iOS,那你之後要切换成Xcode开发Objective-C也是可以的

    • Xamarin.Form:
      如果你今天要开发的App同时要跨两个平台,一般的情况下如果你是无法做到两个平台的程序码共用的,而Xamarin.Form就是为了解决这件事情,写法也算满简单的(类似WinForm用拖拉元件的方式开发)。

<<:  Day 06:我们未来再相见

>>:  第06天 - 一些些的 MySQL(上)

Day 8 - Rancher 丛集管理指南 - 架设 K8s(上)

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

[Day12] Face Detection - 使用OpenCV & Dlib:Dlib MMOD

好酒沉瓮底,精彩在最後;只是要付出一点点代价。 本文开始 前面提到过,使用OpenCV &...

C# 入门之格式化输出字符串

前面我们讲特殊符号的时候,我们有讲过 $ 符号,它就是一个简化的格式化输出的符号。今天我们来看看字符...

day18 : kafka服务应用 on K8S (下)

昨天介绍了kafka的机制,今天将会透过strimzi的方式配置kafka cluster,同样的会...

iOS APP 开发 OC 第二十二天,Extension

tags: OC 30 day 延展: Extension 是一个特殊分类,所以延展也是类的一部分。...