MapPoint 2011 COM Scalable?

本文关键字:Scalable COM 2011 MapPoint | 更新日期: 2023-09-27 18:13:56

我的任务是编写一个web服务,可以从我们两个工厂中的一个调用,这将允许我们的运输部门获得最有效的交付路线。我们还讨论了建立区域并将交付分配给区域和将区域分配给司机的可能性。

我的问题,最简单的形式是:MapPoint 2011允许你通过COM使用它的对象模型。我对这种类型的编程不是很熟悉,但每次调用逻辑时,它似乎都会创建一个应用程序的新实例。这种类型的使用是可伸缩的吗?如果同时接到十个电话会发生什么?

我从下面的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();

MapPoint 2011 COM Scalable?

不,这是不可伸缩的,这是一个非常坏主意。在服务器环境中运行任何严重依赖桌面会话的程序(比如MapPoint 2011)都会出现问题,主要是因为桌面会话不可用。

此外,像这样的桌面应用程序不是为服务器环境开发的,因此它们消耗的资源与您可能期望的不同(而且通常更积极)。

在您的例子中,如果您同时收到十个调用,那么您将有十个应用程序实例在您的服务器上运行(然后关闭,但仍然)。对于这种类型的应用程序,这通常是不可伸缩的。

MapPoint 2011与Office属于同一类别,因为按照微软自己的建议,它不应该在服务器环境中运行。

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

首先,为什么不在你正在使用的4-5台机器上安装和运行MapPoint呢?本地路由

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

否则,我想你是在看在线服务。必应地图也很不错;如果OpenStreetMaps的数据质量在你的业务领域是足够的,你也可以使用它们。

如果你想保存地图?

如何在程序上说no ?

 objApp.ActiveMap.saved = true