0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
|
|
Какую клиент-серверную архитектуру лучше использовать для многопользовательской игры18.09.2014, 18:37. Показов 4943. Ответов 9
Метки нет Все метки)
(
Здравствуйте. Более-менее подучил C#, есть небольшой опыт написания приложений WinForms и WPF.
Сейчас появилась идея реализации сетевой многопользовательской игры. Собственно, сам вопрос - насчет архитектуры игры. Логика игры продумана, необходимые классы почти дописал. Хочу написать сервер, собственно - все действия будут происходить на сервере. Планирую использовать протокол TCP/IP для связи сервера с клиентами. Но, тут наткнулся на трехзвенную архитектуру, подумал - почему бы не организовать некоторую БД игроков, их статистика, рейтинг и т.п. Так вот, сам вопрос - какую клиент-серверную архитектуру лучше использовать для этих целей - двухзвенную (клиенты и сервер приложения + на сервере организовать хранение данных об игроках) или трехзвенную (клиенты, сервер приложения и сервер БД)? А так же не нашел внятных примеров трехзвенной архитектуры в приложениях, если у кого-то найдется - буду очень благодарен ![]()
0
|
18.09.2014, 18:37 | |
Ответы с готовыми решениями:
9
Какую архитектуру баз данных лучше использовать Какую архитектуру двухколоночного макета сайта лучше использовать? Как лучше спроектировать систему и какую архитектуру разработки приложения использовать? |
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
|
|
19.09.2014, 09:31 [ТС] | |
Карточная игра с ролевой системой. Как лучше это реализовать? Понятно, что будет сервер, все действия происходят на сервере - клиенты лишь отображают действия отдельных пользователей. Так вот, лучше использовать для хранения данных об игроках сервер приложений или использовать трехвенную архитектуру и организовать сервер БД отдельно?
0
|
Злой няш
![]() 2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
|
|
19.09.2014, 09:54 | |
Это не цель. Зависит все от того, чего необходимо добиться. Может сервер и вовсе не нужен - каждый клиент может выступать как клиент, так и сервер, а вся информация хранится локально. Какого типа должен быть клиент?
Потом, если даже сервер все-таки и нужен по каким-либо причинам, то необходимо знать какой объем пользователей он должен выдерживать. Обычно придерживаются такой классической архитектуры, но на практике может получиться нечто другое. Обычно основная проблема в расходах.
1
|
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
|
|
19.09.2014, 10:13 [ТС] | |
Информация ни в кое случае не должна храниться локально, в этом весь смысл. Клиент должен только отображать процесс, который происходит на сервере. Все действия происходят только на сервере. Пользователь щелкнул мышкой в область клиентского окна - данные передались на сервер, сервер среагировал - ответил.
Насчет количества пользователей. Вообще играют по двое. Сервер естественно должен обрабатывать хотя бы до нескольких сотен игроков одновременно: нашел противника - играешь, не нашел - ждешь подходящего. Связка клиенты - сервер приложений - сервер БД (сама БД) http://www.4stud.info/networking/img/3-tier.png
0
|
![]() 4608 / 2628 / 723
Регистрация: 02.08.2011
Сообщений: 7,051
|
|
19.09.2014, 10:17 | |
![]() Решение
Вот к примеру:
1. Браузер 2. Веб-сервер 3. Сервер БД (служба клиент-серверной СУБД) Обычно 2-3 рассматриваются как одно целое (данные везде хранить надо), в итоге обычные веб приложения не считаются 3-х звенкой. Поэтому не совсем понятен вопрос. А вот такое: 1. Браузер 2. Веб-сервер 3. Веб-сервисы, которые хостятся на веб-сервере. От которых можно получать некоторый доп.функционал, в моем понимании. - Вот это уже полноценная трехзвенка. В вашем случае это обычная двухзвенка, ну понятно, что с БД. Поэтому и спросил про то, как вы это понимаете. Добавлено через 1 минуту 2 и 3 звено как одно целое рассматривается. Добавлено через 1 минуту Поправьте, если не прав.
1
|
Злой няш
![]() 2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
|
|
19.09.2014, 10:19 | |
![]() Решение
IamRain:
1. Клиентский код. 2. Бизнес-логика. 3. Код для работа с данными (не обязательно с СУБД). Причем это все можно вместить в одно клиентское приложение и получить трехуровневую архитектуру. =) А так согласен, что двухровневая.
1
|
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
|
|
19.09.2014, 10:23 [ТС] | |
Честно говоря не задумывался об этом, точнее, не нашел внятного примера, реализации. Хотелось бы, конечно, чтобы все данные хранились только на сервере. Ну да, получается, в моем понимании это скорее двухзвенка с БД получается.
Добавлено через 54 секунды Что ж, спасибо, открыли мне глаза, с архитектурой однозначно определился. Тему можно закрывать
0
|
![]() 4608 / 2628 / 723
Регистрация: 02.08.2011
Сообщений: 7,051
|
|
19.09.2014, 10:30 | |
I2um1, мы говорим не про n-уровневые, а про n-звенные. Это разные вещи.
Вики говорит, что обычные веб-апп - трехзвенка. Хотя, думаю, это уже спорный момент. Добавлено через 4 минуты Трехзвенка - это что-то посерьезнее. Есть еще пиринговые системы, где каждый узел одновременно и клиент и сервер и бд распределена по всем им. (skype, torrent). Но это уже довольно сложно реализовать, по крайней мере, для меня.
0
|
19.09.2014, 10:30 | ||||||
Помогаю со студенческими работами здесь
10
Какую функцию лучше использовать для линейной интерполяции Какую библиотеку лучше использовать для работы с файлами в с++? Какую программу лучше использовать для прошивки BIOS? Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
|
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
|
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
|
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
|
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
|
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
|
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
|
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
|
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
|
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
|