軟體工程結對程式設計:IP GeoLocation Module for Academic Map

來源:互聯網
上載者:User

 

概述

這篇報告是對一個結對程式設計項目的總結。我(林萌)和李亞韜同學共同完成了這個項目。

項目的目標是在使用者訪問Academic Map的時候通過使用者的IP來獲得使用者的地理位置資訊,以重新置放地圖,將使用者所在的地點設為當前顯示的中心。這個功能在許多網路地圖上都有,比如Bing Map,Google Map等等。經過長時間的調研我們最終找到了兩種解決辦法。

Method 1

使用W3C Geolocation API, 這個API是由World Wide Web Consortium (W3C)提供的一個標準介面,用於獲得使用者的地理位置資訊(geographical location information)。這個API被廣泛的接受,Firefox從version 3.5版開始支援, Google Chrome, Opera 10.6, Internet Explorer 9.0, and Safari 5也都支援這個API。而且他的使用相對簡單,只需要嵌入一段JavaScript就行了。

WBS Construction

 

Method 2

使用免費的IP-Location資料庫。並不是所有的瀏覽器都支援W3C GeoLocation API, 所以我們希望再增加一套備用方案,當Method 1失敗的時候自動啟用。我們從MaxMind網站上找到了這麼一個免費的IP-Location資料庫,實驗結果表面資料庫精度也還可以,但與W3C的比起來還是有一定差距的。

WBS Construction

Method2 所需要的組件與1基本相同,我們用一個自己寫的WCF Service來代替W3C Geolocation API,Silverlight的部分基本可以複用。

CostMethod 1

這個方法最大的困難在於整合JavaScript 和 Silverlight, Cost列表如下:

  Estimate Actual
JavaScript 0.5 hour of Search

Just wiki page is OK

It took 10 minutes to rewrite something similar to the wiki example.

Silverlight

0.5 hour to understand how to work with JS

1 hour for the Buttons and Map

1 hour about using JS, mysterious bugs

1 hour about Buttons and Map, even a Storyboard showing a fading message when failure.

Method 2

這個方法的困難在於快速尋找IP-Location表格,Cost列表如下:

  Estimate Actual
IP GeoLocation Service

1 hour to learn how to use service

1 hour to prepare database

1 hour to implement a fast algorithm for database lookup

Fast, WCF service is easy to learn

Half a hour for a binary search in database

Silverlight

0.5 hour to re-use buttons and map controller of Method 1

0.5 hour Failure handler and access to server

nearly all reuse,fast
 總的來看,最大的時間開銷還是在調研上面,我們花了接近兩天的時間來找一個合法的,穩定的,快速的解決方案。

 

結果

從以下幾個方面來分析結果:

1.穩定性

程式運行穩定,明確的處理了異常情況。

2.準確性

W3C Geolocation API的準確性無需質疑。免費的IP-Location資料庫準確性難以估計,官方的claim是有97%的準確性。

3.可維護性

對於W3C的介面,代碼一旦完成就不需要維護了,資料有遠端服務提供。

免費的IP-Location資料庫是靜態,需要更新。

4.效率

W3C標準介面飛快無比,一旦失效將啟動待用資料庫方案。我們使用的Binary Search可以保證時間和空間消耗的平衡。

運行(中間五角星的就是使用者的座標,公司的IP出口在Redmond附近)

工作

我對結對程式設計的看法:

有利有弊。兩個人同時工作提高了我們克服困難的勇氣。開始的時候苦於找不到合適的IP服務,非常糾結。但後來喝喝茶,扯扯淡突然一下子也就解決了。技術上的困難花點時間都可以解決。不好的地方在於兩個人都要擠出時間來,而且中間最好不要插入個人的工作。有個地方亞濤自己加入了代碼,我當時不在,結果後來我Merge代碼的時候出了些問題,多花了不少時間。

 

About my partner

工作上的好幫手,和我一起工作到深夜一兩點鐘,工作刻苦。沒什麼需要改進的了啊少年。

 

Thanks,

By 林萌

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.