MapPoint 2011 COM可扩展?

时间:2011-11-07 14:39:20

标签: c# com map scalability mappoint

我的任务是编写一个可以从我们的两个工厂位置调用的Web服务,这将使我们的运输部门能够获得最有效的一系列交付路线。我们还讨论了为司机设置地区和分配地区和地区的可能性。

我的问题,最简单的形式是:MapPoint 2011允许您通过COM使用其对象模型。我对这种类型的编程并不十分熟悉,但它似乎每次调用逻辑时都会创建一个新的应用程序实例。这种用法是否可扩展?如果同时收到10个电话会怎么样?

我已经从下面的MSDN中提取了一些示例代码作为参考点。

//set up application
MapPoint.Application objApp = new Application();
objApp.Visible = false;
objApp.UserControl = false;

MapPoint.Route objRoute;
MapPoint.Map objMap;

objMap = objApp.ActiveMap;
objRoute = objMap.ActiveRoute;

objMap.Parent.PaneState = MapPoint.GeoPaneState.geoPaneRoutePlanner;

//Get locations for route
object item = 1;
objRoute.Waypoints.Add(objMap.FindResults("Redmond, WA").get_Item(ref item), 
    "Redmond, WA");
objRoute.Waypoints.Add(objMap.FindResults("Seattle, WA").get_Item(ref item), 
    "Seattle, WA");
objRoute.Waypoints.Add(objMap.FindResults("Portland, OR").get_Item(ref item), 
    "Portland, OR");

// Calculate the route
objRoute.Calculate();

//Asks if you want to save the map? How would you say no programmatically?
objApp.Quit();

3 个答案:

答案 0 :(得分:2)

不,它不可扩展,而且它是非常坏主意。在服务器环境中运行任何严重依赖桌面会话(例如MapPoint 2011)的程序会出现问题,主要是因为桌面会话不可用。

此外,诸如此类的桌面应用程序不是为服务器环境开发的,因此它们消耗的资源与您预期的不同(通常更积极)。

在您的情况下,如果您同时收到10个电话,那么您将在服务器上运行10个应用程序实例(然后关闭,但仍然)。对于这种类型的应用,这通常是不可扩展的。

MapPoint 2011与Office属于同一类别,因为它不应在服务器环境中运行,如Microsoft's own recommendation所示。

答案 1 :(得分:0)

@casperOne是对的,这是一个坏主意。你说的是1-2个地点,所以这里有另外两种方法:

首先,为什么不在4-5台机器上本地安装和运行MapPoint听起来像你正在使用?在本地进行路由。

其次,MapPoint有一个ActiveX控件。这可以嵌入到Web应用程序中,但您必须在每台客户端PC上拥有许可的MapPoint应用程序。

否则我认为您正在寻找在线服务。 Bing Maps也很不错;如果他们的数据质量在您的运营领域足够,那么总会有OpenStreetMaps。

答案 2 :(得分:0)

  

如果你想保存地图?

     

你怎么能以编程方式说?

 objApp.ActiveMap.saved = true