Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / опыты в NET Remoting / 10 сообщений из 10, страница 1 из 1
19.06.2007, 14:19
    #34604904
Новичок1917
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опыты в NET Remoting
Решил попробовать свои силы в сабжевой технологии, сделал пример из одной статьи и получился облом...Может быть кто-то поможет понять почему?

Сервер:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
// Server.cs

using System;
using System.Runtime.Remoting;

namespace Server
{
  class Server
  {
    [STAThread]
    static void Main(string[] args)
    {
      RemotingConfiguration.Configure("Server.exe.config");

      Console.WriteLine("Press Enter to exit");
      Console.ReadLine();
    }
  }
}

Передаваемый класс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
// TestObject.cs

using System;

namespace TestObject
{
  public class Test: MarshalByRefObject
  {
    public string GetAppName()
    {
      return AppDomain.CurrentDomain.FriendlyName;
    }
  }
}

Клиент
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
// Client.cs
using System;
using System.Runtime.Remoting;
using TestObject;

namespace Client
{
  class Client
  {
    [STAThread]
    static void Main(string[] args)
    {
      RemotingConfiguration.Configure("Client.exe.config");

      Test test = new Test();
      Console.WriteLine(test.GetAppName());
    }
  }
}

Теперь файлы конфигураций
Сервер

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<configuration>
  <system.runtime.remoting>
    <application name="RemotingTest">
      <service>
        <wellknown 
          mode="SingleCall" 
          type="TestObject.Test, TestObject" 
          objectUri="Test.rem" />
      </service>
      <channels>
        <channel ref="tcp" port="8008" />
      </channels>
    </application>
  </system.runtime.remoting>
</configuration>

Клиент
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<configuration>
  <system.runtime.remoting>
    <application>
      <client>
        <wellknown 
          type="TestObject.Test, TestObject" 
          url="tcp://localhost:8008/RemotingTest/Test.rem" />
      </client>
    </application>
  </system.runtime.remoting>
</configuration>

Автор утверждает, что на выходе должны получить строку 'Server.exe', типа передача объекта на сервер произошла...А у меня все время Client...В чем может быть загвоздка? Может в каких то сетевых настройках?
...
Рейтинг: 0 / 0
19.06.2007, 15:59
    #34605318
Новичок1917
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опыты в NET Remoting
Ok...
А как бы диагностировать в чем проблема заключается?
Может быть какими-то программными средствами можно определить, что например серверная часть не запустилась, или в клиентской косяки, или в состыковке непосредственно...
...
Рейтинг: 0 / 0
19.06.2007, 16:00
    #34605324
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опыты в NET Remoting
Код: plaintext
Test test = new Test();
Как думаешь, какой и где объект создастся?
...
Рейтинг: 0 / 0
19.06.2007, 21:03
    #34606172
Новичок1917
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опыты в NET Remoting
Ну вот в статье утверждается, что
так как мы в начале делаем вот это:
RemotingConfiguration.Configure("Client.exe.config");

то объект создастся удаленно, а мы получим только ссылку...

PS: Я только начинаю изучать, так что сильно не пинайте...
...
Рейтинг: 0 / 0
19.06.2007, 22:52
    #34606260
опыты в NET Remoting
Рекомендую делать не xml-конфигурацией, а создавать всё в коде. Так понятнее, в случае чего, в каком точно месте не сработает.
...
Рейтинг: 0 / 0
20.06.2007, 10:02
    #34606748
опыты в NET Remoting
Никогда не делай в коде, а только в конф. файле, т.к. иначе не сможеш хостить свой объект в IIS.
Инструмент для проверки - всё ли Ок с сервером - это SoapSuds.exe.
...
Рейтинг: 0 / 0
20.06.2007, 11:09
    #34606984
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опыты в NET Remoting
Новичок1917Ну вот в статье утверждается, что
так как мы в начале делаем вот это:
RemotingConfiguration.Configure("Client.exe.config");

то объект создастся удаленно, а мы получим только ссылку...

PS: Я только начинаю изучать, так что сильно не пинайте...

Покажи-ка статью :)
И попробуй так:
Код: plaintext
1.
2.
3.
4.
RemotingConfiguration.Configure(ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath, false);
string objectUrl = RemotingConfiguration.GetRegisteredWellKnownClientTypes()[0].ObjectUrl;

Test test = Activator.GetObject(typeof(Test), objectUrl) as Test;
...
Рейтинг: 0 / 0
20.06.2007, 12:21
    #34607294
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опыты в NET Remoting
Нахлобуч Новичок1917Ну вот в статье утверждается, что
так как мы в начале делаем вот это:
RemotingConfiguration.Configure("Client.exe.config");

то объект создастся удаленно, а мы получим только ссылку...

PS: Я только начинаю изучать, так что сильно не пинайте...

Покажи-ка статью :)
И попробуй так:
Код: plaintext
1.
2.
3.
4.
RemotingConfiguration.Configure(ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath, false);
string objectUrl = RemotingConfiguration.GetRegisteredWellKnownClientTypes()[0].ObjectUrl;

Test test = Activator.GetObject(typeof(Test), objectUrl) as Test;

Не обязательно использовать Activator(хотя подругому и не сделать, если через интерфейс), но для ознакомления вполне достаточно предложенного способа автором, только он "по ходу" c конфингом перемудрил. Или ссылку на серверную сборку на клиенте не сделал, х.з.
А так вполне себе работает
Как пример
сервер
Код: 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.
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;


namespace RM
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpChannel och = new HttpChannel(4000);
            ChannelServices.RegisterChannel(och,false);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(TestObject), "Test", WellKnownObjectMode.Singleton);
            Console.WriteLine("Press Enter to exit");
            Console.ReadLine();
        }

    }
}



Удаленный объект
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;

namespace RM
{
      public class TestObject: MarshalByRefObject
    {
        public string GetAppName()
        {
            return "Дурень";
        }
        //public void Configure()
        //{
        //    RemotingConfiguration.Configure("RM.exe.config",true);
        //}
    }
}
клиент
Код: 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.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using RM;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

namespace RM_user
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            HttpChannel ch = new HttpChannel(0);
            ChannelServices.RegisterChannel(ch, false);
            RemotingConfiguration.RegisterWellKnownClientType(typeof(RM.TestObject), "http://localhost:4000/Test");
            TestObject test = new TestObject();
            Console.WriteLine(test.GetAppName());

        }
    }
}
...
Рейтинг: 0 / 0
20.06.2007, 14:27
    #34607842
Новичек1917
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опыты в NET Remoting
Уф...Разобрался...
Косяк был на поверхности как обычно...
В статье автор утверждал, что в конфиге тег
wellknown type имеем след формат: "namespace.type,namespace"
на деле все оказалось немножко не так...
ссылку на статью обязательно скину чуть позже :)
Спасибо всем за участие....

PS:Полностью согласен, что в коде конфигурацию стоит писать разве что для проверки...
...
Рейтинг: 0 / 0
20.06.2007, 20:58
    #34609083
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опыты в NET Remoting
МлекопитающееНикогда не делай в коде, а только в конф. файле, т.к. иначе не сможеш хостить свой объект в IIS.
Инструмент для проверки - всё ли Ок с сервером - это SoapSuds.exe.

Ха-ха, там можно делать, если все работает.
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / опыты в NET Remoting / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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