在這30天,我將向大家介紹如何使用Asp.Net MVC來打造一個簡單的Api,並在以下會簡單的說明在開發Api時所使用的技術和環境,以及為什麼會這樣選擇的理由。
※為什麼我們需要Api?
隨著現在網頁前端技術越來越豐富,使用者所操作的介面不再只是眼前的那個螢幕,小到隨身的手機、平板,大到客廳內的電視、機上盒,更甚至是Google glass等等在以往無法想像的東西上面。而透過Api可以讓我們透過C/S架構,來讓核心功能集中,降低開發及維護成本。
在今天,相對於載具的豐富性越來越多,程式開發人員所需要面對的開發挑戰也就越來越多,在以往可能我們只需要會一種Desktop Application的技術就可以滿足大家,現在除了要求要有Web的操作介面之外,也有越來越多希望可以能在手機上也能方便的操作的需求,而當我們的客戶端操作介面越來越多時,若是我們將所有的商業邏輯,或是各種計算方法都在各個Client端上實作,其實會造成很大的負擔,而且一但商業邏輯需要修改時,就必須同時修改所有的客戶端,還有可能會有版本同步的問題。
比起各自獨立用不同語言實作在各個客戶端程式,若能透過Api來存取資料,提供一個統一控制提供資料的地方,會大大降低我們的開發以及維護成本,而將客戶端程式的邏輯簡化到只剩下UI層的邏輯,也可以讓開發速度大大的提升,更能夠快速的因應市場的變化來開發相對應的產品。
※使用Asp.Net MVC架構網頁服務
相較於Asp.Net Web Form Framework,其實我更喜歡Asp.Net Mvc Framework,它讓我們對於Html的掌控度更高,同時也具有很大的擴充性和彈性,讓我們可以在開發上省下很多工夫,透過小幅度的擴充一些Asp.Net的功能,就可以完成我們在以往需要花很大功夫才能完成的東西,除此之外我們還會搭配一些Open Source的Library,來讓我們的程式可以Follow SoC(關注點分離)的精神來開發,讓程式更具可讀性,維護和擴充起來也更加的輕鬆。
※直上雲端
最近的產品趨勢,越來越流行簡單就是美的原則,擁有著一樣主要的核心概念,再來最完美的實現它(例如: Dropbox、Instagram),你會發現它們都擁有著非常簡單容易理解的產品核心精神,也僅僅專注在如何營造最完美的使用體驗,不在乎擁有複雜多變的功能,而在於提供讓客戶在單一使用體驗上做到最完美。
而在網路十分發達的現在,除了將產品做到最完美之外,如何提供24hr全年不間斷的優質服務更是另外一個困難的課題,我想大家常常有這種使用體驗,本來習慣用某一個服務來幫助自己完成某些事情,例如收Email,但如果發現它常常斷線連不上,我想大家都沒辦法忍受多久就不想再繼續使用它了吧!在以往我們要提供24/7的服務所需要的成本是相當高的,可能需要完善的硬體設備,即時的異地備援切換等服務,甚至如果在流量暴增的時候,還要能即時的補進足夠的機器,而且這種硬體成本又是有去無回的!
幸好現在有雲端和虛擬化技術,要新增一台機器甚至可以說是彈指之間,甚至還可以自動因應流量增減機器,還可以做到單鍵部署,身在這個幸福的年代,有太多好用的服務可以讓我們專注在提供更好的使用者服務,完善我們的產品,在這系列文章中也會基於Azure的服務來做簡單的介紹。
※善用Nuget管理Library
我想大家寫程式的時候一定有這樣子的經驗,在完成時程較為急迫的專案時,可能又會迫切需要某些功能,例如檔案壓縮的功能,我們不太可能自己刻一套完整的壓縮Library (當然,自己造輪子是程式設計師的浪漫!),我們可能就會選擇使用網路上一些Open Source的Library來替自己的程式加入類似的功能,而直接使用下載參考的缺點就是維護上的困難,我們無法及時的得知所使用的Library是否有更新版本,幸好現在Visual Studio也提供了Nuget這個好用的套件管理工具,方便我們維護Library的相依性,以及可以偵測更新新版本的Librar!
※本日小結
接下來的文章,我會繼續跟大家介紹如何從頭開始打造一個我們自己的簡單Api,並透過擴充Asp.Net MVC來實現我們想要的功能,並如何讓程式碼更好維護,也歡迎大家一起討論喔 ^_^