Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Взаимодействие 2-х remoting серверов / 1 сообщений из 1, страница 1 из 1
12.06.2009, 14:36
    #36039041
22222222222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие 2-х remoting серверов
Изучаю 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
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Взаимодействие 2-х remoting серверов / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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