Все потоки
Поиск
Написать публикацию
Обновить
270.56

C# *

Объектно-ориентированный язык программирования

Сначала показывать
Период
Уровень сложности

Интеграция с «Госуслугами». Особенности реализации задачи средствами Workflow Core (часть III)

Время на прочтение14 мин
Количество просмотров3.2K
Ранее мы рассмотрели роль СМЭВ в обеспечении работоспособности портала «Госуслуг», а также общие принципы организации взаимодействия с ним на стороне поставщика сведений посредством Workflow Core.

Поскольку задача интеграции решается через посредника (СМЭВ) и, помимо прочего, с использованием движка, опыта работы с которым прежде не было, то наивно будет ожидать, что всё пройдёт гладко. Некоторым сложностям, с которыми мы встретились при решении задачи, посвящена данная статья.
Читать дальше →

Как мы переосмыслили работу со сценами в Unity

Время на прочтение5 мин
Количество просмотров11K

Unity как движок имеет ряд недостатков, но которые благодаря возможностям для кастомизации и инструментам для кодогенерации можно решить.

Сейчас я вам расскажу о том, как мы написали плагин для Unity на основе пост-процессинга проектов и кодогенератора CodeDom.

Читать далее

.NET Core: Взаимодействие микросервисов через Web api

Время на прочтение21 мин
Количество просмотров54K

Введение


Практически все, кто имел дело с микросервисами в .NET Core, наверняка знают книгу Кристиана Хорсдала “Микросервисы на платформе .NET”. Здесь прекрасно описаны подходы к построению приложения на основе микросервисов, подробно рассмотрены вопросы мониторинга, журналирования, управления доступом. Единственное, чего не хватает — это инструмента автоматизации взаимодействия между микросервисами.

При обычном подходе при разработке микросервиса параллельно разрабатывается web-клиент для него. И каждый раз, когда меняется web-интерфейс микросервиса, приходится затрачивать дополнительные усилия для соответствующих изменений web-клиента. Идея генерировать пару web-api/web-клиент с использованием OpenApi тоже достаточно трудоемка, хотелось бы чего-то более прозрачного для разработчика.

Итак, при альтернативном подходе в разработке нашего приложения хотелось бы:
Структуру микросервиса описывать интерфейсом с использованием атрибутов, описывающих тип метода, маршрут и способ передачи параметров, как это делается в MVC.

Функциональность микросервиса разрабатывается исключительно в классе,
реализующим этот интерфейс. Публикация конечных точек микросервиса должна быть автоматической, не требующей сложных настроек.

Web-клиент для микросервиса должен генерироваться автоматически на основе интерфейса и предоставляться через Dependency Injection.

Должен быть механизм организации редиректов на конечные точки микросервисов из главного приложения, взаимодействующего с пользовательским интерфейсом.
Читать дальше →

Сервер Игры на MS Orleans — часть 3: Итоги

Время на прочтение8 мин
Количество просмотров3.4K


Привет, Хабр! Я продолжаю изучать MS Orleans и делать простенькую онлайн игру с консольным клиентом и сервером работающим с Orleans грейнами. На этот раз я расскажу чем все закончилось и какие я для себя выводы сделал. За подробностями добро пожаловать под кат.
Читать дальше →

Создание собственного элемента на примере таблицы на C# для Windows Form

Время на прочтение6 мин
Количество просмотров28K
Доброго времени суток!

В данной статье я опишу создания своих элементов для C# Windows Form.

Для примера буду создавать таблицу со всем функционалом DataGridView. Позже перейдем на свои элементы. Создание первого элемента разобьем на несколько уроков. В данном уроке произведем от рисовку таблицы, а также: создание столбцов, строк, ячеек.

Для написания будем использовать .Net FrameWork 4.7.x, среда разработки Visual Studio 2019.

В первую очередь создадим обычный проект Windows Form. Думаю не нужно это показывать. А уже потом создаем проект «Библиотека элементов управления Windows Form»(Назовем его CustomControl).

Далее у нас будет создан файл UserControl.cs. Удаляем его и создаем обычный класс TableCustoms.cs.Наш класс будет наследоваться от класса Control.
Читать дальше →

Просто о NModbus (RTU)

Время на прочтение2 мин
Количество просмотров28K

Теория


Modbus — коммуникационный протокол, основанный на архитектуре ведущий-ведомый (master-slave). Использует для передачи данных интерфейсы RS-485, RS-422, RS-232, а также Ethernet сети TCP/IP.

NModbus – большая библиотека на C#, включающая в себя реализацию всех режимов работы с протоколом. Модель реализации классов этой библиотеки позволяет работать с любым Modbus-устройством, но только с одним, поскольку классы библиотеки инкапсулируют в себе порт, не позволяя реализовать синхронизацию между несколькими Modbus-объектами. Данный протокол достаточно популярен при разработке разной периферии для умного дома, а так же интернета вещей.
Команды
Руководство, с перечнем всех команд можно найти в официальном мануале, там так же есть примеры кода для TCP/IP соединений.

Итак: для того, чтобы управлять чем-либо, нам необходимо знать, что и куда отправлять. Значит нам нужна карта регистров.

Уточню, что ячейки регистра бывают:
1. Только для чтения
2. Для чтения и записи
3. Только для записи(подтверждение записи допустимо выдавать кодом ошибки)

Самая простая карта, выглядит примерно таким образом:
Скриншот


Читать дальше →

WPF DataGrid. Борьба за Template

Время на прочтение4 мин
Количество просмотров20K
Всем привет!

Надеюсь, своей статьей я внесу ясность в вопросе связки XML представления DataGrid с его кодовым собратом. Для этого лучше всего использовать конкретный пример.
Читать дальше →

Как мы подключали Prometheus

Время на прочтение9 мин
Количество просмотров18K

Как-то мне предстояло разобраться с метриками для нашего API, как всегда (нет времени?!) дописать позже — очень сложно и ещё не внедрили — значит пора внедрять. После некоторых скитаний в сети, самой популярной системой мониторинга, как мне показалось, был Prometheus.


При помощи Prometheus мы можем отслеживать различные ресурсы компьютера, такие как: память, загрузка процессора, диска, сети. Также нам может быть важно посчитать количество обращений к методам нашего API или измерить время их выполнения, ведь чем больше нагрузка на систему, тем дороже время её простоя. И тут нам на помощь приходит Prometheus. В данной статье приводятся, как мне кажется, основные моменты для понимания работы Prometheus и для добавления сбора метрик в API. Поэтому начнём с самого банального, с небольшого описания.

Читать дальше →

Прототипирование мобильной игры, с чего начать, и как это делать. Часть 2

Время на прочтение9 мин
Количество просмотров3.1K
Для тех кто пропустил первую часть — Часть 1
Следующая часть — Часть 3

Если кому интересно почитать про используемый ивент агрегатор, то вам сюда, но это не обязательно.

Итак, начинаем собирать всё в кучу



Читать дальше →

Обобщённое копирование связных графов объектов в C# и нюансы их сериализации

Время на прочтение7 мин
Количество просмотров6.5K
Задачи по копированию отдельных объектов и связных графов часто встречаются в программировании. Методов их решения существует несколько в зависимости от исходных условий и требований. Цель статьи — рассмотреть ключевые разновидности решений, обозначить область применения, выделить преимущества и недостатки.

image
Читать дальше →

Растянуть Canvas и элементы внутри него по всей клиентской области

Время на прочтение4 мин
Количество просмотров6K
Во время работы над нашим десктопным приложением столкнулся с такой задачей: имеется элемент-график с некоторыми настройками для отображения (реализован в виде ControlTemplate подключаемого через привязку в ContentControl), к имеющимся настройкам нужно было добавить группу дополнительных. Чтобы не засорять уже имеющийся интерфейс, я решил поместить список этих настроек в элемент Expander, который, при необходимости, можно было бы развернуть, а в остальное время график занимал бы максимально возможное полезное пространство.

Один из способов размещения элементов — под катом.
Подробности

История персонажа: менеджеры звука, рекламы и языка в Unity3D

Время на прочтение15 мин
Количество просмотров6.1K
Меня зовут Элай и я… червь.

Да-да, Вы не ослышались. Самый обычный кольчатый червь, который сейчас скачет по клавиатуре и переставляет грузики, чтобы Вы, мой дорогой читатель, могли насладиться знаками препинания и заглавными буквами. Однажды я издам книгу «Быстрая печать на клавиатуре для кольчатых червей и их зомби-половинок за 23 года». Возможно, до конца этой книги не доживет ни один червь, но должен же быть какой-то изъян в совершенно безукоризненной книге.

В любом случае, это уж точно будет раньше, чем Создатели самостоятельно разродятся написать статью обо мне и моих аппетитных внутренностях. А писать есть о чем!
Читать дальше →

Альтернативный Sound Manager для мелких и средних проектов на Unity3D

Время на прочтение10 мин
Количество просмотров10K
imageНа написание данной статьи меня мотивировала другая статья о пригодном для использования в маленьких проектах менеджере звуков. В данном посте я опишу некоторые недостатки, которые автор не перечислил, и предложу свой вариант реализации, на мой взгляд, исправляющий их.

Данная статья будет полезна как начинающим разработчикам для приобретения опыта и получение готовой наработки, так и заядлым архитекторам, в офисах которых не утихают споры о значимости отделения вида от модели и удаления статики из кода. Я уверен в том, что решение, предложенное мною, не является полностью универсальным, и имеет свои недостатки, однако важным и приятным элементом для меня стало бы то, что каждый заинтересованный хабраюзер почерпнул бы полезное для себя и улучшил собственные модули, используя мои советы.
Читать дальше →

Ближайшие события

Используем DataGrid в WPF

Время на прочтение4 мин
Количество просмотров121K
Не так давно мне потребовалось использовать таблицу в приложении на C#. По наивности я подумал, что буду использовать всё самое свежее и выбрал для проекта WPF вместо WinForm и, конечно, взял самый свежий .net framework 4.5. Тут-то и начались проблемы. Как всегда, я решил, что в Яндексе найдётся всё, но не тут то было — в интернете (вернее в РУнете) вообще ничего о DataGrid нет. Постоянно, как бы хитро не изменял запросы, я попадал на DataGridView из WinForm. Самое интересное в том, что платформа WPF полностью переработана и многое из того, что работало в WinForm в WPF не работает вообще никак.

Интересно также и то, что WPF должен быть как бы легче в использовании, ведь в Microsoft отделили дизайнеров от программистов, добавили векторную систему визуализации, язык XAML и прочее.

После продолжительного негодования я открыл большую и толстую книгу по WPF. И вот, чудо! Там было всё, как изменить размер, переименовать и перекрасить что угодно и как угодно, но о том, как элементарно достать запись из DataGrid не было и слова.

Отчаявшись, я решил было перейти на WinForm, но вспомнив старую добрую пословицу «если программа не работает, то проблема не в коде, а в программисте», решил разобраться в проблеме и (правда не помню на каком сайте) нашёл решение (это был сайт на английском языке в самых чёрных глубинах интернета). Название сайта вспомнил, ссылка в конце документа.
Читать дальше →

Генерация LINQ to SQL кода для SQLite в .NET (C#)

Время на прочтение3 мин
Количество просмотров17K
На C# я пишу редко, и в основном все наши приложения и сервисы подключаются к источнику данных, используя MSSQL сервер или службы баз данных. И вот настало время написать приложение, используя не сервер, а локальную БД. Немного погуглив, я внезапно выбрал SQLite.

Предисловие


У всех наших заказчиков были требования к коду:
  • установленное именование переменных;
  • группировка кода (конструкторы, переменные, методы, события...);
  • табы и форматирование (каралось смертной казнью);
  • за самописные SQL запросы разработчик удалялся из команды.

Исходя из вышеперечисленного, для баз данных конечно же были использованы классы LINQ to SQL, связанные с реляционными объектами.
Читать дальше →

AccountLogic 2.0: доведенная до ума, но не до окончания

Время на прочтение11 мин
Количество просмотров3.1K
Предысторию создания данного «продукта» можно проследить по постам на Хабре (последний, посвященный выпуску версии 1.0, находится здесь).

В версию 2.0 добавлены функции, позволяющие говорить о некотором, пускай не окончательном, приближении к потолку методологических возможностей.

На сегодняшний день «ЭкаунтоЛогика» (новое обрусевшее название «Учетная Логика») позволяет – по крайней мере, должна позволять согласно спецификации – достаточно многое.

Возможности Учетной Логики
√ Создавать и редактировать учетные объекты в соответствии с их вещной природой.
√ Отслеживать не только их прошлые, но и будущие изменения (обязательства) с точностью до секунды.
√ Оценивать учетные объекты по произвольному числу измерителей.
√ Интегрировать в объекты и действия готовые справочники.
√ Согласованно передавать объекты между пользовательскими базами.
√ Автоматически выполнять повторяющиеся действия.
√ Отслеживать материальные связи между объектами.
√ Привязывать файлы к отдельным объектам, действиям или папкам.
√ Вести плановые, параллельные основным, базы данных.
√ Составлять иерархические отчеты (отчетные папки), в том числе с учетом курсовых разниц и сравнительно с плановыми данными.
√ Просматривать данные в табличном режиме и в режиме иконок.


Наглая реклама, не отменяющая того очевидного факта, что код любительский с вытекающими отсюда тяжелыми последствиями. При этом заложенная в программу метода профессиональна: создана на основе теоретической базы, для разработки которой потребовалось десятилетие.

Читать дальше →

CLRium #2 принимает DevExpress CodeRush и запускает ядро на Ubuntu Linux. И это не шутка

Время на прочтение1 мин
Количество просмотров682
Пока страна готовит шутки на 1-е апреля, мы рады объявить о том, что у нас, на CLRium, в субботу будет выступать Павел pavsenin Авсенин из команды DevExpress CodeRush с докладом по Code Coverage в .Net. От разработчиков продукта CodeRush компании DevExpress мы узнаем:

  • какое бывает покрытие кода, как оно считается и каким образом работают инструменты, которые его считают
  • напишем с нуля свой простой инструмент который будет уметь считать покрытие кода по методам
  • в процессе написания познакомимся с Profiling API и удивительными вещами, которые он позволяет делать с приложениями выполняющимися под управлением CLR
  • коснемся технологий COM и ATL, необходимых для работы с Profiling API
  • покопаемся во внутренностях тела метода, узнаем досконально как оно выглядит, включая разбор заголовка и SEH — таблиц
  • научимся подменять тело метода на лету, во время выполнения программы!


Помимо всего прочего, Андрей Акиньшин, в процессе подготовки к семинару активно создает и добивается закрытия Pull Requests прямо в репозитории ядра CLR, параллельно запуская примеры на Ubuntu Linux. Шайтан, не иначе!

Цена — совершенно не изменилась: 2,000 руб. Что для малолитражки — 1,5 заправки.

cool Регистрируемся!
Контакты

Урок 1.1 — Акторы и ActorSystem

Время на прочтение4 мин
Количество просмотров25K
image

И вот мы здесь! Добро пожаловать на первый урок.

В этом уроке вы создадите ваши первые акторы и будете введены в основы Akka.NET.

Основные понятия / предпосылки




В этом первом уроке вы узнаете основы создания консольного приложения с вашей первой системой акторов и простыми акторами внутри. Мы создадим два актора, один для чтения с консоли, и один для записи после некоторой простой обработки.
Читать дальше →

Optical Character Recognition силами .NET

Время на прочтение4 мин
Количество просмотров9.4K
Для примера я создал на популярной площадке, которая отображает номера в виде картинок, объявление.

Читать дальше →

Das Experiment, или несколько дней жизни без Resharper'a

Время на прочтение4 мин
Количество просмотров6.3K

Вступление


image

Здравствуйте, меня зовут Vba и я resharper-о зависимый разработчик. Я использую студию(на данный момент 2013.3) в моей профессиональной деятельности для разработки ASP .NET MVC / JavaScript / HTML5 приложений. Неделю назад на «исходе*» моей resharper-лицензии я задался вопросом, а смогу ли я жить и работать без него? Вдохновленный вот этим и этим постами и тем фактом что меня задолбали постоянные подвисания студии и ее прожорливость** я решился на эксперимент.
Далее

Вклад авторов