Как реализовать механизм нотификации между ASP.NET приложением и COM DLL?
От: dreamcharger  
Дата: 16.11.18 22:05
Оценка:
Имеется DLL библиотека реализующая несколько COM интерфейсов, которая планируется использоваться в ASP.NET. В связи с тем, что библиотека изначально была написана для использования в нативных Windows приложениях, для передачи данных и уведомления клиента в ней используются сообщения Windows. В ASP это работать не будет, поэтому интересует механизм передачи уведомлений + данных непосредственно из созданного COM объекта в среду ASP. Как это правильнее реализовать? Представляется передача в COM какого-то класса, который реализуется на ASP, с последующим вызовом его методов из COM объекта. Такое возможно?

И будет ли работать такая связка в IIS, если COM объект создает TCP/IP socket для установления соединения с удаленным сервером, при получении данных от которого и будут отправляться уведомления в ASP?
asp.net com dll
Re: Как реализовать механизм нотификации между ASP.NET приложением и COM DLL?
От: takTak  
Дата: 17.11.18 11:54
Оценка:
ну и в чём проблема?

вызываешь из ASP.NET свой COM-Server, который будет хоститься в ASP.NET — процессе; COM server должен быть зарегистрирован только на вебсервере;
iis application pool identity под которым выполняется ASP.NET — процесс, должен иметь соответствующие права для вызовов твоего COM сервера;
в коде ASP.NET можешь прикрутить уведомления для клиентов через SignalR (htttp(s)) или через какие-то message queues...

ну а вообще так себе метод: скорее всего, будет не очень быстро, наверное, имело бы смысл этот COM просто переписать на C#

есть ещё так называемый DCOM / COM +, но это уже уровень вымерших динозавров и мамонтов

если очень надо чего-то там вызывать по TCP/IP , то можешь посмотреть в сторону WCF , там можно хостить WCF сервис, который делает protocol bridging : для клиентов он доступен через http(s), а вызовы дальше делает через TCP/IP, но это тоже древняя технология, которая майкрософтом не развивается
Re: Как реализовать механизм нотификации между ASP.NET приложением и COM DLL?
От: takTak  
Дата: 17.11.18 12:15
Оценка:
D> используются сообщения Windows. В ASP это работать не будет, поэтому интересует механизм передачи уведомлений + данных непосредственно из созданного COM объекта в среду ASP.

что имеется в виду? windows messages типа WM_NCRBUTTONDBLCLK ?

теоретически можно было бы запустить на версервере какое-то winForms приложение, которое хостит этот COM, ну и передавать между ASP.NET & WinForms туда-сюда какие-то сообщения через Named Pipes / MemoryMappedFile

но это дичь, имхо проще COM переписать
Re[2]: Как реализовать механизм нотификации между ASP.NET приложением и COM DLL?
От: dreamcharger  
Дата: 17.11.18 17:58
Оценка:
Здравствуйте, takTak, Вы писали:


D>> используются сообщения Windows. В ASP это работать не будет, поэтому интересует механизм передачи уведомлений + данных непосредственно из созданного COM объекта в среду ASP.


T>что имеется в виду? windows messages типа WM_NCRBUTTONDBLCLK ?


T>теоретически можно было бы запустить на версервере какое-то winForms приложение, которое хостит этот COM, ну и передавать между ASP.NET & WinForms туда-сюда какие-то сообщения через Named Pipes / MemoryMappedFile


T>но это дичь, имхо проще COM переписать


Сообщения свои, определенные вида WM_USER+. С ASP.NET никогда не работал, но если там есть возможности создать TCP/IP соединение через socket с функциями Send/Receive, тогда действительно проще написать все на C# и не использовать COM.
Re[3]: Как реализовать механизм нотификации между ASP.NET приложением и COM DLL?
От: takTak  
Дата: 17.11.18 19:12
Оценка:
T>>но это дичь, имхо проще COM переписать

D>Сообщения свои, определенные вида WM_USER+. С ASP.NET никогда не работал, но если там есть возможности создать TCP/IP соединение через socket с функциями Send/Receive, тогда действительно проще написать все на C# и не использовать COM.


вроде в SignalR допилили поддержку TCP, посмотри, может, это то, что надо : https://github.com/aspnet/SignalR/tree/release/2.1/samples/ClientSample/Tcp
Re[3]: Как реализовать механизм нотификации между ASP.NET приложением и COM DLL?
От: GarryIV  
Дата: 17.11.18 19:12
Оценка:
Здравствуйте, dreamcharger, Вы писали:

D>С ASP.NET никогда не работал, но если там есть возможности создать TCP/IP соединение через socket с функциями Send/Receive

Есть конечно.
WBR, Igor Evgrafov
Re[4]: Как реализовать механизм нотификации между ASP.NET приложением и COM DLL?
От: takTak  
Дата: 17.11.18 19:50
Оценка:
D>>С ASP.NET никогда не работал, но если там есть возможности создать TCP/IP соединение через socket с функциями Send/Receive
GIV>Есть конечно.

так-то оно так, но имхо с точки зрения архитектуры какое-то уродство получится, даже хуже, чем в тулу с 10 самоварами

1) придётся следить за временем жизни того куска кода, который подписался нa receive, т.е. либо в global.asa по типу чего-то такого https://pastebin.com/BnfEKnk4 либо загружать синглетоны в сессию, и что делать, если веб сервер перезагрузится ?!

2) не говоря уже о том, что отправлять tcp packet из http — то ещё развлечение (OSI model sends its greetings)...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.