Ми раді повідомити вам про те, що завершилася пленарна доповідь онлайн-трансляції запуску Visual Studio 2017, на якому провідні інженери і керівники Microsoft представили майбутнє інструментів розробки і довгоочікувана Visual Studio 2017 стала доступна для розробників по всьому світу!



Читати далі →

Як відомо, в .Net Core, на даний момент, немає AppDomain, а WCF тільки SOAP клієнт .Net Core, WCF і ODATA клієнти.

Звичайно, завдання можна вирішити і через Web Api з WebSockets для виклику подій. Але, я просто пропоную альтернативне рішення на маршалинге по TCP/IP і створення об'єктів, і виклик методів на стороні сервера за допомогою Reflection.

Ось як виглядає віддалений виклик методів і властивостей. Приклад взято звідси Основи перевантаження операторів:

// Виведемо повідомлення в консолі сервера
string typeStr = typeof(Console).AssemblyQualifiedName;
var _Console = wrap.GetType(typeStr);// Отримаємо тип на сервері по імені
// "Hello from Client" буде виведено в консолі сервера
_Console.WriteLine("Hello from Client");

// отримаємо тип по імені класу TestDllForCoreClr.MyArr
// Із збірки TestDll.dll
var MyArr = wrap.GetType("TestDllForCoreClr.MyArr", "TestDll");

// Створимо об'єкти на стороні сервера
// і отримаємо посилання на них
var Point1 = MyArr._new(1, 12, -4); // new MyArr(1, 12, -4);
var Point2 = MyArr._new(0, -3, 18); // new MyArr(0, -3, 18);

// Всі операції з об'єктами PointX відбуваються на стороні сервера
Console.WriteLine("Координати першої точки: "+Point1.x+" "+Point1.y+" "+Point1.z);
Console.WriteLine("Координати другої точки: "+Point2.x+" "+Point2.y + " "+ Point2.z);

var Point3 = Point1 + Point2;
Console.WriteLine("\nPoint1 + Point2 = " + Point3.x + " " + Point3.y + " " + Point3.z);
Point3 = Point1 - Point2;
Console.WriteLine("Point1 - Point2 = "+ Point3.x + " " + Point3.y + " " + Point3.z);
Point3 = -Point1;
Console.WriteLine("-Point1 = " + Point3.x + " " + Point3.y + " " + Point3.z);
Point2++;
Console.WriteLine("Point2++ = "+ Point2.x + " " + Point2.y + " " + Point2.z);
Point2--;
Console.WriteLine("Point2-- = " + Point2.x + " " + Point2.y + " " + Point2.z);

Читати далі →

Як тільки Microsoft оголосила про те, що .NET стане opensource і зможе працювати не тільки на Windows, але і на інших операційних системах, що було дуже актуально у зв'язку з намітився трендом на імпортозаміщення, перехід на Linux і т. п., мене зацікавив цей проект. Я став шукати інформацію. І Віртуальної Академії Microsoft знайшов курс «what's New with ASP.NET 5». Але проект ще тільки розвивався. Вносилися зміни. Версії не завжди були сумісні між собою. І я вирішив почекати, поки процес стабілізується. З'явиться фінальна версія. І, можливо, виправлення до фінальної версії, як це нерідко трапляється.

В результаті замість ASP.NET 5 у результаті з'явилися .NET Core 1.0 ASP.NET Core 1.0. Існуючий «повний» фреймворк .NET був обмежений Windows .NET Core став кросплатформним і націлений на роботу в хмарі. Я вирішив повернутися до його вивчення і подивитися, що зараз мені можуть запропонувати Віртуальної Академії Microsoft.
І ось, що я знайшов для себе.

Читати далі →

DotNext 2016 Moscow: Спокій після бурі



У червні, коли конференція DotNext проходила в Петербурзі .NET-світ переживав складний момент: Microsoft раптово змінювала багато .NET Core вже на стадії release candidate. Тепер, коли пройшла московська версія конференції, можна порівняти і зрозуміти: як минулі півроку позначилися на ситуації? А які доповіді московської були присвячені не останнім потрясінь, а «вічних проблем»? На Хабре вже з'явився відгук очима глядача, а тепер ми публікуємо свій текст.

Читати далі →

ServiceStack & .NET Core

Півтора місяці тому популярний фреймворк для створення веб-сервісів і додатків ServiceStack нарешті випустив реліз під .NET Core. У цьому огляді я хочу розповісти трохи про самих пакетах платформи і що доведеться переробити в своїх проектах використовують ServiceStack, що б перенести їх на платформу .NET Core.

Читати далі →

Портування великого проекту .NET Core

Дано: система з 10-річною історією, розроблена на C#, з досить великою кодовою базою. Серверною частиною системи є веб-сервіс (хоститься в IIS, протокол SOAP), який активно працює з базою даних, з кешуванням в Redis, з різними перевірками безпеки, пошук у Elasticsearch.

Завдання: забезпечити роботу системи на Linux без втрати в продуктивності з мінімальними рухами.

Читати далі →

Універсальна система керування даними на базі технологій скаффолдина і платформи .NET Core

Кілька років тому я реалізував ряд проектів, для управління якими використовувалася система управління заснована на ASP.NET Dynamic Data. У свій час ця система заощадила досить багато часу і ресурсів. Але як відомо, в ІТ все розвивається дуже стрімко. Не так давно вийшла у реліз платформа .NET Core, основним нововведенням якої була підтримка кроссплатформенности. Це в свою чергу дозволило мені мігрувати ряд невеликих проектів, а також проектів, які я підтримую на некомерційній основі на бюджетні сервера від Digital Ocean, які, як відомо, підтримують тільки ОС сімейства Linux. Коли справа дійшла до системи управління переді мною стояв вибір — з мінімальною зміною коду портувати проект під Mono, або переписати з нуля використовую нові можливості .NET Core. Зваживши всі за і проти, я вибрав другий варіант. Що з цього вийшло і що я збираюся отримати ви можете дізнатися під катом.


Читати далі →

Self-contained дистрибуція .NET Core додатків


Якщо ви раптом пропустили, то .NET тепер open source, а .NET Core це безкоштовний, open source, багатоплатформовий фреймворк, який ви можете завантажити і запустити за час <10 хвилин. Ви можете отримати його на Mac, Windows і на пів-дюжини Unix-ів з сайту dot.net Спробуйте його разом з безкоштовною, кроссплатформної Visual Studio Code і ви будете писати на C# F# завжди і скрізь.

Читати далі →

.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 ки.

Читати далі →

.Net Core, WCF і ODATA клієнти

Хотів написати статтю про використання цих технологій в 1С, але потім вирішив поки написати про використання WCF, ODATA в .Net Core. Тому в цій статті не буде так дратівної всіх Руслиша і Ъ. .Net Core технологія молода і швидко розвивається. При цьому і відрізняється від свого старшого брата.

В VS 2015 Update 3 для програми під .Net Core немає звичного нам елемента меню «Додати Посилання на Службу». Замість цього є «Add Connected Services». Про те, як його встановити, можна подивитися тут WCF Connected Service for .NET Core 1.0 and ASP.NET Core 1.0 is now available. Для піддослідного сервісу був обраний Web сервіс ощадбанку Веб-сервіс для отримання щоденних даних (курси валют, облікові ціни драг. металів...). Загалом підключився по методичці вище. Отримав опис класів. Але при цьому є відміну від великого брата.

Читати далі →