@komplanarnost

Ссылка на dll на сервере, возможно?

Добрый день.
Помогите найти решение проблемы.

Есть программа Revit, со своим API. Приложение для Revit должно иметь манифест, где существует ссылка на dll, определяющую логику программы.

Пытаюсь скрыть логику приложения, и до сих пор не могу понять, возможно ли dll как-то поместить на сервер, или это мои фантазии. В первой инстанции, пытаясь найти ответ на форумах для Revit, не нашел ответа должна ли лежать на клиентской машине сборка, которая указана в манифесте. Говорят, что пытались куда-то переместить, приложение работать переставало. Ок. Но внутри эта сборка может же ссылаться на десятки других, которые могут теоретически находиться на сервере.

Мой вопрос состоит в том, возможно ли это. Я разбираюсь в Revit API, в других тонкостях нет, и боюсь уйти в не ту сторону, потратив бесполезно много времени. Начал штудировать WCF, но чем глубже закапываюсь, не нахожу ответа, возможен ли обмен объектами, вместо типичных стрингов, интов и т.д Что-то там про сериализацию упоминают, но даже близко не уверен, что ревитовские объекты можно сериализовать, там объекты с сотнями свойств.
Увидел, что есть что-то новое по сравнению с wcf - gRPC. По-моему, смысл тот же. Есть даже какие-то облака azure, но стоит ли в них разбираться, тоже непонятно.
В моем понимании, когда dll на твоём компе, ревит апп тупо считывает инструкции с нее и выполняет. Неужто нельзя просто так же считывать ее, только чтобы она лежала безопасно на сервере?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Ты можешь сделать такой плагин, который будет с сервера динамически подгружать какой-то код.
Это лишь усложнит жизнь лояльным пользователям, которые готовы платить за твой плагин.
Пират или желающий скопировать твою логику точно также перехватит эту dll.
А ещё это создаст потенциальную дыру, и сделает твой плагин не применимым для некоторых клиентов.

Или ещё вариант - вынести всю логику на сервер и постоянно передавать данные между твоим плагином и сервером.
Это спасёт от пиратства, но все равно не все клиенты будут готовы за такое платить

Чаще всего, описанную тобой задачу решают при помощи обфускации


Неужто нельзя просто так же считывать ее, только чтобы она лежала безопасно на сервере?

А как ревит должен понять, как с твоего сервера данные получить?
В мире существую сотни разных протоколов, которые позволяют получить файл с какого-то сервера, включая кастомные. Вот как ревит поймёт, как работать с твоим сервером? И как ты определишь, что это делает ревит, и делает он это от имени пользователя, который купил лицензию?
И нет, не тупо считывает. Попробуй сам написать приложение, которое динамически будет подгружать dll-ки и выполнять код.


Начал штудировать WCF, но чем глубже закапываюсь, не нахожу ответа, возможен ли обмен объектами, вместо типичных стрингов, интов и т.д Что-то там про сериализацию упоминают, но даже близко не уверен, что ревитовские объекты можно сериализовать, там объекты с сотнями свойств.
Увидел, что есть что-то новое по сравнению с wcf - gRPC. По-моему, смысл тот же. Есть даже какие-то облака azure, но стоит ли в них разбираться, тоже непонятно.

1. Тебе не обязательно целиком эти объекты передавать. Ты можешь переложить только нужные данные в свои объекты и их стерилизовать.
2. Сериализация - это преобразование объектов в некий вид, который пригоден для передачи куда-то.
3. Azure - это просто сервис, где ты можешь арендовать сервер, если упрощать.
4. WCF устарел
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы