Monthly Archives - 八月 2017

Xamarin入門心得

首先介紹一下Xamarin這個工具,它是微軟買下來的跨平台App開發平台,可以用很節省代碼開發iOS、Android、UWP,好像還可以開發Mac程式,我還沒測試。

我因為手機是用iPhone,當然想開發iOS程式,但首先就遇到一個問題,開發iOS的程式用Xamarin得要一台Mac。聽說是可以租虛擬Mac來做編譯,但我還是花了51000刷了一台Macbook。

然後開發可以在Windows或Mac上面開發,Windows用Visual Studio,Mac用Visual Studio for Mac,如果現在還在說開發用Xamarin Studio的文章都過期了,因為那個產品已經被合併到Visual Studio for Mac了。

我原先是想用Windows開發,無奈我電腦過了3年速度慢太多,現在Windows的電腦只能拿來上上網和看看動畫吧!偶爾寫寫Windows的程式但要很有耐心。對於學東西要快速嘗試反應來說完全不合適。

所以我就用Mac開發。Mac只能開發Android和iOS兩個平台的App而已,UWP不行,但我沒看過人用UWP的手機。

我寫的第一個測試專案的細節有空再寫,我大概寫一下環境介紹就好。

用Mac開發,我還沒嘗試連接自己的iPhone,我是用Mac內建的模擬器。

在安裝的時候Android的SDK、NDK曾經出現找不到的狀況,所以我裝了Android Studio,把Android的SDK和NDK指定,然後就可以開發Android的專案。

如果沒有指定那兩項,Android的勾勾會變成不能勾,只能開發iOS的App,這樣學Swift就好了啊。

程式的語言基本上是C#,所以檔案的副檔名幾乎都是.cs,C#對微軟體系的開發者來說是再友善不過了。

為什麼我會想學Xamarin?雖然Xamarin的中文資源相當少,它的Coder也不多,但我看中它節省程式碼的部分,和只要一個語言就可以開發Windows、Web、App的好處。

再加上它的背後有微軟這個大公司在當推手,比起一些平台沒有太多的資金援助,來自官方的資源相對的會多一些。

這我在開發ASP.NET的時候就有所感觸了,因為微軟強力扶植相關的第三方控制項企業,導致開發起來要做到複雜度很高的東西相對的輕鬆很多。

我C#本身大概接觸10年,對我來說已經算程式設計母語,這也是原因之一。當然為了App換語言是沒問題,但為了iOS和Android分別去學兩個原生語言相當的花費時間。

當然用JavaScript開發App也是一個解決方案,但這就是個人抉擇,我上網去國外討論區爬文了半天,看到一堆筆戰但都打的是無關緊要的部分,簡單來說只是個人習慣和自己的抉擇而已。

有人喜歡吃牛排,有人喜歡吃魚排,沒辦法說哪個好吃也沒辦法說哪個比較正確。既然沒辦法說優劣,那我當然先從我需要改變最少的下手。

再者,程式設計中的商業邏輯,或所謂的演算法,在Xamarin只需要用C#寫一次就行了。所以編寫輕鬆、Debug輕鬆、事後維護輕鬆。

而且我前陣子體驗了Azure的方便性後,Xamarin和Azure的整合可以說是相當強,雖然這種整合模式需要的成本較高,但不論在開發時間、維護成本上面來說,這種整合方案是相當划算。

Xamarin有一個線上University,我正在考慮是否要參加,還是等我看完Microsoft Press出的一本很厚的基礎概念書以後再參加,因為那個線上學院的是全英文聽說,並非讀寫。

若沒有一些基礎知識,在聽說上,恐怕能理解的部分會相當少,我註冊了試用帳號去聽了幾個自學課程,老實說只能聽懂6~7成,因為英文講得實在太快了。

不過我是有想要拿Xamarin的證照,參加那個可以免費參加證照考試(好像),然後有疑難雜症的話一個月有30分鐘的Office Hour(有點少)。

Microsoft Azure初體驗

最近我的進度先是研究Xamarin.Form寫跨平台的手機App,同時進行Microsoft Azure的研究。

為什麼要研究Azure呢?其實只是因為一個客戶的虛擬主機出問題,偏偏Windows的虛擬主機服務都很爛,我們公司也不想當主機託管公司承擔可能斷電或斷網造成客戶損失的風險。

之前我寫的是ASP.NET in C#,需要的是一個IIS,也就是一台Windows的Server。我從昨天晚上十一點開始到現在未曾闔眼在研究如何在Azure達成這個目標。

架IIS的話Azure的虛擬機器就可以做到了,技術文件有寫得很清楚,連PowerShell的Code都列出來。比較麻煩的是虛擬機器要設定成靜態IP並且用Azure DNS把網域指定到那個IP位址。

因為網域改Domain Name Server的時候需要等很久,所以我就邊改邊整理我一顆外接硬碟將近3TB的動畫,把它們分類電視畫質的、藍光畫質的,就這樣耗掉一個晚上。

用了一陣子以後發現,Microsoft Azure雖然有很深奧的地方,但入門並不難,我一個晚上邊整理動畫邊架設虛擬機器就架好了一個自訂域名的IIS Server,但麻煩的才要開始。

我把我寫的程式放上去,發現竟然在Azure上也連不了客戶的SQL Server。但是我在公司的主機架設的臨時用伺服器是可以連到的。

虛擬主機出問題的前幾天是做了例行性的維護也就是Windows Update,所以根據我的分析,也許是Windows Update導致客戶的SQL Server變成找不到了。

因為同樣的程式在同樣的主機沒事的跑了三年,要說有變動一定就是Windows Update。畢竟客戶用的是SQL Server 2008,主機也用的是Windows 2008 Server,有點舊。

微軟最喜歡用這種爛招導致舊版本不相容逼人換新版了,我甚直在懷疑微軟哪天會不會自斷生路把32-bits的程式變成不相容。

所以現在第一個應對措施就是讓客戶的MIS把SQL的Service Packs和Windows Updates全部補上去,我猜解決的機率不到一半。

我在Azure的主機上用SqlConnection的Open來測試是否連結的成功,用一個手邊有資料的客戶和我們公司的主機,都是成功的,兩個環境都是Windows 2012 R2配SQL Server 2014。

也許更新不成就要建議客戶換作業系統與SQL版本了。

 

Azure試用有6300NTD的Credit可以花,但我今天只花了好像9元的Credit而已吧!如果有空我可能會寫些圖文教學因為我發現網路上查相關資源少的可憐。查到也都是過時的圖片或文字。

我今天試著建立Web App、虛擬機器、Azure DNS,還有一堆附帶的東西。總之Azure很像一個拼裝工廠,把雲端的需求送出,然後一個一個連結起來,然後就拼湊成一個成品。

雖然現在推出已經有些時間了,但我想試圖的去了解一下Azure所有的雲端功能,如果我還沒有老到學不了的話。