Как лучше всего представить ключевые классы / методы моего основного API сторонним разработчикам? - PullRequest
4 голосов
/ 14 октября 2010

У меня есть приложение, которое я разработал, и у этого приложения есть довольно приличная базовая библиотека DLL, которая содержит API, который использует exe моего основного представления.Я хотел бы разрешить другим разработчикам доступ к этой базовой dll, но я не хочу, чтобы у них был такой же доступ, как и у меня, так как это было бы угрозой безопасности.Каков стандартный способ выставления моей основной DLL?Есть ли какие-то конкретные шаблоны проектирования, на которые я должен смотреть?

Я использую C #

Редактировать: мой вопрос был немного расплывчатым, так что вот некоторые пояснения

Моя программаразвертывается как Windows EXE-файл, который ссылается на core.dll.Я хочу, чтобы другие люди создавали расширения, которые динамически загружались в мою программу при запуске, загружая dll в каталог / extensions.Сторонние DLL будут наследовать / реализовывать определенные классы / интерфейсы в моем core.dll.Я только хочу предоставить третьему лицу ограниченный доступ к моему ядру, но я хочу дать своему exe-файлу дополнительный доступ к ядру.

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

Ответы [ 3 ]

3 голосов
/ 14 октября 2010

Как мне изменить / выставить мой API для другие разработчики?

Чтобы сознательно позволить другим разработчикам работать с API, который вы создали, затрагивает многие вещи, которые можно разбить на две области:

  1. Ресурсы (документация, образцы и т. Д.), Облегчающие их понимание (да - в основном SDK).
  2. Архитектура, создание и развертывание вашего решения, чтобы с ним было легко работать.

Примеры включают в себя:

  • Упаковывая его так, чтобы его можно было использовать повторно.
  • Используя соглашения об именах и имена членов, которым могут легко следовать другие.
  • Документация, образцы.
  • Предоставление исходного кода (как с открытым исходным кодом), если вы рады, что они изменили его.

Я хотел бы разрешить другим разработчикам чтобы получить доступ к этой базовой DLL, но я не хочу, чтобы у них было так много доступа как я, так как это будет безопасность риск.

Хорошо, это приводит нас прямо ко второй области - фактическому решению.

Ваша проблема не является тривиальной, но она также вполне выполнима; Я бы предложил:

  • Просмотр существующих материалов на плагинах (https://stackoverflow.com/questions/tagged/plugins+.net)
  • Лично я обнаружил, что использование атрибутов и инверсии зависимостей является отличным подходом.
  • Есть также такие вещи, как Managed Extensibility Framework , которые вы должны учитывать.

Большая проблема, с которой вы сталкиваетесь, заключается в том, что вы находитесь на серьезной территории архитектуры - решения, которые вы принимаете сейчас, со временем окажут глубокое влияние на все аспекты решения. Таким образом, вы не сможете быстро принять обоснованное решение. Тем не менее - вы должны начать где-нибудь :) 1044 *

2 голосов
/ 14 октября 2010

"шаблоны проектирования" в терминах API больше связаны с такими вещами, как REST.

Я не хочу, чтобы у них был такой же доступ, как и у меня, так какэто было бы угрозой безопасности

Тогда я бы (из-за обслуживания) расположил слой над дополнительной логикой ядра DLL, чтобы предотвратить это.

Дело в том, что«клиенты» вызывают API, а не Core DLL.

«Как» API обращается к Core DLL под вашим полным контролем.Просто выставляйте только те операционные контракты, которые вам нужны.

2 голосов
/ 14 октября 2010

Поскольку вы используете C #, я хотел бы взглянуть на Рекомендации Microsoft по разработке инфраструктуры: условные обозначения, идиомы и шаблоны для многократно используемых библиотек .NET и использовать FxCop , чтобы заставить многих из них (последняя версия здесь ). Это не все, что вам, вероятно, понадобится, но поможет вам выбрать правильное направление.

Кроме того, взгляните на свободно доступную дистилляцию Руководства по проектированию рамок того же автора.

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