C# 跨设备前后端开发探索
每個人都擁有?好奇心,好奇心驅使著我們總是去嘗試做一些有趣的事情。
帶起你的好奇心,本文將使用?C#?開發各種各樣好玩的東西。
每個人都擁有?好奇心,好奇心驅使著我們總是去嘗試做一些有趣的事情。
比如這件事:
在好奇心的驅使下,我們立刻?嘗試?我們的想法。
我們需要用電腦打字,手機端出字;于是我們需要開發的是一款云輸入法。而一個最簡單的云驅動的軟件需要至少一個?Web?后端、一個桌面端和一個移動端。
還沒開始呢,就這么復雜。
擺在我們面前的,有兩條路可以選:
如果先搞起來,那么我們能夠迅速出效果,出產品,出玩具,那么這種成就感會鼓勵我們繼續完善我們的代碼,繼續去做更多好玩的東西。
而如果是先掌握所有理論知識再實踐,這是我們從學校帶來的學習方式,我們中的多數人在校期間就是這么學習的。雖然對學霸來說可以無視,但對于我們這樣大多數的小伙伴來說,簡直就是“從入門到放棄”。
如果先搞起來呢?如果我們連“入門”都不需要呢?是不是就不需要放棄了!
怎么才能夠先搞起來?我們需要調整一下心態——我們不是在學,而是在玩!
我們需要做的是降低學習成本,甚至入門不學習,那么立刻就能玩起來!
我們有?C#,還有什么不能馬上搞起來!
打開?Visual?Studio?2019,我們先搞起來!
對于簡單的云服務來說,使用?Asp.NET?Core?開發是非常簡單快速的。你可以閱讀林德熙的博客入門?Asp.NET?Core?開發:
win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序 - 林德熙
我們是要玩的呀,什么東西好玩。我們自己就是用戶,用戶看得到的部分才是最具有可玩性的。這就是指客戶端或者?Web?前端。
我們現在要拿?C#?寫客戶端,一般?C#?或者?.NET?的開發者拿什么來寫桌面客戶端呢?
WPF 或者 Windows Forms 應用程序
我們現在已經有至少兩個端了。由于我們是同一個軟件系統,所以實際上非常容易出現公共代碼。典型的就是一些數據模型的定義,以及?Web?API?的訪問代碼,還有一些業務需要的其他公共代碼等等。
所以,我們最好使用一個新的項目將這些代碼整合起來。
我們選用?.NET?Standard?項目來存放這些代碼,這樣可以在各種?.NET?中使用這些庫。
由于我們多數的代碼都可以放到?.NET?Standard?類庫中,以確保絕大多數的代碼都是平臺和框架無關的,所以實際上我們在其他各個端項目中的代碼會是很少的。
這個時候,寫一個控制臺程序來測試我們的項目,控制臺程序的部分其實只需要很少的用于控制控制臺輸入輸出的代碼,其他多數的代碼例如用來訪問?Web?API?的代碼都是不需要放在控制臺項目中的,放到?.NET?Standard?的類庫中編寫就可以做到最大程度的共用了。
接下來要完成這個云鍵盤程序,我們還需要開發一個移動端。使用?Xamarin?可以幫助我們完成這樣的任務。
關于使用?Xamarin.Forms?開發一個鍵盤擴展,可以閱讀我的另一篇博客:
使用 Xamarin 開發 iOS 鍵盤擴展(含網絡訪問)
于是,我們僅僅使用?C#?還有客戶端開發者熟悉的?XAML?就開發出了三個端了。
這三個端中,有兩個都是客戶端,于是就會存在向用戶分發客戶端的問題。雖然可以讓用戶去商店下載,但是提供一個官方下載頁面可以讓用戶在一處地方找到所有端的下載和部署方法。
這需要使用到前端。然而如何使用?C#?代碼來編寫去前端呢?
使用?CSHTML5!
你可以前往?CSHTML5?的官網?下載?Visual?Studio?的插件,這樣你就可以在?Visual?Studio?中編寫?CSHTML5?的代碼了,還有設計器的支持。
于是我們使用?XAML?+?C#?就編寫出了各個端了。
如果沒有?GUI,那么跨平臺將是非常容易的一件事情。例如我們想要在?Mac?電腦上也做一個打字發送的一方,那么一個控制臺應用也是能夠直接完成的。
不過,這并不是說,我們只能通過控制臺來開發桌面端應用。
我們還有:
AvaloniaUI/Avalonia:?A?multi-platform?.NET?UI?framework
Xamarin 版的 WPF 桌面端
Xamarin.Mac - 開發 Mac 桌面端
GTK# - 開發 Linux 桌面端
Tizen .NET - 開發三星物聯網系統的 GUI
利用這些平臺,我們能開發其他桌面平臺的?GUI?客戶端。
另外,利用?ML.NET,我們還能用?C#?進行機器學習。可參見:Bean.Hsiang?-?博客園。
利用?Roslyn,我們還能用直接做編譯器,然后你還有什么不能做的?關于?Roslyn?的入門,可以閱讀:從零開始學習?dotnet?編譯過程和?Roslyn?源碼分析?-?walterlv。
還有?IoT。
還有其他……
每個人都擁有?好奇心,好奇心驅使著我們總是去嘗試做一些有趣的事情。
使用你熟悉的語言?C#,不需要太多額外的入門,即可玩轉你身邊各種你需要的技術棧,玩出各種各樣你自己期望嘗試開發的小東西。
本文會經常更新,請閱讀原文:?https://blog.walterlv.com/post/april-event-everything-can-be-done-using-csharp.html?
原文地址:https://blog.walterlv.com/post/april-event-everything-can-be-done-using-csharp.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的C# 跨设备前后端开发探索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core/Framework
- 下一篇: 使用 C# 和 Blazor 进行全栈开