Для WinFone и прочего есть xamarin. А вот для Linux ничего нет.
Сайт это TypeScript? то там нужно npm install сделать, что бы установить создать папку node_modules
Огромное спасибо за поддержку. Проблема в том, что я один. У меня огромное время уходит на изучение C++, TypeScrpt и еще кучи вещей что бы связать JS-native-Net.При этом я работаю программистом 1С. Все это в свободное от работы время. Плюс я плохой художник. Выложил программы, но на данный момент их скачали всего 4 человека.
Еще раз
Скорость вызова без Proxy 60к вызовов в секунду
Скорость вызова с прокси Proxy 45k вызовов в секунду
Скорость вызова итератора 160k вызовов в секунду
Вызываем функцию
public int ПолучитьЧисло(int число)
{
return число;
}
Код такой
// Протестируем скорость вызовов без Proxy
var start = new Date();
let count = 100000;
let result = 0;
for (let i = 0; i < count; i++)
result += window.CallNetMethod(Id, "ПолучитьЧисло", [1]);
this.speed = Math.round(count / (new Date().getTime() - start.getTime()) * 1000);
// Протестирум это же но через Proxy
start = new Date();
result = 0;
for (let i = 0; i < count; i++)
result +=TO.ПолучитьЧисло(1);
this.speedWithProxy = Math.round(count / (new Date().getTime() - start.getTime()) * 1000);
// Протестируем скорость вызова итератора
let iter = TO.GetNumbers(count);
start = new Date();
result = 0;
for (let i of iter)
result += i;
this.spedCallIterator = Math.round(count / (new Date().getTime() - start.getTime()) * 1000);
NetObject.DeleteNetObjets(TO, Тестовый, iter);
}
Они минимальны по сравнению с http\ws.
При этом часто нужно работать с торговым оборудованием или дисками и прочим оборудованием. Сейчас кстати пишу оберки для использования событий .Net классов
В статье есть тесты на вызовы
Скорость вызова без Proxy 60к вызовов в секунду
Скорость вызова с прокси Proxy 45k вызовов в секунду
Скорость вызова итератора 160k вызовов в секунду
Но сама разработка велась еще раньше. При этом от этого я никаких дивидентов не получаю. В основном тычки «зачем это нужно», но есть конечно и благодарности, но их немного. При этом реально легко можно расширить возможности для 1С. Но и 1С это не нужно. Мои разработки Но я не опускаю руки. Днем программирую на 1С, а вечером еще на C#,C++ и TypeScript.
При этом катастрофически не высыпаюсь. Но в разработке много интересного и я хочу поделиться этим с коллегами, надеясь, что коллеги простят мне мой руслиш и войдут в моё нелегкое положение. При этом я прекрасно понимаю, что получу кучу минусов. Но надеюсь, что за мои труды мне полагается небольшое снисхождение.
На самом деле я не видел где есть полный доступ к классам .Net из браузера. Если подскажешь то буду благодарен. Сейчас например для Linux нет аналога WPF, а моя разработка помогает использовать кроссплатформенный .Net Core в браузере, или просто расширить возможности браузера за счет классов .Net
Проблема в том, что я завожусь, не сплю итд пока не сделаю, то что наметил. Поэтому для меня очень важен сон и душевное спокойствие, иначе я вообще не напишу статью. Еще раз прошу прощения. Но кроме руслиша, там много всего интересного. Что кроме руслиша тебе не понравилось?
Ну у меня и не было цели учить новичков. Главная моя цель показать как можно легко использовать классы .Net в TypeScript и каким образом это достигается. Для меня такие статьи очень познавательны. Здесь собрано много вещей, аналогов которых нет, или их просто сложно найти. На многие вопросы ни на одном форуме не было ни одного ответа. Ну и опять же чем сложен этот пример?
Сразу прошу прощения за руслиш.
// Получим Тип из сборки лежащей в каталоге приложения
let Тестовый = Net.GetType("TestDllForCoreClr.Тестовый", "TestDllForCoreClr");
// Создадим объект используя new
let TO = new Тестовый("Свойство из Конструктора");
// Получим ExpandoObject
var EO = TO.ПолучитьExpandoObject();
let Имя=EO._Имя;// Свойства через _
let Число=EO._Число;
let делегат = EO._ВСтроку;
let res= делегат());// Вызовем как делегат
// Для ExpandoObject можно вызвать как метод
res= EO.ВСтроку());// Для ExpandoObject
Показано как просто можно использовать классы .Net Core
На самом деле здесь много интересного. Это и Proxy и Promise для TypeScript.
Работа с CEF, а так же и Net Core. Кроме того здесь показано как просто можно использовать классы .Net очень близко к кодированию на C#. Здесь очень много информации на любой вкус.
Понятно, но это уже дикое смешение. На самом деле хоть какой то вариант заработал. Но проблема в том, что я 1С ник и занимаюсь в всободное время. .Net знаю неплохо, но вот с С++ и С очень мало практики. Кроме того привык к VS а например Debugging with Visual Studio только для VS 2010 и 2012. Под 2012 у меня не получилось скомпилировать даже пример. Но по обсуждению я так понимаю, что мало кому это нужно. А время на это тратить нужно и не мало. И больше не на реализацию, а на обучение плагинописанию.
Смысл есть. Опять же мне нужен массив для Task.WhenAll. Кроме того это лишнее взаимодействие между нативом и Net. Не все так просто. То есть нужно в натив возвращать флаг, что это Task для того, что бы натив не вызывал событие, передавал ключ в Net а дальше для задачи вызывался await или ContinueWhith с событием которое вызывает метод натива с передачей ключа и результата.
Мне лично await client.async.GetStringAsync нравится.
Кроме того для дженерик методов где нельзя вывести тип у меня применяется in
например
C# вариант
var HtmlAnchorElement = document.QuerySelector<IHtmlAnchorElement>(rowSelector);
может выглядеть так
let HtmlAnchorElement = avait doc.in(IHtmlAnchorElement).QuerySelector(rowSelector));
Кроме того иногда нужно получить интерфейс (у него свои методы)
let obj= await obj.as("IEnumerable");
или
let obj= await obj.as(IEnumerable);
Если это к моей библиотеке то она посзволяет все и события и обратные вызовы через динаимескую компиляцию, которая автоматически создает обертки.
public static object СоздатьОберткуДляСобытий(Object ОбъектССобытиями)
{
Type тип = ОбъектССобытиями.GetType();
Type genType = typeof(КомВраперДляСобытий<>);
Type constructed = genType.MakeGenericType(new Type[] { тип });
var ИмяСвойства = "СоздательОбертки";
var fi = constructed.GetField(ИмяСвойства);
Delegate функция = (Delegate)fi.GetValue(null);
// Получили делегат
// И из него получим объект обертку для событий который передадим в 1С для хранения ссылки на него
object обертка = функция.DynamicInvoke(new Action<string,string,object>(ВызватьВнешнееСобытиеСОбъектом), ОбъектССобытиями);
return обертка;
}
Правда пока обертка делается ко всем событиям. Но можно ограничить.
У меня есть только взаимодействие 1С с .Net Core. Но пока все это в стол. Хотя есть на стороне .Net поддержка и параметы массивы, ref параметры, автовывод дженерик типов, поиск методов расширений и опять же с дженериками.
Подержка событий через динамическую компиляцию оберток для событий. Просто так или иначе я один не то что не потяну, а нет смысла писать в стол.
А реализовать можно взаимодействие и с JS объектами через DynamicObject по аналогии с COM объектами http://infostart.ru/public/466196/
Просто нет подсчета ссылок, но можно только на время вызова держать ссылку
Сайт это TypeScript? то там нужно npm install сделать, что бы установить создать папку node_modules
Скорость вызова без Proxy 60к вызовов в секунду
Скорость вызова с прокси Proxy 45k вызовов в секунду
Скорость вызова итератора 160k вызовов в секунду
Вызываем функцию
Код такой
При этом часто нужно работать с торговым оборудованием или дисками и прочим оборудованием. Сейчас кстати пишу оберки для использования событий .Net классов
Внизу статьи показаны ссылки на программы которые можно запустить. В начале статьи
Ребята читайте пожалуйста внимательнее, или подскажите как лучше написать.
Скорость вызова без Proxy 60к вызовов в секунду
Скорость вызова с прокси Proxy 45k вызовов в секунду
Скорость вызова итератора 160k вызовов в секунду
Можно же скачать исходники и все пощупать.
На самом деле этому проекту уже несколько лет. Ноги растут отсюда Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент
Но сама разработка велась еще раньше. При этом от этого я никаких дивидентов не получаю. В основном тычки «зачем это нужно», но есть конечно и благодарности, но их немного. При этом реально легко можно расширить возможности для 1С. Но и 1С это не нужно. Мои разработки Но я не опускаю руки. Днем программирую на 1С, а вечером еще на C#,C++ и TypeScript.
При этом катастрофически не высыпаюсь. Но в разработке много интересного и я хочу поделиться этим с коллегами, надеясь, что коллеги простят мне мой руслиш и войдут в моё нелегкое положение. При этом я прекрасно понимаю, что получу кучу минусов. Но надеюсь, что за мои труды мне полагается небольшое снисхождение.
Сразу прошу прощения за руслиш.
Показано как просто можно использовать классы .Net Core
Работа с CEF, а так же и Net Core. Кроме того здесь показано как просто можно использовать классы .Net очень близко к кодированию на C#. Здесь очень много информации на любой вкус.
Его наверное и возьму за основу
Мне лично await client.async.GetStringAsync нравится.
Кроме того для дженерик методов где нельзя вывести тип у меня применяется in
например
C# вариант
может выглядеть так
Кроме того иногда нужно получить интерфейс (у него свои методы)
Правда пока обертка делается ко всем событиям. Но можно ограничить.
Подержка событий через динамическую компиляцию оберток для событий. Просто так или иначе я один не то что не потяну, а нет смысла писать в стол.
А реализовать можно взаимодействие и с JS объектами через DynamicObject по аналогии с COM объектами http://infostart.ru/public/466196/
Просто нет подсчета ссылок, но можно только на время вызова держать ссылку