Terras, Для примера могу сказать, что в предыдущей конторе, где я работал, ядро было написано на C#, миграции на Ruby, интеграционные тесты на Pyton, а некоторые скрипты статистики на Go. Технологии выбираются те, которые лучше справляются в данном контексте задачи.
Terras, не знаю больших "медиа-холдинг", у которых стек один. Наоборот, чем больше контора, тем с большим разнообразием технологий имеешь дело. Это в конторах, где 5 разработчиков, там пишут в одном направлении.
У Вас нет циклической связи, обычная связь один ко многим. И тот запрос с инклюдом должен быть вполне рабочим. Если возникает ошибка при запросе, то ищите не здесь.
Антон Вертов, Массивы стоит делать когда заранее известна его длина, при добавлении он автоматом не увеличивается, т.е. если объявили его размером 4, то больше он не станет, только создавать новый бОльшей длины и копировать туда предыдущий набор. Поэтому в Вашем случае лучше использовать коллекцию, например
List<GameObject> tempCell = new List<GameObject>();
тогда при добавлении в коллекцию tempCell.Add(Instantiate(PrefabCharCell))
ее длина будет увеличиваться автоматически по мере необходимости.
Yustas Alexu, потому что в item само значение элемента а не сам элемент. В данном примере там будет строка, а строки неизменяемый тип в js, поэтому изменить его нельзя. Если хочется изменять строку в этом примере, то нужно его завернуть в объект. Тогда в item будет объект, а он ссылочный и можно изменить поле.
Макс Максимов, Да, тогда нужно под каждого отдельная очередь. Но насколько помню, rabbit гарантирует доставку но не гарантирует очередность доставки. Значит нужно будет еще замарочиться буфером с сортировкой по дате, раз нужна последовательная обработка.
А зачем отдельно очередь для офлайна?
Я так понимаю, что обрабатывать отчеты может только комп №1, а второй только накапливать их от клиентов. И если первый отвалится, то ничего не поделаешь, все будет в офлайне. Но сообщения то теряться не будут и в конце концов первый их по любому заберет. А все распараллеливание обработки на первом компьютере.
Забирать сообщения надо только пачками, а не по одному обрабатывать, чтобы всегда понимать, очередь отчетов от одного клиента.
Макс Максимов, Как часто будут отправляться отчеты с клиента? Даже если раз в час. И под это выделять отдельную очередь со своим обработчиком? Если конечно они будут слать каждую минуту и это все в реалтайме надо обработать, тогда согласен. Но Вы привели пример с компьютерным клубом, от этого и отталкиваюсь.
Но если все по уму, то рэбит должен справится с 100к сообщений в час в одной очереди, а обрабатывать эти сообщения уже параллельно. Но, конечно, если отчеты не мегабайтные.
Вы первым компом забрали пачку сообщений, допустим раз в минуту он забирает стопку. В этой стопке Вы можете все сообщения отсортировать и сгруппировать как угодно: по клиенту, по идентификатру отчета, по времени. И дальше уже обрабатывайте клиентов параллельно, отчеты последовательно.
Можно конечно для простоты обработки сделать очереди под районы или клубы, но суть не меняется.
Дима Соколов, там все правильно и хорошо написано. Не понимаю, что Вы подразумеваете под "лучше". Вы хотите подобное поведение, но реализованное каким то другим способом? Что Вас здесь не устраивает и почему? Чем может не устраивать switch, понятно, но чем тогда не устраивают конкретные фабрики?
vss96, Конечно пропадет. Вам нужно изучит razor синтаксис и что он делает. Символ @ в разоре выделяет C# код, который выполнится на стороне сервера и результат вернет в разметку. Когда Вы пишите @JsonConvert.SerializeObject(b), то C# код начнется с @JsonConvert, а в Вашем варианте он будет только строкой html разметки.
JsonConvert это метод для конвертирования C# объектов в json строку и он является методом сторонней библиотеки newtonsoft. Чтобы ее использовать в проекте, ее нужно добавить через nuget и во вьюшке добавить на нее ссылку @using Newtonsoft.Json.
И в примере добавления ссылки я вижу, что Вы добавили jQuery, а не свой js файлик. Но свой скрипт можно добавить прямо на вьюшке, после html разметки, только не забудьте его обрамить в тег <script></script>
vss96, страница view формируется на стороне сервера и код в разметке razor будет выполняться на стороне сервера. JS код и css являются статическими файлами и отдаются сервером как есть и js будет выполняться браузером на стороне клиента. И когда я сказал "на клиенте", я имел ввиду в js коде. Думаю, вы загуглите, как js подключается к вьюшке.
По идее на клиенте вообще не должны быть видны исключения. Их нужно перехватывать и логировать, а клиенту отдавать только подобное "что-то пошло не так".
Denis,
"Странно, у меня такая же нога и не болит" (с)
Причина не в коде, однозначно. Вы хоть скажите что именно не так, какая то ошибка выскакивает или логика не так отрабатывает?