Рекомендации по интеграции сторонних модулей в ваше приложение

StackOverflow https://stackoverflow.com/questions/48322

  •  09-06-2019
  •  | 
  •  

Вопрос

У нас есть несколько проектов, которые включают в себя создание приложения, состоящего, возможно, на 50% из пользовательского функционала, но затем включающего, скажем, вики, форум и другие компоненты, которые являются уже изобретенными «колесами», которые мы не делаем. хочу переписать с нуля.

Эти сторонние приложения обычно имеют собственные базы данных, темы и системы аутентификации.По моему опыту, заставить работать такие вещи, как единый вход, общая тема или тегирование/поиск по объектам в нескольких подприложениях, — довольно сложная задача.Каковы некоторые из лучших практик для такого рода интеграционных проектов?

До сих пор наш подход заключался в том, чтобы тщательно выбирать компоненты, выбирая те, которые имеют четко определенный API, предпочтительно через HTTP (например, REST или SOAP), хотя это не всегда возможно (мы не нашли достойного форум, который так работает).Есть ли какие-нибудь предложения, которые люди могут дать любому, кто пытается это сделать, поскольку я подозреваю, что в наши дни многие из нас делают это все чаще и чаще?

Это было полезно?

Решение

Убедитесь, что интерфейс между вашим приложением и сторонним приложением или библиотекой таков, что вы на всякий случай можете легко заменить его чем-нибудь другим.В некоторых случаях стороннее программное обеспечение может быть просто реализацией стандартного API (Java часто делает это с JDBC, JMS, JNDI,...).В других случаях это означает обертывание сторонней библиотеки в какой-то API, который вы придумали.

Конечно, бывают случаи, когда эту идею отбрасывают в сторону и тесно интегрируют со сторонним программным обеспечением.Просто убедитесь, что вы ДЕЙСТВИТЕЛЬНО хотите связать свое приложение с этой третьей стороной.Как только вы пойдете по этому пути, ДЕЙСТВИТЕЛЬНО трудно вернуться назад и изменить свое мнение.

Другие советы

Если вы собираетесь использовать библиотеки с открытым исходным кодом, выбирайте библиотеки с хорошей лицензией.Я на собственном горьком опыте обнаружил (при попытке OEM-производства приложения), что многие компании уклоняются от таких лицензий, как LGPL.Я не буду вдаваться в подробности, почему они предпочитают лицензии в стиле Apache, BSD или MIT.

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

Выбирайте технологии, которые хорошо работают вместе.Я собрал приложение, использующее ORM и веб-службы.Spring Framework + Apache CXF + JPA для ORM создали хороший технологический стек.Все инструменты, которые я использую, легко объединяются в Spring, что упрощает их совместное использование.Меньше всего вам хотелось бы выбирать инструменты, для которых вам придется написать кучу кода, чтобы использовать их вместе.

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

Дональд Кнут сказал, что даже лучше, чем код многократного использования, — это модифицируемый код, поэтому, если нет API, вам следует искать приложение с открытым исходным кодом, которое хорошо написано и, следовательно, его можно настраивать.

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

Мой подход заключался в использовании стороннего кода для некоторых основных функций.Например, я использую Subsonic для доступа к данным, компоненты Devexpress для пользовательского интерфейса и Peter Blum Data Entry Suite для ввода и проверки данных.Исходный код Subsonic открыт, исходный код элементов управления Devexpress Питера Блюма доступен за дополнительную плату.Для меня было бы невозможно получить функциональность этих элементов управления, если бы я попытался написать их самостоятельно.

Такой подход позволяет мне сосредоточиться на пользовательских функциях моего приложения, не беспокоясь о том, как я буду получать доступ к базе данных или как создать редактируемый древовидный список, который будет выглядеть красиво.Конечно, у меня нет полностью настроенного и работающего форума, но я знаю, что буду использовать базу данных SQL для своего приложения, и мне не придется пытаться заставить разные компоненты хранения данных работать вместе.У меня нет вики, но я знаю, как использовать компоненты пользовательского интерфейса devexpress, а форматировать и проверять ввод данных очень просто с элементами управления Питера Блюма.Другими словами, изучите инструменты (и, конечно же, тщательно выбирайте их), которые ускорят разработку всех ваших проектов, и тогда вы сможете сосредоточиться на тех частях вашего приложения, которые необходимо настроить.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top