Показать сообщение отдельно
Старый 23.11.2006, 14:38   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от 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! ...."
собственно это нужно для программы работающей в фоновом режиме для отслеживания соединения и пытающейся восстановить его если соединение разорвано
Есть мнение, что часто устанавливать/разрывать соединение через COM-коннектор может быть не очень удачной идеей. В частности, некий Brandon George пишет в своем блоге:
Цитата:
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).