#ios #realm #custom-backend
#iOS #realm #пользовательский сервер
Вопрос:
В качестве предисловия: я хочу сделать это в качестве учебного упражнения. Я не пытаюсь создать коммерчески жизнеспособное приложение.
Каковы уровни / абстракции приложения iOS, которое подключено к пользовательскому бэкэнду, размещенному самостоятельно? Какие технологии необходимы для создания этого стека?
Этот пост немного помог моему пониманию. В настоящее время я использую Firebase в качестве своего серверного модуля, но обнаружил, что его структура NoSQL не подходит для моего приложения. Данные, которые я храню, являются реляционными, поэтому я думаю, что база данных SQL, хранящая JSON, работала бы лучше. Данные моделируют транспортные средства, совместно используемые пользователями. Исходя из моих исследований, платформа Realm выглядит хорошим выбором. Правильно ли я понимаю технологии здесь? Имеет ли смысл это предложение?
Общая функциональность:
- Регистрация и логин пользователей
- Загрузка данных о транспортном средстве
- Некоторая логика на стороне сервера
- Отправка обновлений данных пользователям в режиме реального времени
Итак, будет ли стек выглядеть следующим образом?
Пользовательский интерфейс: приложение для iOS, написанное на Swift
База данных: Realm Database (SQL)
Сервер: Realm Object Server
Я действительно ищу обзор общей архитектуры. Я ничего об этом не знаю, поэтому уверен, что не смог предоставить много деталей, необходимых для подробного ответа.
Прошу прощения, если этот вопрос излишен; большинство ответов, которые я видел на подобные вопросы, обычно заканчиваются словами «просто используйте AWS, Firebase и т.д.».
Спасибо!
Комментарии:
1. Также можете попробовать свои силы в Python’s Flask для серверной части и использовать любую базу данных, которую вы хотите.. хотя он поставляется с SQLAlchemy..
2. Интересно, я проверю это! Спасибо
3. Есть хороший и общепринятый ответ, но вопрос немного расплывчатый. Требования могут быть обработаны Firebase (которая может обрабатывать взаимосвязи) или ROS Realm. Если вы запускаете свой собственный физический сервер, вам необходимо учитывать такие элементы, как обслуживание, время простоя, избыточность, не говоря уже о наличии подходящего оборудования для поддержки X пользователей, а также подключения, безопасности и т.д. Это может быть очень дорогим предложением, поскольку вес всего лежит исключительно на вас, например, вместо того, чтобы тратить время на кодирование и обновление вашего приложения, вам придется потратить день на замену неисправного жесткого диска.
4. Прошу прощения за расплывчатость; это результат моего невежества в этом вопросе. 🙂 Меня больше интересует развитие моего понимания стека технологий, чем эффективность выполнения всего этого самостоятельно, в отличие от использования уже существующих решений, таких как Firebase. Хотя я использую Firestore (относительно новую Firebase db), и я нахожу, что это полное несоответствие моим целям. Насколько я понимаю, Firebase — это база данных NoSQL, которая хороша для «неструктурированного, нереляционного» управления данными. Мои данные структурированы, нединамичны и относятся друг к другу. Время разработки до сих пор было медленным из-за этого несоответствия.
5. Ах… Исходя из сильного опыта работы с SQL, я изначально думал, что Firebase также не соответствует; я был совершенно неправ. Есть поговорка «использовать правильный инструмент для работы», но понимание инструмента дало мне другую перспективу. Изначально создание «отношений» в NoSQL казалось полным несоответствием… однако, как только вы поймете, как обращаться к данным с помощью NoSQL, это даст вам еще один инструмент в вашем наборе инструментов; Firebase / FireStore невероятно быстры и очень расширяемы — я бы посоветовал продолжить с этим. Если у вас есть проблема с конкретным вариантом использования, обязательно опубликуйте ее здесь, чтобы мы могли взглянуть.
Ответ №1:
Для начала вы хотите создать свой собственный сервер и вам следует создать свой собственный API, к которому будет подключаться ваше приложение IOS. короче говоря, это называется REST apihttps://www.sitepoint.com/developers-rest-api /
вам нужно будет использовать гораздо больше технологий, чем просто сервер, такой как Apache
как только вы создадите свой серверный API, вам нужно будет подключить его к приложению IOS, что можно сделать с помощью встроенного фреймворка NSURLSession от Apple или Alamofire, который основан на NSURLSession, но его проще использовать, если вы изучаете
вам нужно будет узнать, как выполнять http / https-запрос, чтобы понять, как выполняется запрос
проверьте это https://medium.com/@MuraliKathir/build-a-simple-api-search-with-alamofire-and-swiftyjson-80286e833315
Теперь перейдем к Realm. Realm — это локальная база данных, которая будет находиться внутри вашего приложения для IOS и поможет вам сохранять данные, загруженные онлайн или даже созданные пользователемhttps://realm.io/docs/swift/latest/#queries
Комментарии:
1. Спасибо за быстрый ответ и ссылки! Что касается Realm (или любой другой базы данных), было бы у меня 2 базы данных Realm, одна на сервере, а затем локальная на iPhone? На сервере были бы все данные для всех в приложении, в то время как локальная база данных содержала бы только данные, релевантные и доступные для этого конкретного пользователя? Кроме того, я предполагаю, что сервер и локальные базы данных не обязательно должны быть Realm?
2. @NickRizzo да, они не обязательно должны быть такими же, как вы сказали, на стороне сервера может быть mysql или любая база данных, а в приложении вы можете привязать данные и сохранить их там, где вам нравится. Realm можно использовать на стороне сервера как в Linux, так и в Windows через NodeJS и Realm-JS API
3. Большое спасибо! Для меня это заполняет много пробелов.