• Как правильно писать "плагинное" приложение?

    Gorthauer87
    @Gorthauer87
    Программист
    Создаем либу, которая предоставляет общее sdk, обычно это набор абстрактных классов. Создаем класс Plugin, который содержит в себе необходимые точки входа, обычно это init для того, чтобы плагин сказал о том, что он умеет, load для того, чтобы плагин начал выполнять возложенные на него фичи и unload, для выгрузки. Далее делаем менеджер этих самых плагинов, который имеет в себе указатели на все доступные плагины, он уже разруливает что загружать, а что нет, а также разруливает всякие штуки наподобии зависимостей между плагинами.
    Работать такая связка будет столь же быстро, как и монолитное приложение, зато каждый плагин будет являться лишь кирпичиком и можно будет гораздо проще отлаживать. Такого рода незначительно влияет на скорость загрузки приложения (необходимо таки делать некоторые лишние телодвижения в рантайме) и незначительно на объем потребляемой памяти. Можно организовать обмен эвентами между плагинами, но гораздо проще и быстрее сделать плагины реализациями некоторых интерфейсов, а обмен событиями использовать лишь в небольшой части плагинов, где это реально нужно.
    Ответ написан
    4 комментария
  • Как правильно писать "плагинное" приложение?

    VenomBlood
    @VenomBlood
    Посмотрите в сторону MEF и Unity (если говорить про .net), позволят создавать достаточно хорошие расширяемые системы.
    Если смотреть с более общей точки зрения, то «плагинабельность» — это достаточно широкая и проработанная тема.
    Тут встают вопросы: какая именно плагинабельность вам нужна?

    Нужно ли взаимодействие на базе SOA? нужна ли изоляция плагинов в отдельный домен? Можете ли вы обойтись простой структурой подлкючения модулей, или надо использовать шину сообщений? Нужно ли разграничение по уровням доверия и, соответственно, раздельный API?
    Также вопрос по поводу инъекции зависимостей — будут ли ваши плагины больше отдельными модулями, или они будут тесно интегрироваться в существующую среду (например плагин переопределяющий нотификацию) и возможно использование DI.

    Краткого совета «как писать» здесь быть не может, нужно знать задачу и все нюансы.
    Если говорить просто о каком-либо фреймворке для обеспечения плагинабельности — почитайте статьи про MEF, они на английском, но дадут общее представление об одном из возможных путей решения проблемы.
    Ответ написан
    1 комментарий
  • На чём написан Хабр?

    xn__p2a
    @xn__p2a
    > На чём написан Хабр?

    Иногда мне кажется, что на коленке… (особый привет хабра-парсеру!)
    Ответ написан
    Комментировать
  • Торрент трекеры с научной и учебной литературой

    Vitvitsky
    @Vitvitsky
    www.ihtik.lib.ru/ в свое время преподаватель по этике советовал этот ресурс, там куча разной литераторы, только боьшинство ее в djvu формате, то есть сканы.
    Ответ написан
    1 комментарий
  • Торрент трекеры с научной и учебной литературой

    BigD
    @BigD
    learnbits.me
    Ответ написан
    Комментировать
  • Торрент трекеры с научной и учебной литературой

    fessmage
    @fessmage
    Забыл написать — в Library Genesis слиты такие крупные коллекции науч.лита как Колхоз, Мехмат, Инфоната и прочие как крупные так и мелкие, причем большинство дублей вычищено.
    Ответ написан
    2 комментария
  • Торрент трекеры с научной и учебной литературой

    fessmage
    @fessmage
    Library Genesis, ссылок две:
    free-books.dontexist.com/ — тут основной контент, т.е. все новые книги добавляются туда
    gen.lib.rus.ec/ — оригинальный ресурс, но по некоторым причинам туда новые книги попадают с большим промежутком времени, зато тут форум для обоих сайтов, обсуждают развитие проекта, перспективы, изменения и вообще всё.
    Можно искать книгу как на самих сайтах, так и скачать всё торрентом (>2Tb книг, а с темпами развития нужны не меньше 3Tb места) и локально поднять сервер с базой данных, получится локальная копия этих ресурсов. Как это сделать написано на форуме gen.lib.rus.ec/, ссылки на торрент скачку найдете на free-books.dontexist.com/
    Ответ написан
    Комментировать