powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Помогите разобраться с Remoting
3 сообщений из 3, страница 1 из 1
Помогите разобраться с Remoting
    #35993962
DesertBrowser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день уважаемым посетителям форума.
Использую FW 2
Архитектура приложений: на сервере зпускается служба Windows, которая с периодичностью в 10 сек получает данные от приложения-сервера. Нужно с клиентского ПК подключиться к службе с целью проверки, какие данные она получила от приложения-сервера и что положила в БД.
Для проектирования такого клиента решила использовать Remoting. Но видимо по причине нехватки знаний в этом вопросе не удаётся избавиться от ошибки при создании удалённого серверного объекта на клиенте:
Код: plaintext
Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 
Коротко о структуре системы.
Серверный объект - библиотека RemoteOPC.dll

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Public Class myRemoteClass
    Inherits MarshalByRefObject
    Private ds As DataSet
    Private dt As DataTable
    Public Sub New()
            ds = New DataSet
            dt = New DataTable("OPC")
            
            ds.Tables.Add(dt)
            dt.Columns.Add("invnomid", Type.GetType("System.Int32"))
            dt.Columns.Add("paramid", Type.GetType("System.Int32"))
            dt.Columns.Add("Quality", Type.GetType("System.Int16"))
            dt.Columns.Add("TimeStamp", Type.GetType("System.DateTime"))    
            dt.Columns.Add("Value", Type.GetType("System.Decimal"))
            
    End Sub
    Public ReadOnly Property DataTableOPC() As DataTable
        Get
            DataTableOPC = dt
        End Get

    End Property
End Class

Служба-сервер. В References указываю библиотеку RemoteOPC.dll


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
 Shared Sub Main()
        System.ServiceProcess.ServiceBase.Run(New GetParOPC)
        Dim chan As TcpChannel = New TcpChannel( 8085 )
        ChannelServices.RegisterChannel(chan, False)
        RemotingConfiguration.RegisterWellKnownServiceType( _
    GetType(RemoteOPC.myRemoteClass), _
    "RemoteTest", _
    WellKnownObjectMode.SingleCall)
    End Sub

Protected Overrides Sub OnStart(ByVal args() As String)
cc = New CircleClass 'здесь создаём класс, в котором по циклу будет происходить 
'создание объекта класса приложения-сервера (сервера ОРС OPCClass)
End Sub

'В экземпляре OPCClass при вызове метода, который выполняется по таймеру раз в 10 сек, 
'происходит создание серверного объекта
Private ServerObjectFromserverClass As RemoteOPC.myRemoteClass
Public Sub ReadSync()
...
If ServerObjectFromserverClass Is Nothing Then
                        ServerObjectFromserverClass = New RemoteOPC.myRemoteClass
                    Else
                        ServerObjectFromserverClass.DataTableOPC.Clear()
                    End If
r = ServerObjectFromserverClass.DataTableOPC.NewRow()
                        r("invnomid") = CLng(InvNomIDParamID(i,  0 ))
                        r("paramid") = CLng(InvNomIDParamID(i,  1 ))
                        r("Itemid") = ItemIDs(i)
                        r("Value") = CType(Values(i +  1 ), Decimal)
                        r("Quality") = CType(Qualities(i +  1 ), Int16)
                        r("TimeStamp") = CType(TimeStamps(i +  1 ), DateTime)
                        ServerObjectFromserverClass.DataTableOPC.Rows.Add(r)
...
end sub



Клиентское приложение. В References указываю библиотеку RemoteOPC.dll

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub FormParent_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
...
Dim chan As TcpChannel = New TcpChannel()
ChannelServices.RegisterChannel(chan, False)
            
obj = CType(Activator.GetObject(GetType(RemoteOPC.myRemoteClass), _
            "tcp://localhost:8085/RemoteTest"), myRemoteClass) '!при выполнении возникает ошибка-
'Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 
            
If obj Is Nothing Then
...
Else
MsgBox(obj.DataTableOPC.Rows( 0 )( 0 ))
End If

End Sub

Тема для меня новая. Знающие люди, помогите пожалуйста понять, в чём дело!
...
Рейтинг: 0 / 0
Помогите разобраться с Remoting
    #35995603
DesertBrowser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема актуальна!
Внесла исправления.
1. В службе-сервере переменную выгружаемого класса сделала Public ServerObjectFromserverClass
2. В службе-сервере при регистрации класса изменила его название
Код: plaintext
1.
2.
3.
4.
RemotingConfiguration.RegisterWellKnownServiceType( _
    GetType(RemoteOPC.myRemoteClass), _
    "ServerObjectFromserverClass", _
    WellKnownObjectMode.SingleCall)
3. В клиенте тоже изменила название класса
Код: plaintext
1.
2.
obj = CType(Activator.GetObject(GetType(RemoteOPC.myRemoteClass), _
            "tcp://localhost:8085/ServerObjectFromserverClass"), myRemoteClass)
Но ничего не помогло... По-прежнему конечный компьютер отвергает запрос на подключение. Помогите, мучаюсь второй день! Что я делаю не так?
P.S. В Интернете искала информацию, но ничего полезного по этой ошибке не нашла.
P.P.S. А вообще нормально, что канал регистрируется в одном классе, а объект создаётся в другом?
...
Рейтинг: 0 / 0
Помогите разобраться с Remoting
    #35996119
DesertBrowser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Канал создался, когда сделала так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Shared Sub Main()
        
        Dim chan As TcpChannel = New TcpChannel( 8085 )
        ChannelServices.RegisterChannel(chan, False)
        RemotingConfiguration.RegisterWellKnownServiceType( _
    GetType(RemoteOPC.myRemoteClass), _
    "RemoteTest", _
    WellKnownObjectMode.SingleCall)
     System.ServiceProcess.ServiceBase.Run(New GetParOPC)
    End Sub

Теперь подключиться к нему могу, объект создаётся. Но он пуст, а должен быть наполнен строками... Подскажите пожалуйста, что мне исправить и как!!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Помогите разобраться с Remoting
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]