
這個項目包括3個部分, – 一個AutoCAD插件來收集AutoCAD指令的使用情況上傳到雲端的服務程式, 一個駐留在Windows Azure雲端的REST服務程式來接收/發送和存儲指令統計資訊, 另外是一個web頁面中由JQuery以REST的方式從雲端服務程式擷取統計資料,并用WebGL渲染出來,這裡使用了一個比較流行的類庫Three.JS. 下面是Visual Studio的解決方案,包括5個項目。其中AcadCommandViewer是服務程式和網頁浏覽端,這是一個ASP.NET MVC應用,最後要部署到Windows Azure。另外還有個AutoCAD.net的插件程式。另外為了使資料模型能夠重用,我把它獨立出來成為一個單獨的項目。
下面看一下服務端程式的實作。說到建立Windows Azure雲端應用,你估計首先想到的就是用Windows Azure SDK的模版來建立,但是我發現這樣是調試過程中在Azure 模拟器中測試還是挺慢的。其實把一個現有的asp.net 程式移植到到Windows Azure也還是很簡單的,既然如此,那何不就從一個簡單的ASP.NET程式開始呢? 于是我就在Visual Studio中建立了一個ASP.net MVC 4 Web Application 。
首先需要定義資料模型,如果項目不大,在MVC項目的Models目錄下定義就好了,但上面我也提到了,這個資料模型我還是要在AutoCAD插件項目中重用的,是以把資料模型獨立出來成為一個單獨的項目。很簡單就是添加一個class library項目,加入一個資料模型的類即可:
資料模型建好了,然後可以建立控制器了。Visual Studio提供了很好的模版,我使用Web API + Entity framework,這個模版其實已經幫我做了大部分的工作。在Controllers目錄上點右鍵,添加--控制器,選擇“API controller with read/write actions, using Entity Framework“模版,并選擇上面建立的資料模型類,
然後選擇“<New data context>”讓Visual Studio來幫我們自動建立資料上下文類。如果你在上面的模型類清單中找不到你的資料模型類,那是因為你沒添加引用,因為我的資料模型已經獨立到另外一個項目中了,很簡單,添加引用即可:
Visual Studio自動生成的控制器代碼已經相當不錯了,通過Web API實作了REST服務的GET, POST ,PUT 和DELETE方法,不過在PUT方法更新時有一點問題,就是我們上面的資料模型定義中是有父子關系的,預設的代碼Entity Framework不能處理這個父子關系的模型,需要稍微改一點。解決辦法就是把舊記錄的子對象都删除,然後在加入新對象的子對象,具體可以看一下下面的代碼及注釋。
上面Visual Studio已經自動幫我們建立了資料上下文類,預設是使用SQL Express,你可以看的Web.config裡面的連接配接字元串,稍後我們可以更新到SQL Azure雲端資料庫。
、Please note that the context class is using SQL Express, it is easy to migrate to SQL Azure latter:
然後為了測試,需要弄點測試資料,在Models目錄下添加一個SampleData.cs類來代碼生成一點測試資料,如果要做單元測試的話也比較友善。
然後需要把這些測試資料生成到資料庫中,Visual Studio中的Package Manager Console 很友善。從Tools—> Library Package Manager,打開Package Manager Console ,輸入指令:
PM> Enable-Migrations
Visual Studio項目中會添加一個Migrations的目錄和一個Configuration.cs的類,可以在這個類的Seed方法中來生成初始資料,代碼如下:
然後在package Manager Console 中運作Update-Database指令在資料庫中生成資料:
PM> Update-Database
下來回繼續接受浏覽器端WebGL部分的實作。敬請關注。
轉載請保留此資訊。
本文轉自峻祁連. Moving to Cloud/Mobile部落格園部落格,原文連結:http://www.cnblogs.com/junqilian/archive/2013/03/12/2955316.html,如需轉載請自行聯系原作者