我的任务是编写一个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();发布于 2011-11-07 22:49:17
不,它是不可伸缩的,这是一个非常糟糕的想法。在服务器环境中运行严重依赖桌面会话的任何程序(如MapPoint 2011)都会出现问题,主要是因为桌面会话不可用。
此外,像这样的桌面应用程序不是为服务器环境开发的,因此它们使用资源的方式与您预期的不同(而且通常更为激进)。
在您的示例中,如果您同时收到10个调用,那么您的服务器上将运行该应用程序的10个实例(然后关闭,但仍然如此)。对于这种类型的应用程序,这通常是不可伸缩的。
Office2011属于与Office2011相同的类别,因为根据Microsoft's own recommendation,它不应该在服务器环境中运行。
发布于 2011-11-08 20:39:01
@casperOne是对的,这是一个坏主意。你说的是1-2个地点,所以这里有另外两种方法:
首先,为什么不在你正在使用的4-5台机器上本地安装和运行MapPoint呢?在本地进行路由。
其次,MapPoint有一个ActiveX控件。这可以嵌入到web应用程序中,但您必须在每台客户端PC上都安装有许可的MapPoint应用程序。
否则,我认为您正在查看的是在线服务。Bing Maps也非常好;如果它们的数据质量在您的操作区域内足够高,那么总会有OpenStreetMaps。
发布于 2012-03-17 05:58:33
如果要保存地图,是否使用
?
你如何以编程方式说不呢?
objApp.ActiveMap.saved = truehttps://stackoverflow.com/questions/8037961
复制相似问题