1

Тема: ООП проти байто*****

Хай. От така задачка мається: є купка скриптів, котрі являють собою одне ціле, та сервер. Ці скрипти мають відправляти та отримувати дані від сервера.
Я зробив так: створив на клієнті ще один скрипт (далі Посередник), котрий відправляє та отримує дані, та звертаюся до нього з усіх інших скриптів, для того, щоб передати дані. Так, як відправка команди передбачує отримання та обробку відповіді від сервера, разом з даними для передачі Посереднику я також передаю деякий ключ та посилання на скрипт, що звертається до Посередника. Далі цей ключ та посилання на скрипт запам'ятовується у Посередника та разом з даними передається серверу, а сервер щось там робить, та разом з відповіддю також передає цей самий ключ. А коли відповідь від сервера приходить до Посередника, він виймає з тої відповіді ключ, дивиться в своєму списку, посилання на який скрипт відповідає цьому ключу, та потім передає потрібному скрипту отримані дані.
А от одна людина, каже, що той ключ буде дуже завантажувати інтернет-канал (хоча той ключ займає всього декілька байт), і що краще буде зробити так: В кожному з скриптів писати один й той самий код, котрий може відправляти та приймати дані, створити в кожному скрипті якусь чергу, при відправці повідомлення на сервер автоматично заносити в чергу дію, котру треба зробити по приходженні відповіді від сервера, і як тільки прийде відповідь, то відразу витягувати дію із черги та обробляти отримані дані. Це все щоб не було того ключа, котрий займає декілька байт.
Яка реалізація є кращою? Ще можу додати, що скриптів може бути більше сотні.
http://puu.sh/5PE9V.png

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

2

Re: ООП проти байто*****

Забагато невідомих. Чи гарантовано, що відповіді надходитимуть в тій самій послідовності? Який тип з'єднання використовується? Деякі протоколи дозволяють тримати відкритий канал (на встановлення зв'язку часто іде більше часу, ніж на передачу даних).
Ну і найголовніше - є такий принцип DRY, погугліть.

3

Re: ООП проти байто*****

koala написав:

Забагато невідомих. Чи гарантовано, що відповіді надходитимуть в тій самій послідовності? Який тип з'єднання використовується? Деякі протоколи дозволяють тримати відкритий канал (на встановлення зв'язку часто іде більше часу, ніж на передачу даних).
Ну і найголовніше - є такий принцип DRY, погугліть.

Не гарантовано, все суперасинхронно, використовується TCP.
Я от теж так думаю, якщо є якийсь повторююмий код, то тре бити по руках.

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

4

Re: ООП проти байто*****

KIS+DRY мої улюблені принципи. Меше повторень. Менше звязвних обєктів. Менше коду - менше помилок.

5

Re: ООП проти байто*****

Якщо у вас сотня скриптів, то отой посередник скоріше за все буде їх сильно тормозити. Тому якщо сервер витримує одразу сотню конектів, то нема чого морочити собі голову.
Плюс я не розумію як такий підхід може призвести до дублювання коду, бо навіть найпримітивніші мови програмування сьогодні вміють розбивати код на модулі. А копії в оперативці до уваги звісно не беремо.

6

Re: ООП проти байто*****

Torbins написав:

Якщо у вас сотня скриптів, то отой посередник скоріше за все буде їх сильно тормозити. Тому якщо сервер витримує одразу сотню конектів, то нема чого морочити собі голову.
Плюс я не розумію як такий підхід може призвести до дублювання коду, бо навіть найпримітивніші мови програмування сьогодні вміють розбивати код на модулі. А копії в оперативці до уваги звісно не беремо.

то взагалі онлайн гра буде, і буде дуже дивно, якщо на 10 користувачів буде відводитись 1000 з'єднань з сервером... буде.

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

7

Re: ООП проти байто*****

Ну якщо це в кожного клієнта по сотні з’єднань з сервером, то це звісно уже нікуди не годиться. Плюс в онлайн гри невеликий трафік, тому його можна пропустити через одного посередника.

Подякували: FakiNyan1

8

Re: ООП проти байто*****

взагалі-то браузери не будуть тримати більше ніж 2 зєднання з тим самим сервером.