Дмитрий, Спасибо.
Вопрос все же про c# и .net
Но ваша информация тоже очень интересна.
тут сразу возникает вопрос практического применения - как запускать luau скрипты из c#, как организовать взаимодействие между хостом и скриптом, как обеспечить автодополнение (intellisence) и распознование типов хоста в среде разработки скриптов на luau.
Василий Банников, По по поводу WASM хотелось бы поподробней и поконкретней. сам в интернетах пока достаточной информации не нашел.
вопросы такие:
- как wasm-мод будет предоставлять те методы которые сможет вызывать wasm-хост?
- как wasm хост будет загружать wasm-сборку и вызывать его методы?
- как wasm-мод будет вызывать методы хоста?
Есть ли примеры кода?
Какие nuget-пакеты использовать?
Uno, Я вижу ситуацию таким образом:
1. Если нужно сделать что-то популярное, то это что-то должны быть простым и безопасным.
2. Я сам физически не могу сделать все, (и отмодерировать тоже)
3. поэтому и нужна система модов, чтобы любой желающий мог сделать свой мод.
4. Если мод у конечных пользователей будет вызывать проблемы, то пользователи не станут их себе устанавливать и вся затея с модами будет бесполезной.
ИТОГО: автор проекта должен заботиться об удобстве и безопасности.
Роман, вы имеете в виду, зачем я поменял параметры местами? Я таким образом поставил эксперимент, насколько хорошо десериализатор справится со своей задачей. Ситуации бывают разные, логика конструктора может быть довольно сложной, в моем примере порядок параметров конструктора отличается от порядка свойств, это, как мне кажется, вполне распространенная ситуация.
Или, например, вам достаётся код по наследству, и в этом случае вы за него не отвечаете, но вы то хотите убедиться, что после добавления конструктора у вас код будет работать не только формально, но и симантически верно.
Спасибо за комментарии.
Получается, что задача крайне сложная и опасная (для конечных пользователей). Сложно предусмотреть все возможные точки атак и кроме того, в очередном обновлении .net может появиться что-то новенькое.
Может быть существует какая-то возможность создать что-то вроде виртуальной машины, которая будет изолирована от основного компа и выполнять код плагинов там?
Спасибо.
Интересно, можно ли "навредить" в файловой системе только через System.IO.* или существует что-то еще опасное.
Вообще задача сделать общий репозиторий плагинов для определенного софта, куда кто попало сможет загружать свои сборки и при этом защитить всех пользователей этих плагинов от зловредных плагинов.
Ну да, так и делаю. и хорошо бы все делать на .net6, но есть же легаси, например, asmx веб сервисы и webforms с которых просто так не слезешь, только полностью их устранять или выносить в другой проект...
Получается что у меня будет локальный репозиторий - клон удаленного репозитория автора.
А когда я создаю ветку, то она будет в том же локальном репозитории?
А можно ли сделать так, чтобы склонированный репозиторий был связан с оригинальным удаленным репозиторием (чтобы обновлять master клона), а свою ветку синхронизировать со своим удаленным репозиторием?
Ну, я согласен на то, что после такого "слияния" нужно прогнать тесты и поправить свой файл так, чтобы он соответствовал и компилировался (или предположим, что этот файл не приводит к конфликтам).
Как склонировать я знаю, а вот изменение моего файла - нужно делать в новой ветке? и как потом накатить обновления из репозитория и что потом сделать, чтобы мой файл снова оказался актуальным?
А как вообще можно вызвать из своего приложения wall.post?
и какого типа должно быть приложение?
Точно не может быть сервер, как вы и сказали.
Точно может быть виндовое приложение, в котором для получения токена будет использоваться внедренный браузер.
Использовать для этого html-страницу с javascript'ом - под вопросом. проблемы у меня вот какие:
1. для получения токена с разрешением wall нужно использовать Implicit Authorization, а это значит, что нужно чтобы пользователь перешел по ссылке типа "https://oauth.vk.com/authorize?client_id=7557834&d..." причем параметр redirect_uri обязательно должен быть blank, иначе разрешение wall не получить.
2. после перехода по этой ссылке пользователь окажется на пустой странице, с которой нам нужно из урла забрать токен и передать его на нашу страницу с нашими скриптами. как это сделать? (например, пользователь скопирует его из урла и вставит в формочку на нашей странице, привет юзабилити)
3. нужно отправить запрос к api методу wall.post, но тут проблема - поскольку в браузере кросс доменные обращения запрещены, использовать мы можем только JSONP, а в нем параметры передаются через url, а во вконтактовском api есть существенное ограничение на длину запроса, таким образом, мы сможем запостить только короткий текст, скорее всего без аттачментов.
Вопрос все же про c# и .net
Но ваша информация тоже очень интересна.
тут сразу возникает вопрос практического применения - как запускать luau скрипты из c#, как организовать взаимодействие между хостом и скриптом, как обеспечить автодополнение (intellisence) и распознование типов хоста в среде разработки скриптов на luau.