【StickyGISNotes全球地图即时贴】用Windows Azure和Virtual Earth打造的毕业小设计和消遣工具

毕业论文的主题是云计算,为此最近这段时间看了无数相关理论文献和观点。上个礼拜结了题,但是自己偷懒了一把,本来是计划用 Azure写个小Sample的,后来想想论文字数到了就算了。

结果答辩前两天,导师说这样你的毕业论文很不饱满,创新什么的都没有,索然无味,还是把本来设想的程序给加进去吧!想想也是,毕竟有个亮点,娱乐娱乐答辩老师也好。

然后便连夜装好开发环境,找Sample, 看教程,因为本来就是想写个小应用,代码写起来很快。因为几个月前就拿到了Azure的测试邀请,写好就能直接往云端部署了。

这里插一句,不知是Azure服务端的原因还是我们这互联网出口的原因(G F W…),有些时候网站会打不开,大家要是也碰到点不开的情况请告之。众所周知GAE有不和谐的FQ应用,照理说Azure也能,不知道到时候这些会被和谐伐…

废话不多,放上围观地址:http://betageek.cloudapp.net

 

应用名称:全球地图即时贴(StickyGISNotes

功能介绍:本应用全部组件均部署于微软Azure服务平台。通过微软Virtual Earth Control地理信息控件,展现给访问者全球地图界面的同时,允许用户在任何一个经纬坐标点输入自己的留言,像即时贴一样贴在地球的任何一个角落。

 

Windows Azure Storage Table负责持久化工作,每一个标签的实体信息都存于其中。

地图控件自然是微软的Virtual Earth,通过JS和对地图进行控制和通讯。

image

放个截图。乍一看很乱,为什么呢,因为程序写好未免会有IB之嫌,于是向我亲爱的同学们推广,却不知反响不错,留言无数,更有甚者在太平洋上作画…

有兴趣的同学们可以打开此应用的地址自行观看。亮点在南极洲,北冰洋,南美,太平洋,和非洲…群众的创造力啊。

值得肯定的是有两贴分别在四川和钓鱼岛,留言很让人感动。

 

由于社区里关于Azure的介绍和入门文章很多,这里就不做Step by Step的介绍和截图了,未免浪费资源。

至于项目源代码,Map Control的JS可以直接看到,后台里关于Storage Table的操作,有其他牛人的文章都有介绍。因为具体代码是贴到毕业论文里的,不清楚随便发上来会有什么问题,就不发了,而且其实是没什么花头的。

附上两个参考链接:http://blogs.msdn.com/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx

http://www.cnblogs.com/azure/archive/2009/03/16/1413728.html(流牛木马兄算是院子里发Azure文章最多的了,赞一个,教程很详细,我就不班门弄斧了)

 

 

Azure本身以及其SDK现在还是属于测试阶段,本人开发过程中就因为一个很傻的问题调试了很长时间。

/// <summary>
/// 即时贴数据环境实体。
/// </summary>
public class StickyGISNoteDataContext : TableStorageDataServiceContext
{
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="info">Storage账户信息</param>
    public StickyGISNoteDataContext(StorageAccountInfo info)
        : base(info)
    { }

    /// <summary>
    /// 获取所有的即时贴数据实体
    /// </summary>
    public IQueryable<StickyGISNoteModel> StickyGISNoteModel  //问题出在这里,见下文
    {
        get
        {
            return this.CreateQuery<StickyGISNoteModel>("StickyGISNoteModel");
        }
    }

}

问题出在,由于习惯了Linq To SQL中对Table实体集的英文复数命名方式,这里的public IQueryable<StickyGISNoteModel> StickyGISNoteModel我一开始命名为StickyGISNoteModels,而CreateQuery后的泛型参数和函数参数自然是用单数实体名字。但是正因如此,程序运行之后非常荒谬地报了DataServiceClientException…

我个人认为这是一个Azure Development Table database generation tool的Bug。竟然DataContext的实体集属性会和实体名字本身发生这样的耦合。

还有就是开发过程中,Debug,Build,Create Test Storage Tables等操作会无故报错,不进行任何改动重新操作一遍就会又恢复正常,挺无语的。

 

欢迎拍砖和交流:)

posted @ 2009-05-16 21:28 BetaGeek™ 阅读(...) 评论(...) 编辑 收藏