MapPoint 2011 COM масштабируемый? - PullRequest
1 голос
/ 07 ноября 2011

Мне было поручено написать веб-сервис, который можно вызвать из одного из двух наших заводов, что позволит нашему отделу отгрузки найти наиболее эффективный маршрут для набора поставок.Мы также обсудили возможность настройки территорий и назначения доставки по территориям и территориям водителям.

В простейшей форме мой вопрос заключается в следующем: 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();

Ответы [ 3 ]

2 голосов
/ 07 ноября 2011

Нет, это не масштабируется, и это очень плохая идея. Запуск любой программы, которая в значительной степени зависит от сеанса рабочего стола (например, MapPoint 2011) в серверной среде, имеет проблемы, в основном из-за того, что сеанс рабочего стола недоступен.

Кроме того, такие настольные приложения не предназначены для серверных сред, поэтому они потребляют ресурсы по-разному (и, как правило, более агрессивно), чем вы могли бы ожидать.

В вашем случае, если вы получите десять звонков одновременно, тогда у вас будет десять экземпляров приложения, запущенного на вашем сервере (и затем выключенного, но все же). Это обычно не масштабируется для приложений этого типа.

MapPoint 2011 относится к той же категории, что и Office, поскольку его не следует запускать в серверной среде в соответствии с собственной рекомендацией Microsoft .

0 голосов
/ 17 марта 2012

Если вы хотите сохранить карту?

Как бы вы сказали «нет» программно?

 objApp.ActiveMap.saved = true
0 голосов
/ 08 ноября 2011

@ casperOne прав, что это плохая идея.Вы говорите о 1-2 местах, поэтому здесь есть два других подхода:

Во-первых, почему бы не установить и не запустить MapPoint локально на 4-5 компьютерах, которые, как вы думаете, используются?Выполните маршрутизацию локально.

Во-вторых, MapPoint имеет элемент управления ActiveX.Это может быть встроено в веб-приложение, НО у вас должны быть лицензионные приложения MapPoint на каждом клиентском ПК.

В противном случае, я думаю, вы смотрите на онлайн-сервис.Bing Maps тоже довольно хорош;и всегда есть OpenStreetMaps, если их качество данных достаточно в вашей области деятельности.

...