Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с System.Runtime.Remoting.Channels.HTTP, mono, компиляция на линуксе 
:(
    Опции темы
tigrik
Дата 12.7.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.9.2004

Репутация: нет
Всего: 3



при попытке компилировать код на линуксе с моно выходит следующая ошибка: 

"The type or namespace name `HTTP' does not exist in the namespace `System.Runtime.Remoting.Channels'. Are you missing an assembly reference?"


Код

using System;
using System.IO;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.HTTP;
namespace Server
{
   public class ServiceClass : MarshalByRefObject {
      public void AddMessage (String msg)
  {
         Console.WriteLine (msg);
  }
}
public class ServerClass
{
  public static void Main ()
  {
    HTTPChannel c = new HTTPChannel (1095);     ChannelServices.RegisterChannel (c);
    RemotingServices.RegisterWellKnownType ("Server","Server.ServiceClass","ServiceClass",WellKnownObjectMode.Singleton);
    Console.WriteLine ("Server ON at 1095");
     Console.WriteLine ("Press enter to stop the server...");
     Console.ReadLine ();
  }
 }
}


  

Это сообщение отредактировал(а) tigrik - 12.7.2006, 19:46
PM MAIL   Вверх
Kefir
Дата 12.7.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



Этот класс реализован в System.Runtime.Remoting.dll. Прикрути его к проге и посмотри что тогда будет.  smile  
PM MAIL WWW Skype   Вверх
tigrik
Дата 12.7.2006, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.9.2004

Репутация: нет
Всего: 3



а как прикрутить?

я попробовала с:

mcs -r:System.Runtime.Remoting.dll Server.cs

не работает :-( 
PM MAIL   Вверх
Kefir
Дата 12.7.2006, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



а что значит 
Цитата(tigrik @  12.7.2006,  12:22 Найти цитируемый пост)
не работает :-(  

как неработает? 
PM MAIL WWW Skype   Вверх
tigrik
Дата 12.7.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.9.2004

Репутация: нет
Всего: 3




думаю что длл он находит, т.к. если делаешь ошибку в имени то он говорит что не нашел

а так :
mcs Server.cs

или так:

mcs -r:System.Runtime.Remoting.dll Server.cs

 выдает одинаковую ошибку  
PM MAIL   Вверх
arilou
Дата 12.7.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



tigrik, мне так кацца что ты используешь Mono, или я не прав? 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
arilou
Дата 12.7.2006, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Там нету System.Runtime.Remoting.Channels.HTTP 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 13.7.2006, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(arilou @  12.7.2006,  22:04 Найти цитируемый пост)
tigrik, мне так кацца что ты используешь Mono, или я не прав? 


Цитата(tigrik @  12.7.2006,  19:44 Найти цитируемый пост)
при попытке компилировать код на линуксе с моно выходит следующая ошибка: 

 smile  


--------------------
user posted image
PM MAIL WWW   Вверх
tigrik
Дата 13.7.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.9.2004

Репутация: нет
Всего: 3



да, моно...

мне нужно просто вызвать функцию от удалённого объекта
подскажите как это можно сделать с моно чтобы на линуксе шло
(клиент и сервер)

а то не один пример что я нашла невозможно закомпилировать :-( 
PM MAIL   Вверх
arilou
Дата 13.7.2006, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



tigrik, переходи с Remoting на web-services, и тогда все заработает. 

Цитата(mr.DUDA @  13.7.2006,  09:33 Найти цитируемый пост)
Цитата(arilou @  12.7.2006,  22:04 )
tigrik, мне так кацца что ты используешь Mono, или я не прав? 
Цитата(tigrik @  12.7.2006,  19:44 )
при попытке компилировать код на линуксе с моно выходит следующая ошибка: 

Е-мое, в отпуске глаз замылился  smile Я по имени компилятора догадался  smile  


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
tigrik
Дата 15.7.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.9.2004

Репутация: нет
Всего: 3



ок, пример я домучила - теперь компилируется

сервер:

Код

using System;
using System.IO;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.Http;
//using System.Runtime.Remoting;
namespace NetSearchServer
{

   public class ServiceClass : MarshalByRefObject {
      public void AddMessage (String msg)
  {
         Console.WriteLine (msg);
  }
}
public class ServerClass
{
  public static void RunServer ()
  {
    HttpChannel c = new HttpChannel (1095);   
    System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel (c);
    System.Type type=typeof(ServiceClass);
    System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownServiceType(type,"ServiceClass",WellKnownObjectMode.Singleton);
    Console.WriteLine ("Server ON at 1095");
    Console.WriteLine ("Press enter to stop the server...");
    Console.ReadLine ();
  }
 }
}



клиент:

Код

using System;
using System.IO;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.Http;
using NetSearchServer;


namespace NetSearchClient
{
    class NetClient
    {
        public static void RunClient()
        {
                ServiceClass obj = (ServiceClass) Activator.GetObject(typeof(ServiceClass),
                        "http://localhost:1095/ServiceClass");
            obj.AddMessage("Hello from Client");
  }
    }
    
    
}


arilou
Цитата(arilou @  13.7.2006,  19:15 Найти цитируемый пост)
tigrik, переходи с Remoting на web-services, и тогда все заработает. 


а в чем конкретно недостатки Remoting?
и, если не затруднит, хотелось бы примерчик с web-services  

Это сообщение отредактировал(а) tigrik - 15.7.2006, 23:01
PM MAIL   Вверх
mr.DUDA
Дата 16.7.2006, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Пару замечаний:

1) Если по-честному, весь вышеприведённый код мог быть заменён на 2-3 строчки на сервере и клиенте, плюс .config-файлы с настройками.
2) Web-сервис в .NET представляет собой обычный класс, помеченный атрибутом [WebService] (или же унаследованный от класса WebService), и содержащий хотя бы один метод, помеченный атрибутом [WebMethod]. Для того, чтобы клиенту можно было вызвать веб-метод, нужно опубликовать веб-сервис на любом сервере (хотя бы на localhost) и с помощью утилиты wsdl.exe сгенерировать прокси-класс. Далее, клиент просто создаёт экземпляр прокси-класса, заполняет свойство Url и вызывает метод веб-сервиса. Как вариант, прокси-класс можно сгенерировать командой "Add Web Reference" в IDE Visual Studio или #Develop. 


--------------------
user posted image
PM MAIL WWW   Вверх
tigrik
Дата 16.7.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.9.2004

Репутация: нет
Всего: 3



ok, попробую.

допустим:

сервер:
Код


public class WebService : System.Web.Services.WebService
{
    [WebMethod]
    public void AddMessage (String msg)
   {
         Console.WriteLine (msg);
   }
}


вопрос: что именно кладется на сервер? насколько я поняла чтобы сгенерировать прохи надо иметь WSDL файл..
кто его генерирует?

  
PM MAIL   Вверх
mr.DUDA
Дата 16.7.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(tigrik @  16.7.2006,  14:05 Найти цитируемый пост)
вопрос: что именно кладется на сервер? насколько я поняла чтобы сгенерировать прохи надо иметь WSDL файл..

На сервер кладём .asmx-файл и скомпилированную DLL в папку bin.
WSDL-описание автоматом генерируется сервером, если зайти по линку на .asmx-файл и добавить в запрос:   ?wsdl 


--------------------
user posted image
PM MAIL WWW   Вверх
tigrik
Дата 18.7.2006, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.9.2004

Репутация: нет
Всего: 3



ок, wsdl  у меня сгенерировался, 
только с очень большим трудом после долгой и упорной настройки апаче

каким веб-сервером лучше для этого пользоваться? Он должен обязательно работать на линуксе...

 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1781 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.