@VictorSchofmann

Какие есть хорошие книги по архитектуре приложений?

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

Пока нагуглить удается только ответы на конкретные вопросы, и картина целиком не складывается.
  • Вопрос задан
  • 64600 просмотров
Решения вопроса 2
dmitry_pavlov
@dmitry_pavlov
World-class .NET freelance contractor (remotely)
По архитектуре приложений ничего дельного нет. Все что мне доводилось видеть - это описание того или иного подхода, рассморение его достоинств. Общего обзора по этой теме нет (я не встерчал). Чтобы разбраться в вопросе архитектуры ПО, начинайте читать отсюда и дальше по ссылкам из блока see also. Это, пожалуй, будет самый быстрый способ. Если что-то непонятно по тому или иному вопросу - подчитывайте статейки по этой теме (их много даже на русском на всяких хабрах и подобных ресурсах).

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

Я сам так сделал когда-то. Весьма неплохо разобрался :)
Ответ написан
@maxpetrikov
Книги по архитектурам:
The Architecture of Open Source Applications
aosabook.org/en/index.html
Аналога на русском языке не встречал

Есть два варианта работы backend части:
1. Работает в жесткой связке в фронтом. При каких-либо действиях в браузере информация передается в backend, который формирует новые отображения для браузера. Почти все современные web-framework из коробки работают в таком режиме.
2. Back отдает информацию в json/xml виде. REST - запрос информации скопом, т.е. в одном запросе может возвращаться информация о разных частях системы. RESTfull API - работа с конкретным объектом через http запросы (GET - получение, POST - создание, PUT -изменение, DELETE - удаление).

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

Backend мобильного приложения чаще всего работает по 2 варианту.
Backend сервиса может работать по обоим вариантам, если в проекте сложный frontend, то в последнее время наблюдается смещение в сторону второго вариант работы (SPA - single page application работают через API).

Ядро приложения - некая часть кода + база данных, которые могут быть перенесены в другой проект с такой-же бизнес логикой. Ядро не должно быть привязано к конкретным фреймворкам, чтобы можно было сменить какие-то конечные части системы(php фреймворк, javascript фреймворк) с минимальными потерями.
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
@akimdi
есть пару книг, я сам собирал долгое время, но информации действительно мало.
вот ссылка https://yadi.sk/d/TIjekwdAmiBWa
Ответ написан
Комментировать
dmitriylanets
@dmitriylanets
веб-разработчик
мне в свое время посоветовал А.Ларин следующие книги:
- ПРОГРАММИСТ-ПРАГМАТИК (простая, с нее стоит начинать)
- UML. ОСНОВЫ
- АРХИТЕКТУРА КОРПОРАТИВНЫХ ПРОГРАММНЫХ ПРИЛОЖЕНИЙ (сложная но интересная)
- РЕФАКТОРИНГ: УЛУЧШЕНИЕ СУЩЕСТВУЮЩЕГО КОДА
Ответ написан
Комментировать
@SergeyZelensky-Rostov
вот есть книга, но есть одно но книги очень быстро устаревают, особенно касаемо веб-разработки, так что не старайтесь особо зацикливаться на их прочтении.
Веб-приложение - работает по архитектуре клиент-сервер
Роль бэкэнда и фронтэнда проста для восприятия, бэкэнд серверная часть(сервер) приложения, по-сути разницы между бэкендом сервиса, сайта или мобильного приложения - нет,выполняют одну и туже функцию, сбор и обработка данных, предоставления данных в удобном формате клиенту. Что касаемо клиента (в частном случае фронтенда ) он может выполнять массу вещей, самое распростаненное это GUI ( формы, таблицы ,кнопочки и т.д.), который дает пользователю общаться с программой, вводить данные получать данные в различных формах, производить пред-валидацию данных ( Всегда проверяйте данные на сервере, будьте параноиком - не верьте не кому), и еще кучу всего .
API
API (интерфейс программирования приложений, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай]) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах.
wikipedia

и так если GUI для человека , то API интерфейс для программ, к примеру нам необходимо получать курс валют в в виде таблицы в нашем приложении , в этом случае мы как раз и будем использовать API сервиса, предоставляющего такую информацию.
REST - хорошая статья
Ответ написан
Комментировать
saintech
@saintech
Можно начать с книги «Совершенный код» С. Макконнелл. Там много всего по проектированию ПО, но все обобщенно, без конкретики.
Ответ написан
Комментировать
K-2
@K-2
Вот вам для наглядности

mvc_classic.pngmvc_ajax.png
Ответ написан
@hummerd
Всех с наступающим!
Это тема, видимо, плохо формализуется и потому как-то книг особо хороших нет.

Если хотите разбираться в таких вопросах, то лучший способ - опыт. Участвуйте в разных проектах, смотрите как там что устроено, разбирайтесь как оно работает, какие есть плюсы и минусы. Меняйте работу раз в два три года, чтобы повидать разные проекты с разными подходами.

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

Опасайтесь субъективной оценки архитектуры - многие считают плохой любую архитектуру, придуманную кем-то другим. Если человек ругает архитектуру, добейтесь конкретных ответов, почему она плохая, а не расплывчатых обвинений, вроде "не гибкая", "архаичная" и т.д.
Ответ написан
Комментировать
@Gudsaf
Школьник
Смежный вопрос: линк
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы