Пропоную вашій увазі переклад статті про «пастки» в С#. Дана стаття буде корисна починаючим програмістам поки ще не знайомі з тонкощами мови.

Приємного читання.



«Це все дрібниці, дрібниці. Але немає нічого важливішого дрібниць.»

Читати далі →

Як запустити фоновий процес Asp.net

Мені знадобилося запустити фоновий процес ASP.NET. Виникло питання: як краще це зробити? Трохи погугливши в блозі SCOTT HANSELMAN, я знайшов запис «How to run Background Tasks in ASP.NET». Стаття не дуже нова – 2014 роки, але цілком актуальна, тому я вирішив перекласти її на російську мову.

Читати далі →

Готуємо ORM не відходячи від плити. Генеруємо SQL — запит на основі бінарних дерев виразів

image

Стаття є продовженням першої частини. У пості розглянемо побудова SQL — запиту за об'єктної моделі типу, у вигляді бінарного дерева виразів та супутні теми параметризації SQL — запитів, оптимізації рефлексії. Теми цієї статті самі по собі вельми обособленны, тому можна читати особливо не звертаючи увагу на першу частину. Ще раз зазначу, дане рішення, є «справа була ввечері, робити було нічого» і не претендує на лаври промислового продукту.

Читати далі →

ASP.NET Core, Angular 2, SignalR для чайників

Всім привіт! Хочу поділитися своїм досвідом використання ASP.Net Core і Angular 2 з використанням SignalR.

Будучи програмістом 1С, часто доводиться вирішувати завдання, які на 1С вирішити складно або неможливо. Дуже допомагає знання .Net. Але ось, що стосується клієнтської частини сайтів, то тут багато тонкощів (JavaScript, CSS, JQuery ітд), які швидко забуваються, якщо ними не користуватися.

Angular 2 дозволяє значно спростити створення клієнтської частини. Так TypeScript значно ближче до C# (і головне дозволяє використовувати Руслиш), а з шаблонами нескладно розібратися знаючи Razor і Xaml.

Головне, що ви працюєте з даними, за аналогією з WPF. При цьому є купа контролів.

Хочу поділитися з такими ж бідолахами як я, або хто тільки починає вивчення Angular 2, ASP.Net Core, так як витратив багато часу на пошуки матеріалів для вивчення.

Для тренування на кішках був обраний мій проект 1C Messenger для відправки повідомлень, файлів і обміну даними між користувачами 1С, веб сторінки, мобільними додатками а ля Skype, WhatsApp. Исходники Тут

Поки не вийшов. Net Core 1.2 і NetStandard 2, зараз немає підтримки клієнта для SignalR під .Net Core

Отже, почнемо. Для роботи нам знадобиться:

1. ASP.NET Core + Angular 2 шаблон для Visual Studio
2. Посібник ASP.NET Core
3. Керівництво по Angular 2
4. Керівництво по TypeScript
5. Компоненти від PrimeNG
6. Компоненти Bootstrap

Читати далі →

Можливі нововведення C#



Ви, мабуть, знаєте, що останнім часом Microsoft намагається спілкуватися з спільнотою, отримувати якомога більше відгуків і впроваджувати їх в життя. Не оминула ця мода і команду розробників C#. Розробка нової версії мови, безумовно, не йде за закритими дверима…

Стаття Mads Torgersen під назвою what's New in C# 7.0 вже розібрана вздовж і впоперек. Але є щось, що в ній не було згадано.

Читати далі →

Які перспективи у «немодною» платформи .NET — думки експертів



Платформа .NET з'явилася на початку 2000-х років. Вона об'єднувала під одним дахом кілька мов програмування, що було в новинку для того часу. Але розробники платформи стверджували, що це нововведення несе безсумнівну користь: програмісти почали створювати свої додатки на тих мовах, які знали найкраще, що краще підходили для вирішення своїх завдань.

Ще одним нововведенням платформи .NET була технологія активних серверних сторінок ASP.NET (Active Server Page). З її допомогою можна було відносно швидко розробити веб-додатків, взаємодіючих з базами даних. Важливою особливістю ASP.NET вважалася можливість використання всієї потужності об'єктно-орієнтованого програмування для веб-розробки. Програми, написані з використанням цієї технології, володіють кращою продуктивністю і захистом. Принаймні, в це вірили інженери Microsoft.
Читати далі →

Enum-switch антипаттерн

останнім часом мені часто зустрічається в коді один цікавий шаблон. Він полягає в тому, що для опису невеликого безлічі об'єктів створюється enum, а потім в різних місцях коду значення з перерахування обробляються за допомогою оператора switch.

Як виглядає реалізація даного шаблону, і чим він небезпечний? Давайте розберемося.

Читати далі →

.Net Core, обмін з 1C по TCP/IP між різними пристроями

Почну з «Вести з полів» вийшло оновлення Updates in .NET Core 1.0.1

Головне з цього для мене було Access violation on Windows – coreclr 6460

In Jitstartup, JIT creates a file descriptor for stdout and unconditionally passes it to setmode, without checking for failures. This happens at github.com/dotnet/coreclr/blob/ee680783778ed0abb186ae41a8c861d5cdcadccd/src/jit/ee_il_dll.cpp#L76.

Failure to check for invalid is invalid can result in setmode triggering failfast.


З-за цієї помилки вилітало виняток при виклику статичного .Net методу в 64 біт клієнта 1С

Необроблене виняток за адресою 0x00007FFD76FB8528 (ucrtbase.dll) 1cv8.exe: Неприпустимий параметр був переданий функції, для якої неприпустимі параметри викликають непереборну помилку.


Зараз полагодили і код чудово виконується під 64 розрядним клієнтом на 8.3.9

У прикладах замінив бібліотеки .NET Core на 1.0.1

Хотів написати про SignalR, але поки що можна написати тільки на сервер .Net Core
ASP.NET Core SignalR for Windows 10 UWP App

aspnet/SignalR-Server

Клієнта поки немає.

В WCF поки тільки клієнт під Web-сервіс. ServiceHost немає.

Є стороннє рішення .NET core cross platform remote service invocation

Але вирішив написати рішення з свого досвіду 8 річної давності для обміну даними по Tcp/Ip між ТСД на Win CE і 1С ще 7 ки.

Читати далі →

Yield: що, де і навіщо

Співтовариство .Net розробників завмерло в очікуванні виходу C# 7.0 і нових фіч які він принесе. Кожна версія мови якому вже наступного року виповниться 15 років принесла з собою щось нове і корисне. І хоча кожна фіча гідна окремого згадування, сьогодні я хочу поговорити про ключовому слові
yield
. Я помітив, що початківці розробники (і не тільки) уникають його використання. У цій статті я постараюся донести переваги та недоліки, а також виділити випадки, коли застосування
yield
доцільно.
yield
створює ітератор і дозволяє нам не писати окремий клас коли ми реалізуємо
IEnumerable
. C# містить два вирази використовують
yield
:
yield return <expression>
та
yield break
.
yield
може застосовуватися в методах, операторів та властивості. Я буду говорити про методи, так як
yield
працює скрізь однаково.
Читати далі →

1С,.Net Core. Динамічна компіляція класу обгортки для отримання подій .Net об'єкта в 1С

Це практичне застосування з попередньої статті .Net Core, 1C, динамічна компіляція, Scripting API.

По суті це продовження .NET(C#) для 1С. Динамічна компіляція класу обгортки для використання .Net подій в 1С через ДобавитьОбработчик або ОбработкаВнешнегоСобытия, але для міжплатформового .Net Core. Але в тій розробці я використовував CodeDom. В .Net Core зручніше використовувати Roslyn Scripting API.

Свого часу робив вручну обгортку для WhatsApp, а там більше 30 подій. При цьому весь процес можна автоматизувати за допомогою кодогенерации і в кінцевому підсумку можна цей код динамічно скомпілювати.

«Створення компонент із використанням технології Native API» є метод для виклику зовнішнього події в 1С ExternalEvent. Синтаксис:

bool ExternalEvent(WCHAR_T* wsSource, WCHAR_T* wsMessage, WCHAR_T* wsData) 

Параметри:

• Тип: WCHAR_T*. Рядок з найменуванням джерела події.
• Тип: WCHAR_T*. Рядок з найменуванням події.
• Тип: WCHAR_T*. Рядок з параметрами події.

Але як wsData будемо передавати посилання на об'єкт, створений з параметрів події.

Отже почнемо.
Читати далі →