Один ряд за посещение звучит нормально. Вы также можете сохранить дату / время для каждого посещения, чтобы иметь лучшую историю. Пока вы индексируете столбец id в таблице посещений, все будет быстро, если вы сделаете что-то вроде этого:
SELECT COUNT(*) FROM Visits WHERE MemberID = '1'
MySQL может обрабатывать миллионы строк. Наша текущая система хранит сотни записей на пользователя в день, и у нас есть сотни тысяч пользователей. Вы всегда можете снять старые записи, если хотите.
Вы также можете использовать разбиение таблиц и разделение по годам, клубам и т. Д.
Существует два сценария, которые необходимо защитить с веб-сервисами:
Часть аутентификации уже заботится о том, если Вы используете Аутентификацию Форм. Если Ваш веб-сервис будет находиться в Формы Защищенная от аутентификации область сайта, то никто не сможет получить доступ к Вашим веб-сервисам, если они не будут зарегистрированы.
Второй сценарий является немного более хитрой историей. Нападение известно как CSRF или XSRF (Перекрестная Подделка Запроса Сайта). Это означает, что злонамеренный веб-сайт выполняет действия от имени Вашего пользователя, в то время как они все еще зарегистрированы на Ваш сайт. Вот большая рецензия на XSRF.
Вид Jeff Atwood подводит итог всего этого в ссылке выше, но здесь является защитой XSRF на четырех шагах:
В Ajax браузер выполняет вызовы, поэтому даже если необходимо было проверить, что домен является тем же, это не было бы достаточно безопасно, потому что это может легко фальсифицироваться.
Необходимо использовать своего рода authetication/autharization маркеры (предпочтительно со временем) для защиты вещей.
Быстрое и грязное решение состояло бы в том, чтобы использовать ограничения IP-адреса для разрешения только доступа IP-адреса домена через IIS.
Вероятно, лучше использовал бы Аутентификацию HTTP. Существует много способов сделать это, я нашел Аутентификацию в веб-сервисах ASP.NET полезным обзором.