Вам не очень понятно, кто является партнером; или защищаете ли вы доступ к данным, ограничиваете вызовы API или и то, и другое.
То, что вы делаете, вероятно, будет очень специфичным для вашего бизнеса. Предполагая, что вам необходимо защитить данные, к которым сервисы предоставляют доступ, вы должны аутентифицировать каждого пользователя и защитить транспортный уровень. Для первого вам нужно иметь имя пользователя и пароль или уникальный токен API для конечных пользователей. Это следует проверять при каждом запросе. Безопасность транспорта можно включить с помощью SSL, если вы используете HTTP для своих сервисов. Обычно это проще всего сделать на уровне веб-сервера, не говоря уже о том, что вы делаете какой-либо специальный хостинг веб-сервисов.
Предполагая, что эта защита установлена, она должна обеспечить основу для аудита, что, как я полагаю, вы подразумеваете под журнальными вызовами. Имя пользователя или API-токен даст вам представление о том, кто делает вызов, что является основополагающим для аудита. Затем создайте список данных, которые вы хотели бы видеть в журнале аудита. Спросите бизнес-пользователя, может ли записанная информация помочь ответить на ваши вопросы (что побуждает вас добавлять протоколирование).
Следующее, что нужно рассмотреть, это то, куда должен идти код ведения журнала (есть ли центральная точка? Используете ли вы AOP для его добавления?), И куда следует вести журнал аудита. Существуют такие инструменты, как PostSharp , которые позволяют вам без труда вносить изменения в журналы своего приложения, но перед тем, как сделать это, посмотрите, есть ли простой способ добавить функцию журнала в общее место в вашем приложении для ' поймать нужную информацию.
Как только вы получите данные, вам нужно их где-то сохранить. Здесь вещи могут стать интересными. Вам нужно будет понять характеристики производительности вашего приложения и возможные схемы использования. Во многих приложениях можно просто войти в базу данных, но иногда это будет проблемой производительности. Вход в текстовые файлы для некоторых нормален, но что, если данные должны быть связаны с вашей пользовательской базой данных? В этом случае вам понадобится некоторый код для обработки файлов журнала и импорта данных.
Прежде чем тратить слишком много времени на создание кода регистрации, стоит взглянуть на NLog , Log4Net и блок ведения журнала Enterprise Library . Это инструменты общего назначения, которые могут обеспечить лучшую основу.
Если вам нужно ввести квоты для пользователей, вы можете подумать о том, как быстро ваш журнал может быть обработан, чтобы определить, сколько звонков сделал пользователь. В идеале каждый раз, когда вы обрабатываете входящий запрос, у вас будет текущий статус пользователя, чтобы иметь возможность вернуть соответствующий ответ. Это может быть попытка добавить эту функциональность в существующие приложения и предоставить «инфраструктуру» для ее поддержки.
Использование REST, JSON, XML, SOAP и т. Д. Действительно зависит от вашей аудитории. Будут ли они использовать такие языки, как Ruby и Python для вызова ваших сервисов, или они будут использовать .NET? Если они собираются быть в основном пользователями .NET, то, возможно, не имеет смысла создавать чисто REST-интерфейсы с использованием JSON, поскольку .NET делает SOAP очень простым. На другом конце шкалы SOAP и XML - отстой, если вы используете JavaScript на стороне клиента. Просто помните, что нет правильного ответа без дополнительной информации о ваших пользователях. Обычно JSON не является панацеей, а XML не всегда является худшим вариантом.
Обновление
Я не заинтересован в обследовании наших
партнеры для каких форматов / протоколов
они бы предпочли, так как один из
Требования это возможность добавлять новые
партнеры без участия ИТ. Я бы
так же, как несколько советов о лучших практиках,
так что мы делаем это "правильным" способом
и они могут соответствовать.
Наиболее гибким вариантом, вероятно, будут REST и XML. Это наиболее широко поддерживается, поскольку почти все платформы имеют стек HTTP. XML, возможно, более гибок, чем JSON, для представления ваших данных. Я хотел бы начать здесь и работать с точки зрения поддержки, возможно, добавив JSON. Однако это не то, что я бы назвал подходом, ориентированным на клиента. Если это основная функция платформы, вы должны по-настоящему заинтересоваться тем, что хотят ваши клиенты. Эй, даже если вы сделаете быстрый опрос по крайней мере сегодня, у вас будет более разумная отправная точка. Если вы знакомы с разработчиками в партнерах, вы можете догадаться, что они предпочли бы из инструментов и языков, которые они используют (даже если взглянуть на их объявления о работе, вы сможете понять, являются ли они .NET или Java магазин - далеко от научного подхода, хотя).