1

私は、2 つの工場のいずれかから呼び出すことができる 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();
4

3 に答える 3

2

いいえ、スケーラブルではなく、非常に悪い考えです。デスクトップ セッションに大きく依存するプログラム (MapPoint 2011 など) をサーバー環境で実行すると、主にデスクトップ セッションが利用できないため、問題が発生します。

さらに、このようなデスクトップ アプリケーションはサーバー環境向けに開発されていないため、予想とは異なる方法で (通常はより積極的に) リソースを消費します。

あなたの場合、同時に 10 件の呼び出しを受信すると、アプリケーションの 10 個のインスタンスがサーバー上で実行されます (その後シャットダウンしますが、それでもなお)。これは一般に、このタイプのアプリケーションには拡張できません。

MapPoint 2011 は、 Microsoft 独自の推奨に従って、サーバー環境で実行すべきではないという点で、Office と同じカテゴリに分類されます。

于 2011-11-07T14:49:17.170 に答える
0

マップを保存したい場合は?

プログラム的にノーと言うのはどうですか?

 objApp.ActiveMap.saved = true
于 2012-03-16T21:58:32.583 に答える