Всім привіт! Розробляю одну програму (з платною підпискою), хочу зробити так, щоб програма брала все бібліотеки з мого сервера (при відсутності передплати - бібліотеки не повинні бути доступні). У мене два питання:
- Як динамічно підключити dll, яка знаходиться на сервері, при запуску програми?
- Як зробити так, щоб дані dll були доступні тільки з моєї програми? Щоб просто так скачати їх було не можна.
Те, що ви хочете зробити, називається RPC. Іншими словами ви відправляєте на сервер назву функції і її параметри, а у відповідь отримуєте результат виконання функції.
Найзручніший механізм RPC називається SOAP. Зручний він тим, що сервер надає опис функцій у вигляді WSDL - файлу, на основі якого може бути згенерований код на будь-якій мові. Наприклад, якщо сервер підтримує, то можна викликати функцію sumOfTwoNumber (5,6) і вона поверне 11. При цьому згенерований код сам перетворює функцію і параметри в формат зрозумілий сервера, передасть на сервер і отримає від сервера відповідь.
Наскільки я пам'ятаю, в C # можна підключати веб-сервіси (людське назву SOAP) як прості пакети. Потрібно мати на увазі, що дані між клієнтом і сервером передаються в форматі XML. через що трафік може бути більшим і повільним. А без інтернету функції і зовсім працювати не зможуть.
А програма-то що з себе представляє? ASP.Net додаток? А що за Dll. Net збірка або Win32 dll? У першому випадку зламати захист досить легко. У другому см. Методи захисту нативних Win32 додатків. Єдиний придатний варіант захисту для чисто .Net онлайн-додатки - винесення частини функцій в якісь сервіси на Вашому сервері, до яких звертатимуться передплатники зі своїми аутентифікаційних токенами.