powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Взаимодействие 2-х remoting серверов
1 сообщений из 1, страница 1 из 1
Взаимодействие 2-х remoting серверов
    #36039041
22222222222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изучаю remoting. Мне необходимо организовать связь между двумя remoting серверами. Клиент передает данные на обработку 1 серверу, который далее передает их на 2 сервер. Второй обработав возвращает...
Не получается правильно организовать взаимодействие между 1 и 2 сервером?

Клиент

Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
using System;
using System.Data;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Activation;

#endregion

namespace TestRemoting
{
  class Program
  {
     static void Main(string[] args)
     {
    ChannelServices.RegisterChannel(new TcpClientChannel(),false);
        TestMetod obj = (TestMetod)Activator.GetObject(typeof(TestMetod), "tcp://localhost:8086/Hi");
            
             DataTable __table1 = new DataTable("Test");

            __table1.Columns.Add("ID", typeof(int));
            __table1.Columns.Add("TEXT", typeof(string));

            DataRow __row = __table1.NewRow();
            __row["ID"] = 1;
            __row["TEXT"] = "Строка1";
            __table1.Rows.Add(__row);

            __row = __table1.NewRow();
            __row["ID"] = 2;
            __row["TEXT"] = "Строка2";
            __table1.Rows.Add(__row);

            DataTable __table2 = obj._Test_table(__table1);
            
            Console.ReadLine();
     }
  }

  public class TestMetod : System.MarshalByRefObject
  {
    public DataTable _Test_table(DataTable __table)
    {
      return __table;
    }
  }
}

Сервер1
Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
using System;
using System.Collections;
using System.Data;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

namespace TestRemoting
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("СЕРВЕР1");
            
            TcpServerChannel tcpChannel = new TcpServerChannel(8086);
            ChannelServices.RegisterChannel(tcpChannel,false);
            
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(TestMetod), "Hi", WellKnownObjectMode.SingleCall);
            System.Console.WriteLine("Enter для остановки сервера");
           
            System.Console.ReadLine();
        }
    }
    
    public class TestMetod : System.MarshalByRefObject
    {
        public DataTable _Test_table(DataTable __table)
        {
          
            ChannelServices.RegisterChannel(new TcpClientChannel(), false);

            TestMetod2 obj2 = (TestMetod2)Activator.GetObject(typeof(TestMetod2), "tcp://localhost:9086/Hi");

            if (obj2 == null)
            {
                Console.WriteLine("сервер не найден");
                return __table;
            }
            
            return obj2._Test_table(__table);
        }
    }

    public class TestMetod2 : System.MarshalByRefObject
    {
        public DataTable _Test_table(DataTable __table)
        {
            return __table;
        }
    }
}

Сервер2
Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
using System;
using System.Collections;
using System.Data;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

namespace TestRemoting
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpServerChannel tcpChannel = new TcpServerChannel(9086);

            Console.WriteLine("СЕРВЕР2");
            
            ChannelServices.RegisterChannel(tcpChannel,false);
            
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(TestMetod2), "Hi", WellKnownObjectMode.SingleCall);
            System.Console.WriteLine("Enter для остановки СЕРВЕРа2");
          
            System.Console.ReadLine();
        }
    }

    public class TestMetod2 : System.MarshalByRefObject
    {
        public DataTable _Test_table(DataTable __table)
        {
            Console.WriteLine("Вызов таблицы был обработан успешно.");

            DataRow __row = __table.NewRow();
            __row["ID"] = 3;
            __row["TEXT"] = "Новая строка";
            __table.Rows.Add(__row);

            __row = __table.NewRow();
            __row["ID"] = 4;
            __row["TEXT"] = "Новая строка";
            __table.Rows.Add(__row);
            
            return __table;
        }
    }
}
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Взаимодействие 2-х remoting серверов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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