23.11.2006, 12:33 | #1 |
Участник
|
Как программно разорвать или восстановить соединение через AxaptaCOMConnector?
Как программно разорвать или восстановить соединение через AxaptaCOMConnector?
Пробовал сделать это сделать следующим путем Private Sub Command1_Click() Dim ax As AxaptaCOMConnector.Axapta2 Set ax = New AxaptaCOMConnector.Axapta2 Dim aa As Object ax.Logon2 "login", "password", "", "", "", "", "C:\axapta\user.axc" ax.Logoff Set ax = Nothing End Sub код срабатывает только один раз. при повторном нажатии на кнопке появляется ошибка "Buffer overrun detected! ...." собственно это нужно для программы работающей в фоновом режиме для отслеживания соединения и пытающейся восстановить его если соединение разорвано |
|
23.11.2006, 14:38 | #2 |
Участник
|
Цитата:
Сообщение от sschainik
Как программно разорвать или восстановить соединение через AxaptaCOMConnector? Пробовал сделать это сделать следующим путем
Private Sub Command1_Click() Dim ax As AxaptaCOMConnector.Axapta2 Set ax = New AxaptaCOMConnector.Axapta2 Dim aa As Object ax.Logon2 "login", "password", "", "", "", "", "C:\axapta\user.axc" ax.Logoff Set ax = Nothing End Sub код срабатывает только один раз. при повторном нажатии на кнопке появляется ошибка "Buffer overrun detected! ...." собственно это нужно для программы работающей в фоновом режиме для отслеживания соединения и пытающейся восстановить его если соединение разорвано Цитата:
With that said, there are some things to keep in mind about the Business Connector. For instance it's a COM / COM+ registered object, that come become unstable if not maintained correctly. Basically what I mean by that is if you are connecting and dropping the connection over and over, the over head generated from such transactions can become an issue, and I have noticed the COM connector becomes unstable or 'flaky'. The best way to manage such a thing that I have found is create a web service that wraps the objects you need or want access to, and only open the connection on the first time the Web Service is called. Then store the object in memory (cache) and use the open connection throughout all of the rest of the calls. You still have to handle the proper closing of the object, that's why you only close it when the web serivce or App is truly shuting down, and unloading from memmory.
Цитата:
Business Connector - хорошая штука для связи AX с другими приложениями, но надо иметь в виду некоторые его особенности. К примеру, то, что это - зарегистрированный объект COM/COM+, который может стать нестабильным, если не поддерживать корректно его работу. Я имею в виду то, что если вы соединяетесь и потом разрываете соединение, и так продолжается снова, снова и снова, то дополнительная нагрузка, создаваемая такими транзакциями, может создать серьезные проблемы, и я замечал, что COM-коннектор может начать вести себя нестабильно или попросту "чудить". Лучший способ справиться с этим, который я нашел, - это создать web-сервис как обертку для объектов и данных, необходимых для работы, и открывать соединение лишь при первом запуске этого web-сервиса. Затем можно закэшировать созданный COM-объект и использовать открытое соединение для всех остальных вызовов. Необходимо также позаботиться о корректном завершении работы с объектом, поэтому делать это нужно, когда web-сервис или приложение завершает собственную работу и выгружается из памяти.
Последний раз редактировалось gl00mie; 23.11.2006 в 15:29. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
23.11.2006, 14:38 | #3 |
MCTS
|
А как часто(во времени) вы щёлкаете кнопочкой.
Дело в том что на "разлогиновку" требуется некоторое время. Возможно, при повторном нажатии на кнопку вы пытаетесь прилогинится ещё фактически не разлогинившись.
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
24.11.2006, 08:49 | #4 |
Участник
|
Как часто это будет пользоваться пока незнаю. Вообще это нужно для восстановления связи в случае если отключилась локальная сеть (бывает так что сеть отваливается буквально на несколько секунд), и как после этого воосстановить связь? пробовал подключаться к аксапте, после этого выдирал шнур локальной сети, подключал шнур обратно и опять LOGON2 заново, всегда появлялось сообщение "Buffer overrun detected! ....", даже если не логиниться и аннулировать при разрыве соединение, то при создании подключения с нуля появляется это же сообщение. Единственно что только запускать приложение заново! но это можно забыть про фоновый режим
|
|