Этот метод является просто математической функцией, поэтому нет необходимости размещать его в службе WCF.Все, что вызывает этот сервис, должно иметь собственную локальную версию этого метода.Это минимизирует запросы на обслуживание, устраняя их, и это будет безумно быстрее.
Из дополнительных подробностей звучит так, как будто вы также выполняете запрос, который возвращает количество точек, и из этих точек вы хотите найти пять, которые находятся ближе всего к заданному местоположению.
Кэширование помогает, только если вы делаете одни и те же запросы с определенной частотой.Вполне возможно, что первый запрос, который возвращает набор точек, может повториться, поэтому может иметь смысл кэшировать набор точек для данного запроса.
Но если только местоположение, которое вы сравниваетек этим пунктам также часто повторяют, добавляя, что это может испортить ваше кэширование.
Например, это может извлечь выгоду из кэширования ...
Points[] GetPointsUsingSomeQuery(queryInput)
...if queryInput
повторяется снова и снова.
Но если вы измените его на это ...
Points[] GetPointsClosestToSomeLocation(queryInput, Point location)
... тогда любое преимущество кэширования пропадет, если location
не часто повторяется.Вы бы просто кэшировали кучу данных и никогда не использовали бы их, потому что никогда не выполняете один и тот же запрос дважды.
Вот почему кеширование, вероятно, не поможет с вашей исходной функцией.Если вы не собираетесь повторять точные комбинации снова и снова, вы никогда не найдете нужный результат в кеше.Даже если это повторяется время от времени, это, вероятно, того не стоит.Вы по-прежнему выполняете много запросов и также сохраняете много данных, которые вы не используете, в кеше.
Лучше всего преодолеть любое ограничение, которое говорит, что вы не можете выполнить это математическоефункционировать локально.