Locust: 一个帮助专业人士评估公司周边环境的应用程序

在当今这个信息爆炸的时代,获取商业信息变得前所未有的重要。D&B公司作为全球领先的商业信息提供商,维护着超过2.13亿家公司的数据库。他们面临的挑战是基于Windows Azure数据市场上提供的10,000家公司的沙盒数据。开发者被邀请深入挖掘这些数据,提出混合应用或独立应用的想法(有潜力获得100美元的奖金)或完成的应用程序(有潜力获得高达15,000美元的奖金)。这场比赛的关键短语是“四处看看”,这涉及到的不仅仅是已经存在的东西,更重要的是如何填补空白。在大量的头脑风暴之后,受到了一些在美国的朋友的启发,想到了一个可以迅速实现的应用程序想法。

这个应用程序叫做Locust,它帮助专业人士决定一家公司的即时环境是否适合他们。用例图显示了Locust的主要功能需求。

为了理解这些功能的实用性,将探索一个用例和一个重要的场景,这是创建Locust的灵感来源。

用例

名称:获取公司信息、收入估计和环境因素 参与角色:搬迁用户 事件流程: 1. 用户选择他/她想要搬迁的州。 2. 系统显示该州的所有商业公司、州人口和代表该州工资支付趋势的图表。 3. 用户可以比较这个图表中的每个州的趋势和值。(例如:工资支付和州人口比较) 4. 用户决定找出更多关于特定公司的信息,并点击“显示位置”按钮。 5. 系统在谷歌地图上显示公司的地点、它所在的城市、该城市的犯罪率以及公司的主要事实。 入口条件:用户点击“GO!”按钮选择特定州 出口条件:网页关闭 异常:D&B沙盒数据不可用 包含:质量要求:系统响应时间应小于或等于3秒

美国的经济衰退和汽车工业的崩溃导致一些州的生活水平比其他州更好。正如所期望的,许多专业人士(包括那些一生中从未在他们的州外生活过的人)开始搬到其他倾向于提供轻松就业机会的州。这些人中有些人并没有真正与这些州有任何联系,他们会想知道外面有什么。让看看这个简短的场景,关于Amanda,一位有三个孩子的单身母亲,她在2008年被通用汽车底特律公司解雇。Amanda在通用汽车工作了15年,一生都住在底特律。Amanda的一个朋友向她推荐了通用汽车在亚特兰大的一个职位,她知道她在通用汽车亚特兰大获得工作的机会目前很高,但她也想要知道这个环境是否适合她的孩子,如果她不幸再次被解雇,获得类似高科技工作的机会,以及乔治亚州的就业率和收入情况。她不想频繁搬迁,因为这会为她的孩子创造一个不稳定的环境。

场景名称

Amanda需要离开底特律继续她的职业生涯 参与角色:Amanda:通用汽车裁员 事件流程: 1. Amanda启动Locust应用程序。 2. 她选择乔治亚州,并查看州人口和GDP补偿估计。 3. 她搜索乔治亚州周围一些其他汽车制造公司的名字。 4. 她查看这些公司所在城市的犯罪率和提供的信息。 5. Amanda决定是否想要搬到那个地区。

使用沙盒数据,使用ASP.NET和Javascript以及Visual Studio 2010 IDE创建了Locust。访问数据所需的一切就是创建服务引用。请查看如何创建一个灵活的查询应用程序。这非常简单,不需要太多的代码行来执行。

使用了3个数据源: 1. 经济分析局发布的各州GDP补偿估计 2. Data.gov发布的美国城市犯罪 3. D&B沙盒数据的10,000家公司。 相应的服务URI如下: https://api.datamarket.azure.com/DNB/DeveloperSandbox https://api.datamarket.azure.com/data.gov/Crimes https://api.datamarket.azure.com/BEA/GDPBYSTATESCOMPENSATION 上述服务URI按上述顺序使用以下容器访问: C++ DNBDeveloperSandboxContainer datagovCrimesContainer DNBDeveloperSandboxContainer BEAGDPBYSTATESCOMPENSATIONContainer 样本:创建的类用于检索和操作D&B如下: class FirmData { private Uri serviceURI; private DNBDeveloperSandboxContainer context; public FirmData() { serviceURI = new Uri("https://api.datamarket.azure.com/DNB/DeveloperSandbox/"); context = new DNBDeveloperSandboxContainer(serviceURI); context.IgnoreMissingProperties = true; context.IgnoreResourceNotFoundException = true; context.Credentials = new NetworkCredential("ff0e8a8a-4b58-4ae1-a172-4973941f0a62", "HIQijEqN0Wxlq//zmc0bO0mT5WLrl7xshfcOIp7I3/A"); // Your Marketplace account key } public IList GetFirmData(String s) { IEnumerable query = context.LocationLatLong.Where(company => company.StateAbbrv == s); try { return query.ToList(); } catch (Exception ex) { Console.WriteLine("Error: {0}", ex.Message); return null; } } public IList GetFirmographics(String s) { IEnumerable query = context.Firmographics.Where(company => company.DUNSNumber == s); try { return query.ToList(); } catch (Exception ex) { Console.WriteLine("Error: {0}", ex.Message); return null; } } public String ceoName(String s) { if (s != null) { StringBuilder name = new StringBuilder(s.ToLower()); name[0] = Char.ToUpper(name[0]); int pos = s.IndexOf(','); name[pos + 1] = Char.ToUpper(name[0]); while (pos >= 0) { pos = s.IndexOf(',', pos + 1); name[pos + 1] = Char.ToUpper(name[0]); } return name.ToString(); } else return "unknown"; } public String businessType(String s) { if (s == null) return "business"; else return s; } public string employeeNum(string d) { if (d == "0") return "unknown number"; else return d; } public string yearFounded(string d) { if (d == "0000") return ""; else return "was founded in " + d; } } 类代码片段主要包括用于服务器请求和数据库查询的声明,使用linq。上面的参考链接详细解释了这一点。其他方法基本上用于查询实体的字符串操作。这是用来创建其他类的相同策略。

还使用了可靠的谷歌地图API V3来显示公司位置。

一个开发人员朋友早些时候告诉,挑战的时间框架相当短,但在深入了解Windows Azure云服务的魔力之后,意识到它使开发者的生活变得轻松。 是一个移动游戏开发者,但从这场比赛中学到的是,每个有经验的开发者都可以花更少的时间来设置他/她的环境来请求服务器上的数据,而是将时间投资于创建以用户为中心的应用程序设计(即人-计算机交互方面的事项)。尽所能创建了一个独特且可移植的用户界面,以反映应用程序的真正水平。

这是应用程序的屏幕截图:

应用程序部署在Windows Azure云平台上。有关如何做到这一点的详细信息,请参见:将ASP.NET应用程序部署到Windows Azure。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485