Канал для программистов и разработчиков, которые хотят стать настоящими архитекторами информационных систем. О программировании на платформе .NET и не только на NET. А также принципы, правила, тенденции, советы и обмен мнениями. Интересные ссылки, советы по реализации, обучение, рефакторинг и многое другое.
Задать вопросы можно непосредственно в комментариях к конкретному видео или в блоге www.calabonga.net через форму обратной связи.
Тут под роликом есть один комментарий с критикой об усложнении. Я не хочу поддерживать ни одну из сторон. Т.к. понимаю, что в принципе создавать подобные видеоматериалы, это всё-таки не лёгкий труд. Пусть тогда это прозвучит, как мнение ни к чему не обязывающее. Я открыл ролик, потому что он называется "Микросервисы: Коммуникации через очередь сообщений", но в ролике ооочень много моментов, абсолютно не связанных с "Коммуникации через очередь сообщений". Просто, видно, что автор делится теми знаниями которыми он обладает и темы навыками которые у него есть. И сложилось впечатление, что это больше похоже на халеварство, из серии смотрите, что умею и сколько всего. Я пришёл на этот видео ролик с одной определённой целью и исключительно исходя из его названия, старался эту цель закрыть. Но, спустя несколько минут просмотра, я понял, что целевой контент который мне нужен из этого ролика составляет от силы 10%-15%. Если бы ролик имел другое название и носил бы иную цель, тогда, придя к этому видео с этой целью, я бы поставил очень высокую оценку. А так я не могу сказать, что я многое узнал именно о том, что меня интересовало в этом ролике. p.s. Я просто увидел, восхитительные навыки и знания автора распылённые по всей сфере микросервисов, которыми он так старательно пытался поделиться, что бы у новичка сложилось впечатление, ну не чё се вот это уровень, вот это я понимаю, альфа код. Мне не стало понятнее и видно не мне одному. А то, что название ролика вводит в заблуждение это правда обидно.
@@orhanaliyev9774 показать "просо" каждый может, попробуй объяснить! И, кстати, зачем вернулся-то? А главное, зачем одно и тоже видео смотреть? Ясно понятно, что оно не измениться... 😄😄
00:00 Установка шаблонов v3.1 02:13 Создание CRUD вариант 1 04:07 _создание новой сущности Car 06:13 _создание ReadOnly контроллера 09:49 _создание Writable контроллера 13:50 _настройка маппинга для Car 29:10 Создание CRUD вариант 2 31:10 _создание контроллера 32:53 _создание методов контроллера 49:40 Заключение
Сергей, я всю свою карьеру, уж так вышло, работал на монолите, и вот недавно всё же нашел время, чтобы написать пет проект, чтобы микросервисы пощупать. И как только открыл студию, у меня возник ступор. Не знал с чего начать вообще. Полез искать какие-то базовые шаблоны и наткнулся на ваши видосы. Больше спасибо! Процетания каналу. Побольше донатеров!
Интересная тема, которая уже давно у самого сидит в подсознании и просит найти решение, но как всегда нет на это времени:-) Спасибо за видео! Небольшая идея для усложнения shell'а, - запускать модули не через кнопку "запуск", а скажем через контекстное меню самого модуля. При этом контекстные меню модулей могут быть уникальными.
на пятой минуте, при объявлении свойства Name, вы добавляете в конце null!, и говорите, что свойство не может быть null. ! - это же оператор null-forgiving,! - оператор (допускающий значение NULL) (справочник по C#). Наткнулся на такое сообщение - И вот как раз восклицательный знак после null -- это т.н. null-forgiving оператор, который позволяет указать что значение null допустимо. Можете немного разжевать, запутался =) Или , так как string ссылочный тип, то значение null недопустимо, именно значение
@@glorglorsky7987 Если кратко, то ... вы уже использовали (!) раньше в качестве оператора "not". Однако, начиная с C# 8.0 и его новой функции "nullable-reference-types", оператор получил второе значение. Его можно использовать для типа для управления допустимостью значений NULL, тогда он называется "Оператор прощения значений null". learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-forgiving github.com/dotnet/csharplang/blob/main/proposals/csharp-8.0/nullable-reference-types-specification.md
Добрый день, подскажите, пожалуйста, не работает bind:event и onclick. Куда стоит обратить внимание? Тоесть почему-то не включилась привзяка к данным, хотя "тестовые" данные отобразились на форме.
Особого желания нет, потому что.... 1. Authentication (aka verifying username and password when a user logs in) 2. Manage the list of users or roles. Да и других причин не мало... Auth0 - это платформа управления идентификацией, которая предоставляет услуги аутентификации и авторизации, в то время как Casbin - это библиотека управления доступом с открытым исходным кодом для применения политик авторизации. Несмотря на то, что и Auth0, и Casbin предлагают функции авторизации, у них есть несколько ключевых отличий. Масштабируемость: Auth0 - это полностью управляемая платформа, которая обеспечивает высокую масштабируемость и может обрабатывать тысячи запросов в секунду. С другой стороны, Casbin - это библиотека, которую необходимо интегрировать в приложение, а ее масштабируемость зависит от базовой инфраструктуры. Простота использования: Auth0 предоставляет удобную панель управления и набор готовых рабочих процессов, что упрощает разработчикам настройку и управление аутентификацией и авторизацией. В отличие от этого, Casbin требует ручной настройки и реализации кода, что может быть более сложным и трудоемким. Поддержка нескольких поставщиков удостоверений: Auth0 поддерживает интеграцию с различными поставщиками удостоверений, такими как Google, Facebook и Microsoft, позволяя пользователям проходить проверку подлинности через эти платформы. Casbin, с другой стороны, фокусируется на обеспечении детального контроля доступа на основе политик, но не предлагает встроенной интеграции со сторонними поставщиками удостоверений. Модель ценообразования: Auth0 следует модели ценообразования на основе подписки, в которой пользователи платят в зависимости от количества активных пользователей или запросов на аутентификацию. Casbin, будучи библиотекой с открытым исходным кодом, бесплатна в использовании и не требует никаких дополнительных затрат на базовую функциональность. Управление политиками: Auth0 предоставляет централизованную систему управления политиками, позволяющую администраторам определять и управлять политиками контроля доступа для различных ролей пользователей. Casbin, с другой стороны, требует, чтобы разработчики определяли политики непосредственно в коде, что дает им большую гибкость, но требует дополнительных усилий. Настройка: Auth0 предоставляет ряд встроенных функций и опций настройки для удовлетворения различных бизнес-требований, включая многофакторную аутентификацию и вход через социальные сети. Casbin, будучи библиотекой, позволяет разработчикам настраивать логику управления доступом в соответствии с их конкретными потребностями, предоставляя им больше контроля, но требуя больше усилий при разработке. Подводя итог, можно сказать, что Auth0 предлагает полностью управляемую платформу управления идентификацией с высокой масштабируемостью, простотой использования и поддержкой нескольких поставщиков удостоверений, в то время как Casbin - это библиотека управления доступом с открытым исходным кодом, которая обеспечивает детальный контроль и возможности настройки без дополнительных затрат.
Добрый день. Почему после внедрения ViewModel в компонент Razor - Counter нажатие кнопки помимо увеличения счетчика в VM также приводит и к перерисовке этого значения в UI? CounterModel.Count это не параметр компонента, на событие в VM мы еще не подписались и ниоткуда не вызываем StateHasChanged. Каким образом Blazor понимает, что нужно обновить значение?
Ты можешь удалять и возвращать запись много раз и тогда просто анализ deletedAt может не работать. Хотя сново. Можно сделать, что еслии null, то удалён, not null, не удалён
@@SergeiCalabonga Ок. Микросервисы Product и Cart. Добавляем продукт в корзину. Это значит Cart паблишер, запрашивает продукт из консьюмера Product. У Product есть ещё консьюмеры на создание и удаление продукта (для своей базы данных). Создаю ещё один микросервис который выполняет эти запросы?
@@artemignat7764 интересно, а "паблишер", "консьюмер" - это что за звери? Может всё-таки или до конца по-русски "публикатор" и "потребитель", или до конца по-английски "publisher" и "consumer"? Читать очень сложно, да и не красиво, простите. Англицизмы меня сбивают с толку. :( А если по делу, то.... 1. правила, которыми вы руководствуетесь для создания новых сервисов мне не понятно. 2. Какие обязанности на сервисе Product? Пред положу, что это каталог товаров. 3. Какие обязанности на сервере Cart? Если Product - это каталог товаров. 4. Почему это два разных сервиса? (Вам скучно было с одиним,)
@@SergeiCalabonga Product -сервис каталога товаров. В нём я могу продукт добавлять, удалять, редактировать. Сервис Cart может добавлять продукт, путям обращения к Product и удалять продукт и корзины. На уровне crud запросов, я понимаю как эти сервисы общаются между собой. И понимаю как Cart может получить продукт от Product через MassTransit. Но я не понимаю как мне реализовать три действия: добавление,удаление,редактирование продукта в Product с помощью MassTransit с брокером. Я должен ещё создать микросервис для этого?
@@SergeiCalabonga Product - сервис каталога товаров. Сервис Cart может добавлять и удалять продукт.Он обращается к Product, только для получения продукта через MassTransit.В сервисе Product можно продукт добавлять,удалять,редактировать. Это делается админом через crud запросы к api сервиса Product. То что я описал, считается микросервисной архитектурой или же нужно создавать ещё один микросервис который будет делать эти запросы через MassTransit?
Не ну чат жпт гениально решает задачу генерации описания к коммиту, доктайпит очень даже хорошо, документацию по проету пишет, puml рисует, тестики генерит, так шо зря вы это вот так, зря-зря-зря
Для каждого типа задач свой интеллект? Оригинально! Обучить программу выдавать случайные тексты по теме... это не креатив, это больше аналитика. В любом случае посмотрим... может я и не прав.
@@Denis778322877 пока вы его используете "по-детски" - это будет бесплатно, как только что-то серьёзное потребуется туда положить, то welcome min.io/pricing
Даешь видео про интеграционное тестирование! Можно получить из swagger описания какие методы есть. Но их бывает очень много и они однотипные. Если библиотека что бы можно было сгенерировать тесты по описанию swagger для CRUD например?
Пишу микросервис по автозапчастям. На русскоязычных сайтах я заметил что , путь к ресурсам в URL описаны русскими словами. Пример ".../maslyanye-nasosy-i-detali-k-nim/" В коммерции так можно делать?
Явного запрета на использование конкретных символов в спецификации нет. Теоретически, можно даже кириллицу использовать. Но разве это красиво? Раз это не несет за собой рой проблем?
@@SergeiCalabonga Извините. Вопрос не по теме видео. У автозапчасти есть название, артикул и название производителя. Можно их объединить в value object?
@@artemignat7764 С точки зрения банальной эрудиции, название, артикул и название производителя - это просто свойства для сущности "Автозапчасть", тут и не пахнет Value Object.
Спасибо за очень познавательное видео для начинающего! Теперь стал лучше понимать DI контейнеры и как их использовать! Надо будет поэкспериментировать теперь самостоятельно. P.S. Хотел еще спросить, какой тулзой вы чертили (поверх кода в студии) поясняющие стрелки , видимо это был какой-то скриншотер?
К сожалению вы неправильно поняли мой вопрос, я имел ввиду какие есть альтернативные крутые библиотеки для работы с Apache Kafka, из всех мне известны только MassTransit и Confluent. MassTransit мне показался удобнее (внутри у него тот же Confluent), но все равно спасибо вам за видео
Я бы не советовал использовать Hangfire. Как показала практика, если говно и моча в голове у авторов, то одной только сине-желтой тряпкой в шапке сайта/репозитория авторы могут не ограничиться
@@SergeiCalabonga автор Hangfire в 2022 году второпях свалил из РФ в Эстонию, поставил флаг украины в шапке сайпа и разорвал все связи с заказчиками из РФ
@@timoxa_dev автор - я! Я до сих пор в РФ! Я никуда не собираюсь! Ни на одном из моих сайтов ничего подобного нет! Откуда такая бредовая информация? Что за хрень?