Библиотека C # OAuth 2.0 - Как реализовать модель предметной области - PullRequest
0 голосов
/ 14 апреля 2011

Спецификации OAuth 2.0 становятся все более и более стабильными (http://tools.ietf.org/html/draft-ietf-oauth-v2), и я буду внедрять библиотеку C # OAuth 2.0 для внутреннего проекта. Я хотел бы услышать мнения о том, как реализовать чистую область для библиотеки. Основные моментыбеспокойство было бы:

  • Как назвать классы, должны ли каждое или большинство ключевых слов в спецификациях, описывающих конкретные концепции, быть разделены на отдельные классы?
  • Как назвать пространства имен, если каждыйОсновная тема, обсуждаемая в спецификации, должна быть выделена в отдельное пространство имен (аутентификация, сервер, клиент, безопасность и т. д.)
  • Как следует моделировать ресурсы сервера и клиента (как свойства внутри классов или как внутренние классы)
  • И многие другие я буду перечислять по мере их появления ...

Любой, кто имеет реальный опыт создания библиотек на основе спецификаций (например, многочисленные спецификации IETF), был бымонументальная помощь. Также было бы очень полезно указать библиотеки с отличными реализациями спецификаций, которые могутct в качестве руководства.

Редактировать: Изучил CTP-версию DotNetOAuth, но, очевидно, они не предоставляют чистую модель, которая бы вдохновлялась.

1 Ответ

4 голосов
/ 14 апреля 2011

Вы, вероятно, на правильном пути. В общем, имена классов и атрибутов должны в значительной степени соответствовать спецификации, и вы должны включить ссылки на спецификацию в документацию XML. Сопоставляя имена, человек, знакомый со стандартом, может легче понять, что делает код.

Я бы настоятельно рекомендовал включить модульные тесты для всего проекта. Это не только поможет вам сохранить целостность каждой сборки, но и обнажит области, которые не так удобны, как должны быть. Например, если вам нужно использовать запутанную путаницу классов и методов, чтобы просто запросить аутентификацию для чего-то, то вам нужно реорганизовать ее, чтобы было проще для потребителя библиотеки.

В принципе, ваши приоритеты должны быть в следующем порядке:

  1. Рабочий код
  2. Простота в использовании
  3. Документация
  4. Соответствует спецификации

Кроме этого, у вас есть свобода применять его по своему усмотрению. Вы можете заметить, что есть некоторые домены, которые имеют множество разных библиотек, которые выполняют одно и то же разными способами. Это хорошо, потому что разные люди любят разные вещи. Некоторые люди захотят использовать библиотеку, которая отражает спецификацию, в то время как другие захотят использовать библиотеку с хорошей документацией, которая может быть трудной в использовании. Другие просто хотят что-то, что будет работать с несколькими строками кода и не мешать им. Это во многом зависит от ваших убеждений по этому вопросу. Вы не можете угодить им всем, но просто выберите путь и бегите по нему.

Тем не менее, я бы рекомендовал против чрезмерного пространства имен. Людям гораздо проще сделать include MyOpenAuth, чем включать 3 разных пространства имен. Используйте их там, где это кажется логичным, но в целом концепцию открытой аутентификации можно считать ее собственной предметной областью (под эгидой единого пространства имен). Но это зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...