こんにちは、Zeroc Ice 通信ライブラリ (v3.4.2) を使用して C# クライアント/サーバー アプリケーションを作成しました。
サーバーから一連のオブジェクトを転送し、それらをクライアントに表形式で表示しています。十分に単純です。
次のスライスタイプを定義しました
enum DrawType { All, Instant, Raffle };
struct TicketSoldSummary {
int scheduleId;
DrawType dType;
string drawName;
long startDate;
long endDate;
string winningNumbers;
int numTicket;
string status;
};
sequence<TicketSoldSummary> TicketSoldSummaryList;
interface IReportManager {
[..]
TicketSoldSummaryList getTicketSoldSummary(long startTime, long endTime);
};
このメソッドを呼び出すと、通常は問題なく動作しますが、(約 25% の確率で) 呼び出し元が Ice::MemoryLimitException を受け取ることがあります。通常、一度に 2 ~ 3 のクライアントを実行しています。
インターネットで答えを探したところ、Ice.MessageSizeMax を増やすように言われたので、それを実行しました。MessageSizeMax を 2,000,000 Kb まで増やしましたが、違いはありませんでした。31,000 レコード (約 1.8 メガバイトのデータ) でテストを行ったところ、それでも Ice.MemoryLimitException が発生しました。1.8 メガはそれほど大きくありません。
私は何か間違ったことをしていますか、それとも Zeroc Ice にバグがありますか?
助けを提供できる人に感謝します。