|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
MineRunnerПро профили я просто так придумал. Тут главное суть - есть некие дефолтные наборы настроек. Я запихал их в константную статику, по типу String.Empty. Почему String.Empty находится в классе String? Потому что String.Empty связано с этим классом вне зависимости от контекста использования, поэтому в любом контексте, где используется String, должна быть возможность и использовать String.Empty. Поэтому удобно запихать String.Empty прямо в String. Вот по аналогии и я свои дефолтные профили запихал в класс профиля. На мой взгляд совершенно не удачная аналогия. String.Empty - это значение типа String. То, которым часто инициализируют строковые переменные, с которым сравнивают... И доступно только для чтения. И DefaultProfiles совершенно на это не похоже :) Вот было бы что-то типа этого: Код: c# 1. 2. 3. 4.
то я бы понял ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 19:54 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Я, говорит, специально не конкретизирую, чтобы на несколько страниц растянуть рассказ о всех нюансах :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 19:57 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
MineRunner, гы что бы не менять содержимое DefaultProfiles вы его сделали readonly забавно )) а наружу выкинули саму не инициализированную коллекцию, а у самой коллекции был вроде метод Add()? и что? DefaultProfilesToSerialize сама реализация умопомрачительная,лишнее создание листа - аллокация памяти и тд. Может порыться в учебниках и чонить найти - что не имеет метода Add и его выкидывать наружу, а саму коллекцию закрыть ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 20:13 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Где-то в степиMineRunner, гы что бы не менять содержимое DefaultProfiles вы его сделали readonly забавно )) а наружу выкинули саму не инициализированную коллекцию, а у самой коллекции был вроде метод Add()? и что? DefaultProfilesToSerialize сама реализация умопомрачительная,лишнее создание листа - аллокация памяти и тд. Может порыться в учебниках и чонить найти - что не имеет метода Add и его выкидывать наружу, а саму коллекцию закрыть Да, вы правы. Ридонли - это только, чтобы нельзя было заменить сам объект коллекции. Ещё надо постараться, чтобы нельзя было изменить состав коллекции, и чтобы сами объекты в коллекции нельзя было изменить (по крайней мере, в самой коллекции, но если взять их копию, то меняй свойства этой копии сколько влезет). Поэтому я сейчас всё больше склоняюсь к фабрике - наружу только метод GetDefaultProfiles, который каждый раз возвращает копию дефолтных профилей. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 03:51 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
ЕвгенийВMineRunnerЯ правильно всё сделал? Про цели не говориш Всё же, немного неправильно спрашивать про цели. Надо в следующий раз не Profile назвать класс, а "А" или там "В". Я спрашивал про абстрактную задачу - как сериализовать статичную коллекцию. А потом, в процессе, я бы уже сам понял, правильно ли я сделал, выбрав статичную коллекцию применительно к своему контексту, или нужно это заменить чем-то другим. Я бы увидел, что морока с сериализацией слишком велика и сам ды догадался применить что-то другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 04:22 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
наберитесь терпения, и читайте книги, все придет со временем, пока же у вас каша в голове. для решения : 1 проблемы наберите в гугле - c# read only collection 2 проблемы - c# singleton (фабрика бл*© гыгы) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 06:26 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Давайте тогда уменьшим количество проблем и пока только такой вопрос (без сериализации и прочего): хочу набор дефолтных профайлов, пользователь не может менять этот набор, как и сами профайлы в наборе, но может получать копию этого набора (которую изменять может уже как угодно). Как это лучше организовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 10:09 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
MineRunner, если пользователь не может изменять свой профиль, то очевидно 1 отдавать ему профиль только для пользователя где поля только для чтения, ну для админа будет свой профиль но это снежный ком в контексте ваших -Я еще это не знаю как сделать. 2 отдавать ему клон профиля ( реализовать ICloneable) пусть изголяется как хочет, но опять же он будет в неведении что ж так то, меняю меняю а ничего не меняется. ну и наружу выпустить IEnumerable через select или yeld. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 11:33 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Где-то в степиMineRunner, если пользователь не может изменять свой профиль, то очевидно 1 отдавать ему профиль только для пользователя где поля только для чтения, ну для админа будет свой профиль но это снежный ком в контексте ваших -Я еще это не знаю как сделать. 2 отдавать ему клон профиля ( реализовать ICloneable) пусть изголяется как хочет, но опять же он будет в неведении что ж так то, меняю меняю а ничего не меняется. ну и наружу выпустить IEnumerable через select или yeld. Профиль - это не профиль пользователя. Это просто набор настроек, пресет. В этом смысле профиль. Может, вас это смутило? Пользователь может поменять любой профиль, включая дефолтный. Но дефолтный он может поменять не в составе DefaultProfiles, а только получив копию профиля из DefaultProfiles. Ну представьте, что если бы вместо String.Empty была какая-нибудь конкретная строка "ааа", и пользователь всегда мог бы получить эту строку, но поменять само значение String.Empty он бы не мог. Иммутабельность строк опустим. Я предлагаю сделать так, что будет метод GetDefaultProfiles, которые внутри себя каждый раз создаёт дефолтные профили и возвращает их. Т. е. сами дефолтные профили нигде не хранятся, а каждый раз создаются заново при запросе метода GetDefaultProfiles. Типа такого: Код: c# 1. 2. 3. 4. 5. 6. 7.
Чем не фабрика? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 13:09 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
MineRunner, ну если подгоните под определение фабрики, то будет фабрика. А чем это не реестр (Registry), или репозиторий (Repository), или шлюз (Gateway)? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 13:18 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
skyANAMineRunner, ну если подгоните под определение фабрики, то будет фабрика. А чем это не реестр (Registry), или репозиторий (Repository), или шлюз (Gateway)? :) Я их не знаю, эти ваши шаблоны. По крайней мере, тонко их не отличаю. Мне показалось, что раз создаёт каждый раз новые объекты - то фабрика. Пусть даже это всегда одинаковые объекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 13:21 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
skyANAMineRunner, ну если подгоните под определение фабрики, то будет фабрика. А чем это не реестр (Registry), или репозиторий (Repository), или шлюз (Gateway)? :) А бывают недорепозиторные реестры с оттенком шлюзовой фабрики? Недоподшаблонный перепаттерн? Надо же всё тонко знать и различать шаблон №17 пункт б) от шаблона №24 пункт а) подпункта 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 13:24 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
skyANAMineRunner, ну если подгоните под определение фабрики, то будет фабрика. А чем это не реестр (Registry), или репозиторий (Repository), или шлюз (Gateway)? :) Ладно, а если уменьшить число сущностей и вообще абстрагироваться от того, как назвать то, как я написал GetDefaultProfiles - как вам сама реализация задачи "хочу набор дефолтных профайлов, пользователь не может менять этот набор, как и сами профайлы в наборе, но может получать копию этого набора (которую изменять может уже как угодно)"? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 13:26 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
MineRunnerskyANAMineRunner, ну если подгоните под определение фабрики, то будет фабрика. А чем это не реестр (Registry), или репозиторий (Repository), или шлюз (Gateway)? :) Я их не знаю, эти ваши шаблоны. Подозреваю, что и с фабрикой Вам не хватило терпения разобраться :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 14:35 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
MineRunnerskyANAMineRunner, ну если подгоните под определение фабрики, то будет фабрика. А чем это не реестр (Registry), или репозиторий (Repository), или шлюз (Gateway)? :) Ладно, а если уменьшить число сущностей и вообще абстрагироваться от того, как назвать то, как я написал GetDefaultProfiles - как вам сама реализация задачи "хочу набор дефолтных профайлов, пользователь не может менять этот набор, как и сами профайлы в наборе, но может получать копию этого набора (которую изменять может уже как угодно)"? Внимание вопрос: если один и тот же пользователь три раза дёрнул этот Ваш метод в течение одной минуты и в памяти образовалось три копии "набора дефолтных профайлов", то это нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 14:35 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
skyANA, нормально- нормально главное что быничо не поменял )) тут ведь ешо есть такая мулька, если админ вдруг в этот момент его обзовет "тупым фабричным идиотом" в нативном профиле он никогда об этом не узнает не дернув эту требуху по новой - это сколково ничо не попишешь ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 14:53 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
MineRunner, нельзя же все упрощать до абстракции примитивной фабрики, свет клином не сошелся на ней. вот вполне юзабельный код, он примитивный но вполне логичный. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 16:23 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
skyANAMineRunnerпропущено... Ладно, а если уменьшить число сущностей и вообще абстрагироваться от того, как назвать то, как я написал GetDefaultProfiles - как вам сама реализация задачи "хочу набор дефолтных профайлов, пользователь не может менять этот набор, как и сами профайлы в наборе, но может получать копию этого набора (которую изменять может уже как угодно)"? Внимание вопрос: если один и тот же пользователь три раза дёрнул этот Ваш метод в течение одной минуты и в памяти образовалось три копии "набора дефолтных профайлов", то это нормально? Да. А как я могу ему это запретить? И зачем? Если пользователь захочет создать три копии "набора дефолтных профайлов", то он сможет это сделать в любом случае, имея доступ к этим профайлам - хоть просто возьмёт и три раза скопирует один и тот же набор. Зато в моём случае я предоставляю ему удобный способ это сделать, без копирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 16:36 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Где-то в степиskyANA, нормально- нормально главное что быничо не поменял )) тут ведь ешо есть такая мулька, если админ вдруг в этот момент его обзовет "тупым фабричным идиотом" в нативном профиле он никогда об этом не узнает не дернув эту требуху по новой - это сколково ничо не попишешь ((( Это не критично в моём случае. Ну и точно не критично на текущий момент. Ну будет ошибка несогласованности профайлов в момент работы. Ну и что? У меня работа с текущим набором профайлов подразумевает сессионной - по одной-две минуты. Ну перезапустит расчёт. В реальном времени оповещать клиентов об изменении каких-то настроек - это для какого-то нон-стоп работающего сервиса актуально, а у меня короткие сессии. Если 0,01% пользователей раз в неделю получат одно сообщение "Что-то пошло не так, попробуйте снова", то это не страшно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 16:41 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Где-то в степиMineRunner, нельзя же все упрощать до абстракции примитивной фабрики, свет клином не сошелся на ней. вот вполне юзабельный код, он примитивный но вполне логичный. Для непрерывно работающей программы замена такого списка может повлиять на работу, да, поэтому надо защититься. А у меня так: 1) юзер получает с сервера набор настроек; 2) юзер выбирает из набора пресет (профиль) и, если хочет, изменяет отдельные настройки в пресете, или полностью свои настройки (создаёт свой пресет); 3) юзер пользуется сервисом 1-2 минуты со сделанными настройками. Вот типичный сценарий работы. Каждый раз получает набор пресетов и настроек из сервера. Защиту от изменения настроек во время сессии пока такую придумал: при изменении настроек сервер перезагружается, следовательно, данные о всех активных сессиях удаляются. Т. е. юзер получает отказ в работе и предложение попробовать ещё раз или подождать и попробовать позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 16:48 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
MineRunner, авторЭто не критично в моём случае. Ну и точно не критично на текущий момент. Ну будет ошибка несогласованности профайлов в момент работы. Ну и что узнаю "русскую" школу программистов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 16:50 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Вот по моему сценарию есть смысл отдавать каждый раз копию настроек. Не обязательно хардкодить их в коде, можно из файла брать. Файл изменился - сервис перезагрузился с новым набором дефолтных настроек. Пока так. Потом подумаю ещё, по мере возникновения проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 16:51 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Где-то в степиMineRunner, авторЭто не критично в моём случае. Ну и точно не критично на текущий момент. Ну будет ошибка несогласованности профайлов в момент работы. Ну и что узнаю "русскую" школу программистов. Они все в Гугле работают . http://www.chromega.ru/errors/opanki Как устранить? Если это разовый случай, то переживать особо не стоит. Такой баг легко устраняется: просто обновите страничку (клавиша F5). Это самый распространенный способ решения проблемы "Опаньки" . Средняя зарплата в Гугле у программистов - что-то около 120 килобаксов в год. Думаю, у вас меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 16:54 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
http://www.chromega.ru/errors/opanki просто обновите страничку (клавиша F5). Это самый распространенный способ решения проблемы тогда вам прямая дорога в любой российский банк фронтенд писать. можно на сайт госуслуг или ещё какую богадельню трудоустроиться ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 17:08 |
|
Как лучше всего сериализовать статическую коллекцию?
|
|||
---|---|---|---|
#18+
Изопропил http://www.chromega.ru/errors/opanki просто обновите страничку (клавиша F5). Это самый распространенный способ решения проблемы тогда вам прямая дорога в любой российский банк фронтенд писать. можно на сайт госуслуг или ещё какую богадельню трудоустроиться Мне бы сразу в Гугл. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 17:27 |
|
|
start [/forum/topic.php?fid=20&msg=39271280&tid=1400475]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 422ms |
0 / 0 |