Similar presentations:
Разработка для HCM в среде .Net
1. Разработка для HCM в среде .NET
РАЗРАБОТКА ДЛЯHCM В СРЕДЕ
.NET
30-31 марта 2023
AZIMUT Сити Отель Олимпик Москва
2. Разработка для HCM в среде .NET
РАЗРАБОТКА ДЛЯ HCM В СРЕДЕ.NET
Исходный код c# в HCM
Проект библиотеки .Net и ее подключение к HCM
Обработка данных
Вызов функций spxml из .Net
Оценка производительности и отладка
3. Предисловие / История в контексте использования .NET
ПРЕДИСЛОВИЕ / ИСТОРИЯ В КОНТЕКСТЕ ИСПОЛЬЗОВАНИЯ .NET.Net 3.5/4.0
COM
2008-2012
.Net Core 3.1
Datex.Core
2013-2018
.Net Core 3.1
ASP .Net
2019
.Net 5
Datex.Global, Datex.Core.CSharp
2020
.Net 6/7
Distributed Websockets, Service Registering
2021 - 2023
4. Исходный код c# в HCM
//#r “reference.dll“…
using System;
using Datex.Global;
…
namespace Agents
{
public class ServerAgent
{
public static void Run(DatexGlobal dg)
{
}
}
}
5. Исходный код c# в HCM
Плюсы:• Позволяет быстро написать что-нибудь простое на c#
• Не требует среды разработки и .Net на стороне клиента
Минусы:
• Отсутствие нормальной среды разработки, отладки кода и
контроля версий
6. Проект библиотеки .Net и ее подключение к HCM
ПРОЕКТ БИБЛИОТЕКИ .NET И ЕЕ ПОДКЛЮЧЕНИЕ К HCMТребования для подключения собственных библиотек:
• Стандартная библиотека .Net (Any CPU)
• Публикация в разрешенной директории dotnetcore/<dir>
• Перечисление директории в DOTNETLIBS-PATH файла xHttp.ini
7. Проект библиотеки .Net и ее подключение к HCM
ПРОЕКТ БИБЛИОТЕКИ .NET И ЕЕ ПОДКЛЮЧЕНИЕ К HCMПлюсы:
• Полноценная среда разработки и отладка кода
• Контроль версий
Минусы:
• «Высокий» начальный порог входа для создания кода
• Монопольное использование xHttp при отладке и публикации
8. Вызов функций spxml из .Net Proxy Dynamic Object
ВЫЗОВ ФУНКЦИЙ SPXML ИЗ .NETPROXY DYNAMIC OBJECT
public static void Run(DatexGlobal datexGlobal)
{
…
var ret1 = (TargetType)datexGlobal.Proxy.<SpxmlFunc>(args…);
…
var ret2 = (TargetType) datexGlobal.Proxy.<HCMObject>.<Func>(args…);
}
9. Вызов функций spxml из .Net библиотеки кода.
ВЫЗОВ ФУНКЦИЙ SPXML ИЗ .NETБИБЛИОТЕКИ КОДА.
public static void Run(DatexGlobal datexGlobal)
{
…
var lib = datexGlobal. OpenCodeLib (libUrl);
IntPtr ret_ptr = DatexGlobalEssentials.InvokeGlobalEnv
(
BmCallType.Method,MethodName,args, lib.ptr, lib.env_ptr,
lib.src_ptr, true, typeof(IntPtr)
);
var retObj = new JsObject(ret_ptr, lib.ptr, lib.env_ptr, lib.src_ptr)
…
}
10. ФОНОВЫЕ ПРОЦЕССЫ
private void BackGroundTask (){
try
{
datexGlobal = new DatexGlobal(StaticPrime.globalEnv.globalEnvObjectPtr, IntPtr.Zero);
…
}
catch(Excecption ex)
{
…
}
}
11. ОЦЕНКА ПРОИЗВОДИТЕЛЬНОСТИ И ОТЛАДКА
• Полноценная отладка в VS, VS Code, etc…• Диагностика производительности
dotnet-trace collect -p <pid>
PerfView
Visual Studio
JetBrains DotTrace
12.
ВопросыИ может быть ответы…
programming