|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
1. Есть ДЛЛка на Си, которая считывает данные с УСБ-ключа. Можно ли обратиться к ней из Сильверлайт-приложения и как? 2. Можно ли доставить саму эту ДЛЛку клиенту прямо этим Сильверлайт-приложением и чтобы это приложение само потом её использовало? Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 11:01 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, Ну тут дело не в сильверлайт или WPF. Тут обычное взаимодействие управляемого кода C# .NET с нуправляемым кодом. Тебе надо писать обертку на C# для этой dll-ки. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 11:13 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
unknownfromrus, но в sl подгрузить все равно нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 11:28 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Обёртка под .NET на СиШарп уже написана (тоже в виде ДЛЛ), но её нельзя непосредственно использовать в проекте Сильверлайт через добавление ссыллки ("Add Reference" в Вижуал Стьюдио), т. к. этот самый Стьюдио пишет что-то о несовместимости. Оно и понятно - Сильверлайтовский фреймворк - не дотнетовский, там просто сигнатуры некоторых функций совпадают для простоты освоения разработчиками. Тогда как вызвать эту дотнетовскую бибку из Сильверлайта? И тогда вопрос 2 становится такой: как доставить две ДЛЛки клиенту внутри сильверлайтовского приложения? И можно ли их использовать прямо из сильверлайтовского приложения, или надо сначала сохранить на диске клиента? Или придётся этим приложением грузить эти ДДЛки отдельно с сервера, сохранять их где-то и уже только потом к ним подключаться? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 11:34 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, ну разве не приходит на ум ничего такого? :) оберни свою dll в wcf сервис и дергай ее через wcf сколько хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 11:36 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user73201. Есть ДЛЛка на Си, которая считывает данные с УСБ-ключа. Можно ли обратиться к ней из Сильверлайт-приложения и как? В пятой версии можно для доверенных приложений. 2. Можно ли доставить саму эту ДЛЛку клиенту прямо этим Сильверлайт-приложением и чтобы это приложение само потом её использовало? Как? Если у нас есть доступ к файловой системе , почему мы не можем при старте положить dll куда надо, например, из ресурса? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 11:36 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
F#, да и правда для trusted можно. надо же. но wcf практичнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 11:38 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
AlexeiKF#, да и правда для trusted можно. надо же. но wcf практичнее. Вопрос, что нужно. Если например сервер в канаде, а usb ключ у пользователя в Ростове, ему трудно будет авторизоваться втыкая ключ в сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 11:44 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
AlexeiKF#, да и правда для trusted можно. надо же. но wcf практичнее. Эээ... а как это служба будет обращаться к какому-то так ключу в компьютере в Интернете, который может даже за прокси сидит? И ведь всё равно же надо будет клиенту ставить Си ДДЛку и СиШапр обёртку к ней? И как всё же обратиться даже к этой дотнетовской обёртке на СиШарпе? Через ссылку добавить в своё Сильверлайт-приложение я её не могу, а мне надо из неё функции вызывать и данные с них получать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 12:11 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320И как всё же обратиться даже к этой дотнетовской обёртке на СиШарпе? Через ссылку добавить в своё Сильверлайт-приложение я её не могу, а мне надо из неё функции вызывать и данные с них получать. Надо чтоб тип проекта был сильверлайт 5 и библиотеку под него же перебилдить, я думаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 12:35 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
F#user7320И как всё же обратиться даже к этой дотнетовской обёртке на СиШарпе? Через ссылку добавить в своё Сильверлайт-приложение я её не могу, а мне надо из неё функции вызывать и данные с них получать. Надо чтоб тип проекта был сильверлайт 5 и библиотеку под него же перебилдить, я думаю. Библиотеку перебилдить я не могу - она нам досталась такой от производителя УСБ-ключа, и он не хочет билдить её версию для СЛ5. Есть другие способы, как вызвать функции из библиотеки на дотнете в СЛ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 13:27 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Я упрощу задачу - сделать это нужно пока только для Виндоус ОС на машине клиента, т. к. на этой машине должен быть развёрнут Дотнет фреймворк (обёртка-то дотнетовская у меня для этой Си-ДДЛки). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 13:37 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, Судя по статье , указанной F#, вам нужно использовать атрибут DllImport["abc.dll"]. Чтобы иметь возможность это сделать приложение должно быть доверенным (и т.д.) и, как я понимаю, рядом с ним должна лежать abc.dll: http://stackoverflow.com/questions/5107694/how-do-i-add-a-reference-to-an-unmanaged-c-project-called-by-a-c-sharp-project Далее, нужно вызвать наш метод, учитывая маршаллинг типов. По теме: http://www.rsdn.ru/forum/dotnet/2941075.all.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 14:03 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Обёртка под .NET на СиШарп уже написана (тоже в виде ДЛЛ), Я имел ввиду эту обертку - или она от поставщика DLL и исходников нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 14:28 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
F#Обёртка под .NET на СиШарп уже написана (тоже в виде ДЛЛ), Я имел ввиду эту обертку - или она от поставщика DLL и исходников нет? И Си-ДЛЛка, и сишарповская ДЛЛка-обёртка - все от поставщика и исходников нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 14:57 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, по первому вопросу. можно. пиши метод для сервиса wcf, который дернет метод в твоей dll. все. че еще надо? мобильность wcf сервиса? это ж просто. сделай обычный exe и пусть запускается этот exe , а потом уже sl приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 15:01 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
AlexeiKuser7320, по первому вопросу. можно. пиши метод для сервиса wcf, который дернет метод в твоей dll. все. че еще надо? мобильность wcf сервиса? это ж просто. сделай обычный exe и пусть запускается этот exe , а потом уже sl приложение. А почему Сильверлайт не может просто сам дёрнуть этот метод? Я с сервисом не понял - сервис у клиента же запускать? Как вы это видите? У клиента постоянно (или по нажатию на кнопке на сайте через СЛ) запущен сервис, который имеет доступ к Си ДЛЛке, а потом этот сервис уже отдаёт данные тому же СЛ или сразу на мой сервер? Если да, то как задать адрес конечной точки этого сервиса, если он будет у клиента и параметры этого адреса будут зависеть от конфигурации сети клиента? И вообще, почему СЛ просто не может сам дёрнуть этот метод, даже из ДЛЛки на управляемом коде? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 15:59 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, ты начни читать. там ссылка вверху. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 16:06 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320И вообще, почему СЛ просто не может сам дёрнуть этот метод, даже из ДЛЛки на управляемом коде? Потому, что SL это фактически другая версия .NET FW. Как ты не можеш дернуть dll для v1 из v4 так и тут. Обращайтесь напрямую к dll ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2012, 16:30 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, А что, при помощи DllImport обратиться к библиотеке не получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2012, 06:55 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
enigmaticuser7320, А что, при помощи DllImport обратиться к библиотеке не получается? Я ещё не пробовал, сейчас буду пробовать. У меня только раздумья, стоит ли делать этакую цепочку - моё СЛ-приложение обращается к уже готовой ДЛЛ-дотнет-обёртке, обёртка - к Си-ДЛЛ. Или сразу к Си-ДЛЛ? По идее, в первом случае с маршалингом типов можно даже не заморачиваться (это пока только моё предположение) - базовые типы-то в СЛ и дотнете совпадают полностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2012, 10:45 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, Перед тем как обращаться напрямую, будет нелишним посмотреть реализацию кода обертки от производителя. Делается это рефлектором . При желании можно сделать свой аналог обертки. >стоит ли делать этакую цепочку Видимо, без разницы. Производитель просто добавил обертку, чтобы вы не задумывались о маршаллинге и, возможно, каких-то тонкостях обращения к нативной длл. >По идее, в первом случае с маршалингом типов можно даже не заморачиваться (это пока только моё предположение) - базовые типы-то в СЛ и дотнете совпадают полностью. Да. >в СЛ и дотнете СЛ и есть дотнет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2012, 13:48 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
AlexeiKuser7320, по первому вопросу. можно. пиши метод для сервиса wcf, который дернет метод в твоей dll. все. че еще надо? мобильность wcf сервиса? это ж просто. сделай обычный exe и пусть запускается этот exe , а потом уже sl приложение. Т. е. по-вашему получается, что клиент должен у себя сам запустить и ехе с сервисом (который будет дёргать ДЛЛ), и СЛ-приложение? Вообще принцип "клиент сначала что-то у себя на машине запускает" пока вторым вариантом рассматривается. Первый - клиент нажал на кнопку на сайте и у него что-то запустилось на машине - не он сам ехе-шник запустил, а кнопкой на сайте. Как это сделать - ума не приложу. Внутрибраузерный СЛ, вроде, может это сделать. Внутрибраузерный СЛ вообще сразу мою задачу может решить - дёрнуть ДЛЛку и отдать данные на сайт - и сервисы wcf никакие не обязательны. СЛ предпочтительнее wcf тем, что развёртывается (и удаляются) очень просто, а внутрибраузерные вообще не нужно развёртывать и обновлять у клиента. Но Майкрософт столько ограничений искусственных понаставила для этой задачи, что реализовать это практически невозможно для меня. Чего стоит только доверенный сертификат, который мы покупать не будем. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2012, 12:11 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, user7320Т. е. по-вашему получается, что клиент должен у себя сам запустить и ехе с сервисом (который будет дёргать ДЛЛ), и СЛ-приложение? не ну зачем сам. ты напишешь программу установки. которая установит службу в винде и sl приложение. чтото ты мыслишь не теми категориями или я не твоими. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2012, 13:23 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
AlexeiKuser7320, user7320Т. е. по-вашему получается, что клиент должен у себя сам запустить и ехе с сервисом (который будет дёргать ДЛЛ), и СЛ-приложение? не ну зачем сам. ты напишешь программу установки. которая установит службу в винде и sl приложение. чтото ты мыслишь не теми категориями или я не твоими. Хммм... я тут вижу два варианта. 1. Зачем ставить и службу, и СЛ-приложение (внебраузерное), если достаточно одного СЛ-приложения? Тем более, что сама по себе служба не сможет (ведь не сможет же?) определить, когда вставлен УСБ-токен, чтобы считать с него данные - т. е. клиент должен "ручками" (нажать на кнопку "считать") инициировать работу службы. 2. Если имеется ввиду браузерное СЛ-приложение, то как оно запросит данные с этой службы? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2012, 15:53 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Да, там что в первом, что во втором варианте клиент должен нажать на "считать", но во втором это будет вроде как на сайте и ничего дополнительно кроме службы ставить не придётся. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2012, 15:55 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, о как даже. задача : предоставить длл доступ к флешке , когда флешка вставлена. задача2 : отдать из длл информацию в SL приложение. так ? з: -> з2: wcf ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2012, 16:22 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Если пока отложить пока вопрос о сигнализации вставки УСБ-токена и чтения из него, то пока меня интересует следующее: 1) эту службу надо внедрять в какой-то Виндовс-процесс или другую службу, которые стартуют автоматически, так? 2) если вы имеете ввиду браузерное СЛ-приложение, то как оно присоединится к службе, которая работает у клиента, да ещё, возможно, находящегося где-то у себя в локалке? Да и внебраузерное тоже. И вообще, я всё ещё не понимаю, зачем нужна служба? Я могу данные из ДЛЛ получить непосредственно ВНЕБРАУЗЕРНЫМ СЛ-приложением (браузерным не могу). Т. е. служба будет делать то же, что и СЛ-приложение? Зачем тогда лишнее звено? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2012, 07:44 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user73202) если вы имеете ввиду браузерное СЛ-приложение, то как оно присоединится к службе, которая работает у клиента, да ещё, возможно, находящегося где-то у себя в локалке? Да и внебраузерное тоже. обратится по http при задании соответсвующей access-policy ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2012, 09:59 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Изопропилuser73202) если вы имеете ввиду браузерное СЛ-приложение, то как оно присоединится к службе, которая работает у клиента, да ещё, возможно, находящегося где-то у себя в локалке? Да и внебраузерное тоже. обратится по http при задании соответсвующей access-policy Это как это? Вот работает где-то клиент в своей локалке, даже не на сервере своего придприятия, грузит себе мою страницу с СЛ-приложением. Откуда моё СЛ-приложение может узнать, где у клиента хостится служба и есть ли она вообще? Вот если клиент обращается к моей службе - тут всё без вопросов. У службы есть постоянный адрес, она "смотрит" в Интернет. А как я узнаю, где у клиента служба - непонятно. Но самое главное, я не понимаю, зачем она нужна. Если её использовать только для доступа к ДЛЛ, то этот доступ может и СЛ-приложение иметь напрямую, без всяких служб. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2012, 11:27 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320Откуда моё СЛ-приложение может узнать, где у клиента хостится служба и есть ли она вообще? сраный USB ключ где ? там и сервис его обслуживающий. Просетапить сервис придётся. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2012, 16:48 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Изопропилuser7320Откуда моё СЛ-приложение может узнать, где у клиента хостится служба и есть ли она вообще? сраный USB ключ где ? там и сервис его обслуживающий. Просетапить сервис придётся. 1. Куда лучше установить службу, чтобы она пускалась автоматом при старте компьютера клиента? 2. Как будет выглядеть адрес оконечной точки такой службы? 3. Т. е. вы полагаете, что если адрес оконечной точки будет известен (установка всегда в одно и то же место у всех клиентов), то тогда можно будет подписывать СЛ-приложение заранее на известный адрес сервиса (адрес оконечной точки)? И вне зависимости от клиентов и их конфигураций, никакая часть адреса этой оконечной точки не будет меняться при установке службы сервиса? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2012, 20:45 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320, ты лучше бы погуглил эти вопросы. или ты не занимаешься программированием? почему у тебя такие трудности с представлением схемы? в 3 пункет ответ на все положительный. во 2 как захочешь в 1 как только начнешь писать службу, вопрос отпадет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2012, 11:13 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Всё же, решил СЛ "добивать". Уже смог нормально запустить браузерное СЛ-преложение с повышенным доверием, которое развернуло у клиента ДЛЛ и обратилось к ней через DllImport. Научился правильно создавать цепочки сертификатов и подписывать ими СЛ-приложения. Поставил сертификаты клиенту, добавил в реестре параметр - и всё заработало! Вобщем, всё, как в мануалах пишут. Теперь осталось только XML-установщик создать, который настроит реестр и поставит сертификаты клиенту сам, обозвать этот установщик "скачать плагин" и задача решена. Главное, чтобы потом только хасповская ДЛЛка не подвела и нормально заработала. Ну и ещё решить вопрос с шифрованным каналом, по которому передавать данные на сайт через СЛ-плагин. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2012, 14:13 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320Ну и ещё решить вопрос с шифрованным каналом, по которому передавать данные на сайт через СЛ-плагин. имхо, тут https без вариантов ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2012, 15:16 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2012, 21:43 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
user7320Теперь осталось только XML-установщик создать, который настроит реестр и поставит сертификаты клиенту сам, обозвать этот установщик "скачать плагин" и задача решена. Установщик создал с помощью WiX. В реестре лажу, сертификаты клиенту скидываю. Теперь HTTPS и собственно HASP... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2012, 12:58 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
А всё равно чисто через СЛ не получилось. Дотнетовская ДЛЛка, которая работает с сишной ДЛЛкой, содержит обёртки внешнего вызова функций из этой сишной ДЛЛки. Для СЛ пришлось бы писать то же самое, только мне самому. Я что-то не захотел, хотя дизассемблером посмотрел - слишком много кодить и я плохо понял, что там к чему. Пришлось сделать так, как вначале советовали - через службу. Вот через неё получилось, и даже не пришлось СЛ давать повышенное доверие. Теперь у меня WCF-служба ссылается на .NET библиотеку, сама WCF-служба сидит в Windows-службе с автозапуском. А СЛ-приложение в браузере имеет ссылку на эту службу - с ключа всё читается. Данные, которые с ключа передаются, не секретные (только айди ключа) - т. е. HTTPS пока не требуется, а вот как защитить обращения службы к ДЛЛкам и ключу - надо подумать будет. Пока что у меня секретная информация, которая обазательно нужна для обращения к ключу, хранится в коде WCF-службы. Подумаю, может, саму службу можно этим же Хаспом тоже зашифровать. Придётся ещё проверить вызовы функций - в зашифрованном ли там всё виде или нет передаётся. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 15:23 |
|
Как из Silverlight-приложения обратиться к DLL, написанной на C?
|
|||
---|---|---|---|
#18+
Нет, работа с сертификатами и Виксом зря не пропала - я столько всего узнал за эти полтора месяца. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 15:24 |
|
|
start [/forum/topic.php?all=1&fid=21&tid=1441674]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 468ms |
0 / 0 |