Это очень близко к WPF. Сейчас для .Net Core нет кроссплатформенного декстопного GUI.
Но вот есть идея скрестить Angular 2 и .Net Core.
В свое время я сделал обертку для использования классов .Net Core из неуправляемого кода Мои статьи.
Там кстати есть и статья про Angular 2.
В обертке реализован доступ к классам из сборок, итераторы, вывод типов для дженериков, методы расширения, поддержка событий. То есть можно писать код близкий к C# на 1С.
К моему огромному сожалению 1С это оказалось не нужно. В том плане, что они не хотят модернизировать Native Api для передачи в параметрах объектов и возврате объектов из методов. Поэтому ссылки на объекты передаются виде строки и из которых создаются объекты ВК. Это очень неудобно.
Но вот подумалось, что эту технологию можно прикрутить к браузеру через плагин .
То есть можно создавать обертку на стороне браузера. При этом можно для TypeScript генерить интерфейсы (в свое время предлагал псевдоинтерфейсы для динамиков в .Net) и использовать IntelliSense на полную катушку.
То есть можно как в Xamarin писать единую общую часть в Dll, а гуй писать отдельно.
Я знаю, что 1С использует технологию «Создание компонент с использованием технологии Native API». и в Web клиенте через плагины.
Буду благодарен за конструктивную критику, идеи и ссылки на создание плагинов.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>>Это очень близко к WPF.
AVK>Нет, это не очень близко к WPF. Близко к react.
Хорошо. Смыл в том, что несложно написать GUI. Есть куча готовых компонентов.
И есть возможность через плагин использовать классы .Net Core для создания кроссплатформенных приложений.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Андрей можешь дать ссылочки на создание плагинов для Хрома? S>Буду премного благодарен. S> Обязуюсь писАть их только на английском!
Вот посмотри ты какой непрошибаемый человек. Буквально вчера:
AVK>> В том что если у тебя в голове засела какая то мысль, то ты бежишь с этой мыслью во все топики, никакого отношения к этой мысли не имеющие.
S>Насчет упертости неправда.
Ты вообще как, адекватным свое поведение в форуме считаешь?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>>Андрей можешь дать ссылочки на создание плагинов для Хрома? S>>Буду премного благодарен. S>> Обязуюсь писАть их только на английском!
AVK>Вот посмотри ты какой непрошибаемый человек. Буквально вчера:
AVK>
AVK>>> В том что если у тебя в голове засела какая то мысль, то ты бежишь с этой мыслью во все топики, никакого отношения к этой мысли не имеющие.
S>>Насчет упертости неправда.
AVK>Ты вообще как, адекватным свое поведение в форуме считаешь?
Я специально создал отдельную тему. В чем неадекватность?
Мне пришла идея, что можно сделать кроссплатформенный GUI на Angular 2 ghb этом использовать классы .Net Core.
При этом у меня есть опыт использования классов .Net Core из неуправляемого кода?
В чем моя неадекватность? И я всего то попросил ссылку на написания плагина для Хрома, что соответствует заданному вопросу в этом топике.
Я сейчас ищу, но не могу найти ничего путного
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>> Я специально создал отдельную тему. В чем неадекватность?
AVK>В том что твой ответ мне никак не связан с тем, что я написал. Абсолютно никак.
AVK>Или вот сегодняшнее прекрасное: Re[8]: ASP.NET Core, Angular 2, SignalR для чайников
AVK>Ты чего, правда не понимаешь, что так с людьми общаться нельзя?
Тогда прошу прощения за этот ответ.
Но это никак не касается моего вопроса к тебе в этой ветке.
Вот нашел ссылочки How to create a PPAPI plugin for Google Chrome in Windows?
и солнце б утром не вставало, когда бы не было меня
А может кто нибудь сказать насколько реально через плагин загрузить .Net Core?
Какик флаги безопасности использовать при загрузке CoreClr
// Set up the startup flags for the clr runtime
STARTUP_FLAGS dwStartupFlags = (STARTUP_FLAGS)(
STARTUP_FLAGS::STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN |
STARTUP_FLAGS::STARTUP_SINGLE_APPDOMAIN |
STARTUP_FLAGS::STARTUP_SERVER_GC
);
hr = pCLRRuntimeHost->SetStartupFlags(dwStartupFlags);
* The <code>PP_VarType</code> is an enumeration of the different types that
* can be contained within a <code>PP_Var</code> structure.
*/
typedef enum {
/**
* An undefined value.
*/
PP_VARTYPE_UNDEFINED = 0,
/**
* A NULL value. This is similar to undefined, but JavaScript differentiates
* the two so it is exposed here as well.
*/
PP_VARTYPE_NULL = 1,
/**
* A boolean value, use the <code>as_bool</code> member of the var.
*/
PP_VARTYPE_BOOL = 2,
/**
* A 32-bit integer value. Use the <code>as_int</code> member of the var.
*/
PP_VARTYPE_INT32 = 3,
/**
* A double-precision floating point value. Use the <code>as_double</code>
* member of the var.
*/
PP_VARTYPE_DOUBLE = 4,
/**
* The Var represents a string. The <code>as_id</code> field is used to
* identify the string, which may be created and retrieved from the
* <code>PPB_Var</code> interface. These objects are reference counted, so
* AddRef() and Release() must be used properly to avoid memory leaks.
*/
PP_VARTYPE_STRING = 5,
/**
* Represents a JavaScript object. This vartype is not currently usable
* from modules, although it is used internally for some tasks. These objects
* are reference counted, so AddRef() and Release() must be used properly to
* avoid memory leaks.
*/
PP_VARTYPE_OBJECT = 6,
/**
* Represents an array of Vars. The <code>as_id</code> field is used to
* identify the array, which may be created and manipulated from the
* <code>PPB_VarArray</code> interface. These objects are reference counted,
* so AddRef() and Release() must be used properly to avoid memory leaks.
*/
PP_VARTYPE_ARRAY = 7,
/**
* Represents a mapping from strings to Vars. The <code>as_id</code> field is
* used to identify the dictionary, which may be created and manipulated from
* the <code>PPB_VarDictionary</code> interface. These objects are reference
* counted, so AddRef() and Release() must be used properly to avoid memory
* leaks.
*/
PP_VARTYPE_DICTIONARY = 8,
/**
* ArrayBuffer represents a JavaScript ArrayBuffer. This is the type which
* represents Typed Arrays in JavaScript. Unlike JavaScript 'Array', it is
* only meant to contain basic numeric types, and is always stored
* contiguously. See PPB_VarArrayBuffer_Dev for functions special to
* ArrayBuffer vars. These objects are reference counted, so AddRef() and
* Release() must be used properly to avoid memory leaks.
*/
PP_VARTYPE_ARRAY_BUFFER = 9,
/**
* This type allows the <code>PP_Var</code> to wrap a <code>PP_Resource
* </code>. This can be useful for sending or receiving some types of
* <code>PP_Resource</code> using <code>PPB_Messaging</code> or
* <code>PPP_Messaging</code>.
*
* These objects are reference counted, so AddRef() and Release() must be used
* properly to avoid memory leaks. Under normal circumstances, the
* <code>PP_Var</code> will implicitly hold a reference count on the
* <code>PP_Resource</code> on your behalf. For example, if you call
* VarFromResource(), it implicitly calls PPB_Core::AddRefResource() on the
* <code>PP_Resource</code>. Likewise, PPB_Var::Release() on a Resource
* <code>PP_Var</code> will invoke PPB_Core::ReleaseResource() when the Var
* reference count goes to zero.
*/
PP_VARTYPE_RESOURCE = 10
} PP_VarType;
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
Будем продвигаться потихоньку.
в ECMAScript 6 появились Динамические прокси
Это аналог DynamicObject.
Кроме свойств, можно вызвать метод
Remote objects
Proxies allow you to create virtual objects that represent remote or persisted objects. To demonstrate this, let's write a wrapper around an existing library for remote object communication in Javascript. Tyler Close's web_send library can be used to construct remote references to server-side objects. One can then "invoke" methods on this remote reference via HTTP POST requests. Unfortunately, remote references cannot be used as objects themselves. That is, to send a message to a remote reference ref, one writes:
Q.post(ref, 'foo', [a,b,c]);
It would be a lot more natural if one could instead treat ref as if it were an object, such that one could call its methods as ref.foo(a,b,c). Using the Proxy API, we can write a wrapper for remote web_send objects to translate property access into Q.post calls:
Здравствуйте, Serginio1, Вы писали:
S> Можно обмениваться через сообщения. Впринципе можно организовать вызов через аналог ContinueWith. S> Или можно вызвать метод синхронно?
Только, причем тут .net core? уже есть nodejs как backend для хромиума. хочется добавить .net — общайтесь с новой через ipc
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, Serginio1, Вы писали:
S>> Можно обмениваться через сообщения. Впринципе можно организовать вызов через аналог ContinueWith. S>> Или можно вызвать метод синхронно?
TK>Только, причем тут .net core? уже есть nodejs как backend для хромиума. хочется добавить .net — общайтесь с новой через ipc
При том, что у меня есть аалог Idispatch для создания любого объекта .Net Core и вызова любого его метода из натива.
Вот все мои публикации по этому поводу https://habrahabr.ru/users/serginio1/topics/
Про Electron.js я в курсе. Но реально сделать описание классов и использовать их в TypeScript для типизированных объектов.
Практически это кроссплатформенная замена silverlight
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> Хорошо. Смыл в том, что несложно написать GUI. Есть куча готовых компонентов. S>И есть возможность через плагин использовать классы .Net Core для создания кроссплатформенных приложений.
Несложно?! При всей моей нелюбви к WPF — я его посоветую любому вместо web-based псевдо ерунде основанной на псевдокомпиляторах. Я говорил много раз на этом форуме — единственный подход который достоин рассмотрения — это google closure library. В остальных — просто нет модульности и тайпскрипт сосет здесь. Причем это можно было бы решить в рамках тайпскрипта, но нет — они упоролись в свои модули.
Одако — один класс на один файл — это пришло далеко не из шарпа и это работает лучше всего остального досих пор.
Учитывая в какие я грабли вступил с ангуляром 1 — а именно лики 50 мб в минуту — и сам же полечил — и реакция мэйнтейнеров...
Вернула меня к началу — юзай тока то что можешь сам допиливать, необязательно своё.
А нужные компоненты — пишутся всегда легко. Ну если оно реально надо.
Если квак-квак и в продакш — это одно. Я например пересмотрел кучу гридов и ни один по функционалу не подошел... лет 8 назад. Но блин, то что я раньше сочинил для себя — всего 300 кб кода — щас вложится в 200.
Короче — лучше безобразный но более менее единый WPF, чем анархисты в gtml/js, навроде меня. Но последние — доминируют. На сейчас — выбор настолько богат что глаза теряются нафиг.
Здравствуйте, fddima, Вы писали:
F> Короче — лучше безобразный но более менее единый WPF, чем анархисты в gtml/js, навроде меня. Но последние — доминируют. На сейчас — выбор настолько богат что глаза теряются нафиг.
Я только за. Но посмотри на тот же Electron. На нем куча народу пишет. При этом там возня с модулями и прочие неудобства.
Кстати уже написал и протестировал методы свойства, асинхронные методы. Сейчас добавлю поддержку дженериков и операторов.
Единственно не удалось мне прикрутить для CefSimple DevTools. Ну да если кого то заинтересует можно и прикрутить
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, AndrewVK, Вы писали:
AVK>>Здравствуйте, Serginio1, Вы писали:
S>>>Андрей можешь дать ссылочки на создание плагинов для Хрома? S>>>Буду премного благодарен. S>>> Обязуюсь писАть их только на английском!
AVK>>Вот посмотри ты какой непрошибаемый человек. Буквально вчера:
AVK>>
AVK>>>> В том что если у тебя в голове засела какая то мысль, то ты бежишь с этой мыслью во все топики, никакого отношения к этой мысли не имеющие.
S>>>Насчет упертости неправда.
AVK>>Ты вообще как, адекватным свое поведение в форуме считаешь?
S> Я специально создал отдельную тему. В чем неадекватность? S>Мне пришла идея, что можно сделать кроссплатформенный GUI на Angular 2 ghb этом использовать классы .Net Core. S>При этом у меня есть опыт использования классов .Net Core из неуправляемого кода?
S> В чем моя неадекватность? И я всего то попросил ссылку на написания плагина для Хрома, что соответствует заданному вопросу в этом топике. S>Я сейчас ищу, но не могу найти ничего путного
.Net Core для лузеров, технология свое отжила, хочешь быть в волне пионеров — делай на js/typescript + nw.js = получаются красивые десктоп приложения