歡迎光臨
每天分享高質量文章

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

已同步到看一看
赞(0)

分享創造快樂