AutoCAD 命令统计魔幻球的实现过程--(3)
前面的文章(第一,第二)我已经创建的了一个RESTful的服务程序,并且用JQuery从服务器端获取数据然后用ThreeJs完成了魔幻球的渲染。不过这个程序还是运行在本地机器上,数据保存在本地SQL Express,就是一个普通的ASP.net应用,和云计算还扯不上半毛钱的关系。这篇文章将要把这个应用搬到Windows Azure云端去。
本文连接 :http://www.cnblogs.com/junqilian/archive/2013/03/19/2969443.html
其实这个过程也不复杂,Windows Azure SDK可以让这个过程很简单。移植一个ASP.net应用程序到云端,如果你用到了Session,那么会稍微复杂一点。毕竟云端不再是一台而是很多台服务器。如果原先使用的是in-proc的方式保存session,移植到云端的时候就会有问题了,您可以考虑把session等状态信息保存在Azure存储或者SQL Azure数据库,或者使用App Fabric等。不过对于我这个例子就简单了,我的这个服务只是提供无状态的REST服务,所以不用考虑状态保存的问题。
首先在解决方案中添加一个工程,选择“Windows Azure Cloud Service”模版:
然后下一个页面是添加Web Role,在这里什么都不要添加,因为后续要把我现有的ASP.net应用程序作为我的Web Role,直接按OK按钮:
然后该添加Web Role了,在Roles目录上点右键选择Add –> Web Role Project in solution,选择我现在的ASP.net MVC应用程序,把这个所为Web Role:
你可以编辑一个这个Web Role的相关属性,比如服务器实例的个数等等,默认是1个。生产环境中至少要用2两个。这里我就不改了。好了,就这么简单,你已经完成到云端的移植了!不过现在还是运行在你本地的云端模拟环境中,你可以按F5在云端模拟器里运行一下,看看有没有什么问题,没有问题的话,下面就可以发布到真正的Windows Azure云环境中了。
在开始之前我们先看看数据的情况,现在我的数据是保存在本地的SQL Express里的,如果要程序程序移植到云端的话,数据肯定也要上到云才方便。最简单的就是使用SQL Azure云数据库。首先登录到Windows Azure控制台Windows Azure Management console 来创建SQL Azure. 选择 New –> Data Services –> SQL DATABASE –> CUSTOM CREATE. Windows Azure是有中文界面的,我的截图是在写英文博客时照顾到老外不懂中文才改的 :)
然后知道一个数据库的名字,如果你还没有创建过SQL database服务器的话可以创建的一个新的数据库服务器。
创建数据库服务器是需要指定登录名和密码。然后还需要知道所在Region,这里选region的时候最好选择和你将要发布的云服务在一个region,这个性能好一些,也不会有额外不必要的费用开销。region要选择靠近客户的那个,比如我预计我的客户多半在中国,那我就选择东亚。
创建好SQL 数据库后就可以开始移植数据库了。如果你在本地以及有不少数据了,那么你可以用生成脚本的方式。可以用SQL Server 2008 Management Studio连接到本地数据库生成数据库脚本(注意要选择真的SQL Azure生成脚本),然后连接到SQL Azure,在上面运行生成的脚本即可。这个过程我这里不介绍,因为我这儿都是测试数据,而且这些测试数据都是在初始化时代码生成的。我可以直接把连接字符改到SQL Azure来完成这个过程。不过在此之前需要在Azure 控制台设置一下防火墙,运行当前IP连接到该SQL 服务器。如果要用SQL Server 2008 Management Studio连接到SQL Azure肯定也是需要这个过程。这个很简单,登录到Azure控制台,选中你的数据库,就有如下界面,点一下Set up windows Azure firewall for this IP address就可以了。
然后如前面所说的,需要更改一下连接字符串连接到SQL Azure。这个连接字符串是什么呢?在上面截图中点 “View SQL Database connection strings”即可看到:
替换到web.config 里,别忘了输入密码:
<connectionStrings>
<!--<add name="AcadCommandViewerContext" connectionString="Data Source=.\SQLEXPRESS;
Initial Catalog=AcadCommandViewerContext; Integrated Security=True;
MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" />-->
<add name="AcadCommandViewerContext" connectionString="Data Source=tcp:qmhqjrmav7.database.windows.net,1433;
Initial Catalog=acadcmdviewer;User Id=<sql server user id>;Password=<input your password>;"
providerName="System.Data.SqlClient" />
</connectionStrings>
因为我使用的是Entity Framework,现在就可以安装原先的方法重新在SQL Azure中生成我的数据库和初始化数据了。进到 Package Manager Console from Tools—> Library Package Manager, 运行 Update-Database 命令,搞定。
PM> Update-Database
好了,然后可以把应用也部署到云端了。Windows azure SDK提供了很好用的工具。右键点Azure项目选publish启动发布向导:
我用的是MSDN订阅:
创建一个新的云服务,选择和前面的SQL azure一样的region:
后续按照向导走就行了,我这里都按默认就可以。然后等上一袋烟的功夫,发布过程就完成了,大功告成,你已经成功的把你的ASP.net应用程序一直到云端了!
好了,下来再讲一下魔幻球的数据来源,AutoCAD插件的创建。