【问题标题】:MapPoint 2011 COM Scalable?MapPoint 2011 COM 可扩展?
【发布时间】:2011-12-23 16:33:29
【问题描述】:

我的任务是编写一个 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();

【问题讨论】:

  • 使用给定的代码,您将启动 10 个 MapPoint 实例。是的,这不会很好地扩展。您可以自己序列化查询以减轻这种打击,减慢服务速度,但至少不会使机器翻倒。 Microsoft 通常不建议在服务器场景中使用其桌面应用程序。

标签: c# com map scalability mappoint


【解决方案1】:

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

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

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

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

【讨论】:

  • 我以为是这样,但我希望不是这样。很难在 C# 中找到一个可以完成我们需要做的所有事情的编程解决方案。
  • @JamesHill:我不知道是这种情况,我认为您可能问错了问题。相反,您应该询问有哪些服务器解决方案可以满足您的需求。在您的示例中,您似乎希望找到给定航点的路线。也就是说,Google Directions API正是做到这一点(参见"Using Waypoints in Routes"。找到您需要的其他功能应该不难。
  • 我应该澄清一下。在我们的预算范围内找到解决方案是困难的。例如,企业在 Intranet 上使用 Google Maps API 的起价为 17,500 美元。
  • @JamesHill:只是好奇,你会比2,500 requests per day with more than 10 waypoints per request赚更多吗?
  • 不,我们不会失败。我们在这里失败了:Internal deployments 和这里 Embedding in software and applications for fee
【解决方案2】:

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

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

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

否则我认为您正在寻找在线服务。必应地图也不错;如果数据质量在您的运营范围内足够,则总会有 OpenStreetMaps。

【讨论】:

    【解决方案3】:

    如果你想保存地图?

    您如何以编程方式拒绝?

     objApp.ActiveMap.saved = true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 2010-12-24
      • 2010-10-30
      • 2012-04-16
      • 2020-03-10
      • 2013-04-02
      相关资源
      最近更新 更多