Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13

Какую клиент-серверную архитектуру лучше использовать для многопользовательской игры

18.09.2014, 18:37. Показов 4943. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Более-менее подучил C#, есть небольшой опыт написания приложений WinForms и WPF.
Сейчас появилась идея реализации сетевой многопользовательской игры. Собственно, сам вопрос - насчет архитектуры игры.
Логика игры продумана, необходимые классы почти дописал. Хочу написать сервер, собственно - все действия будут происходить на сервере. Планирую использовать протокол TCP/IP для связи сервера с клиентами. Но, тут наткнулся на трехзвенную архитектуру, подумал - почему бы не организовать некоторую БД игроков, их статистика, рейтинг и т.п.

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

А так же не нашел внятных примеров трехзвенной архитектуры в приложениях, если у кого-то найдется - буду очень благодарен
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2014, 18:37
Ответы с готовыми решениями:

Какую архитектуру баз данных лучше использовать
Всем привет, на этапе очередного хобби замута столкнулся с аспектом организации баз данных. По идее в форме веб будет идти запрос на...

Какую архитектуру двухколоночного макета сайта лучше использовать?
Здравствуйте! Меня интересует построение макета сайта с помощью двух колонок. В своем сайте я разметил области divами, то есть левая...

Как лучше спроектировать систему и какую архитектуру разработки приложения использовать?
Всем привет, ситуация такая: Сейчас появилось время и решил снова заняться разработкой САПР для машиностроения. Для чего? Считаю...

9
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
19.09.2014, 09:24
Цитата Сообщение от Blaize Посмотреть сообщение
какую клиент-серверную архитектуру лучше использовать для этих целей
Каких целей? Они не озвучены.
1
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
19.09.2014, 09:31  [ТС]
Цитата Сообщение от Blaize Посмотреть сообщение
Сейчас появилась идея реализации сетевой многопользовательской игры. Собственно, сам вопрос - насчет архитектуры игры.
Логика игры продумана, необходимые классы почти дописал. Хочу написать сервер, собственно - все действия будут происходить на сервере. Планирую использовать протокол TCP/IP для связи сервера с клиентами. Но, тут наткнулся на трехзвенную архитектуру, подумал - почему бы не организовать некоторую БД игроков, их статистика, рейтинг и т.п.
Карточная игра с ролевой системой. Как лучше это реализовать? Понятно, что будет сервер, все действия происходят на сервере - клиенты лишь отображают действия отдельных пользователей. Так вот, лучше использовать для хранения данных об игроках сервер приложений или использовать трехвенную архитектуру и организовать сервер БД отдельно?
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
19.09.2014, 09:54
Цитата Сообщение от Blaize Посмотреть сообщение
Карточная игра с ролевой системой.
Это не цель. Зависит все от того, чего необходимо добиться. Может сервер и вовсе не нужен - каждый клиент может выступать как клиент, так и сервер, а вся информация хранится локально. Какого типа должен быть клиент?
Потом, если даже сервер все-таки и нужен по каким-либо причинам, то необходимо знать какой объем пользователей он должен выдерживать.

Цитата Сообщение от Blaize Посмотреть сообщение
использовать трехвенную архитектуру
Обычно придерживаются такой классической архитектуры, но на практике может получиться нечто другое. Обычно основная проблема в расходах.
1
 Аватар для IamRain
4608 / 2628 / 723
Регистрация: 02.08.2011
Сообщений: 7,051
19.09.2014, 09:59
Еще раз, а что в вашем понимании, 3-х звенное приложение? Просто определиться с терминами.
1
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
19.09.2014, 10:13  [ТС]
Цитата Сообщение от I2um1 Посмотреть сообщение
Это не цель. Зависит все от того, чего необходимо добиться. Может сервер и вовсе не нужен - каждый клиент может выступать как клиент, так и сервер, а вся информация хранится локально. Какого типа должен быть клиент?
Потом, если даже сервер все-таки и нужен по каким-либо причинам, то необходимо знать какой объем пользователей он должен выдерживать.
Информация ни в кое случае не должна храниться локально, в этом весь смысл. Клиент должен только отображать процесс, который происходит на сервере. Все действия происходят только на сервере. Пользователь щелкнул мышкой в область клиентского окна - данные передались на сервер, сервер среагировал - ответил.
Насчет количества пользователей. Вообще играют по двое. Сервер естественно должен обрабатывать хотя бы до нескольких сотен игроков одновременно: нашел противника - играешь, не нашел - ждешь подходящего.
Цитата Сообщение от IamRain Посмотреть сообщение
Еще раз, а что в вашем понимании, 3-х звенное приложение? Просто определиться с терминами.
Связка клиенты - сервер приложений - сервер БД (сама БД)
http://www.4stud.info/networking/img/3-tier.png
0
 Аватар для IamRain
4608 / 2628 / 723
Регистрация: 02.08.2011
Сообщений: 7,051
19.09.2014, 10:17
Лучший ответ Сообщение было отмечено Blaize как решение

Решение

Вот к примеру:
1. Браузер
2. Веб-сервер
3. Сервер БД (служба клиент-серверной СУБД)
Обычно 2-3 рассматриваются как одно целое (данные везде хранить надо), в итоге обычные веб приложения не считаются 3-х звенкой. Поэтому не совсем понятен вопрос.


А вот такое:
1. Браузер
2. Веб-сервер
3. Веб-сервисы, которые хостятся на веб-сервере. От которых можно получать некоторый доп.функционал, в моем понимании. - Вот это уже полноценная трехзвенка.
В вашем случае это обычная двухзвенка, ну понятно, что с БД. Поэтому и спросил про то, как вы это понимаете.

Добавлено через 1 минуту
2 и 3 звено как одно целое рассматривается.

Добавлено через 1 минуту
Поправьте, если не прав.
1
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
19.09.2014, 10:19
Лучший ответ Сообщение было отмечено Blaize как решение

Решение

IamRain:
1. Клиентский код.
2. Бизнес-логика.
3. Код для работа с данными (не обязательно с СУБД).
Причем это все можно вместить в одно клиентское приложение и получить трехуровневую архитектуру. =)

А так согласен, что
Цитата Сообщение от Blaize Посмотреть сообщение
Связка клиенты - сервер приложений - сервер БД (сама БД)
двухровневая.
1
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
19.09.2014, 10:23  [ТС]
Цитата Сообщение от IamRain Посмотреть сообщение
2 и 3 звено как одно целое рассматривается.
Честно говоря не задумывался об этом, точнее, не нашел внятного примера, реализации. Хотелось бы, конечно, чтобы все данные хранились только на сервере. Ну да, получается, в моем понимании это скорее двухзвенка с БД получается.

Добавлено через 54 секунды
Что ж, спасибо, открыли мне глаза, с архитектурой однозначно определился. Тему можно закрывать
0
 Аватар для IamRain
4608 / 2628 / 723
Регистрация: 02.08.2011
Сообщений: 7,051
19.09.2014, 10:30
I2um1, мы говорим не про n-уровневые, а про n-звенные. Это разные вещи.
Вики говорит, что обычные веб-апп - трехзвенка. Хотя, думаю, это уже спорный момент.

Добавлено через 4 минуты
Трехзвенка - это что-то посерьезнее. Есть еще пиринговые системы, где каждый узел одновременно и клиент и сервер и бд распределена по всем им. (skype, torrent). Но это уже довольно сложно реализовать, по крайней мере, для меня.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2014, 10:30
Помогаю со студенческими работами здесь

Какую архитектуру программы лучше выбрать?
Помогите, пожалуйста, определиться с подходом для решения следующей задачи: Реализую предметы, для какой-нибудь RPG игры, т.е....

Какую ide лучше использовать для c++
какой ide лучше использовать для c++?

Какую функцию лучше использовать для линейной интерполяции
Здравствуйте! Есть опытные данные зависимости коэффициента k от параметров X,Y (зависимость представлена в файле in0.txt), необходимо...

Какую библиотеку лучше использовать для работы с файлами в с++?
Какую библиотеку лучше использовать для работы с файлами в с++? stdlib\fstream?

Какую программу лучше использовать для прошивки BIOS?
Здравствуйте! Какую программу лучше использовать для прошивки BIOS и как он вообще прошивается?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Списки и кортежи в 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 часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер