Аннотация:
Первая часть статьи, рассказывающая о новой технологии межпроцессной коммуникации — Remoting. Это "родная" для .NET Framework технология, использующая все преимущества платформы. В статье разбираются такие тонкие моменты, как работа с контекстом и перехват создания объектов и вызова методов.
Если нам не помогут, то мы тоже никого не пощадим.
Что-то я не понял...
В Client.exe.config строка TestObject.Test1 означает: класс Test1 в пространстве имен TestObject.
Но где объявление этого класса? Или оно просто опущено?
Здравствуйте, EqWu, Вы писали:
EW>В Client.exe.config строка TestObject.Test1 означает: класс Test1 в пространстве имен TestObject. EW>Но где объявление этого класса? Или оно просто опущено?
Такого класса нет. Изменение имени таким образом приводит к тому, что Remoting больше не видит класс TestObject.Test как удалённый. Вместо этого можно было бы просто удалить эту строчку из конфига, но так просто быстрее да и потом оно нам всё равно понадобится.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Внутри .NET Remoting
От:
Аноним
Дата:
07.10.03 13:03
Оценка:
Народ , подскажите следующую вещь :
У меня при сборке происходит ругань на строку :
RemotingConfiguration.Configure("Server.exe.config");
Config file Server.config can not be read successfully due to exception System.IO.FileNotFoundException: The system cannot find the file specified.
Файл Server.exe.config лежит в одном каталоге с server.exe .
Может . я прав каких не даю ?
А>Народ , подскажите следующую вещь : А>У меня при сборке происходит ругань на строку : А>RemotingConfiguration.Configure("Server.exe.config");
А>Config file Server.config can not be read successfully due to exception System.IO.FileNotFoundException: The system cannot find the file specified. А>Файл Server.exe.config лежит в одном каталоге с server.exe . А>Может . я прав каких не даю ?
> ... > Наш объект является dll-модулем и будет возвращать название той программы, в которой он загружен. Это позволит легко определять, где в данный момент работает объект – на клиенте или на сервере. > ...
Т.е. объект должен быть скомпилирован отдельным проектом?
Здравствуйте, <Аноним>, Вы писали:
>> ... >> Наш объект является dll-модулем и будет возвращать название той программы, в которой он загружен. Это позволит легко определять, где в данный момент работает объект – на клиенте или на сервере. >> ...
А>Т.е. объект должен быть скомпилирован отдельным проектом?
В примере, да.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Внутри .NET Remoting
От:
Аноним
Дата:
29.07.05 05:58
Оценка:
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, <Аноним>, Вы писали:
>>> ... >>> Наш объект является dll-модулем и будет возвращать название той программы, в которой он загружен. Это позволит легко определять, где в данный момент работает объект – на клиенте или на сервере. >>> ...
А>>Т.е. объект должен быть скомпилирован отдельным проектом?
IT>В примере, да.
Спасибо.
Кхм, а каким образом? Если можно, поподробнее: какой проект создать и т.п. Я только что перешёл на .NET c Builder'a и мне не всё пока очевидно. Сначала я решил, что этот класс цепляется в проект клиента. Фраза > Наш объект является dll-модулем...
сбивает меня полностью с толку. Или в исходнике TestObject.cs просто опущен класс с точкой входа?
И где вообще в New Project для Visual C# DLL?
Первый этап полностью контролируется JIT. При обработке команды "newobj" в недрах JIT-компилятора вызывается следующий метод (взято из исходных текстов CLI 1.0 Release):
// fjit.cpp
FJitResult FJit::compileCEE_NEWOBJ();
...
Скажите, пожалуйста, где можно ознакомиться с исходниками CLI ?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Внутри .NET Remoting
От:
Аноним
Дата:
18.08.06 15:30
Оценка:
Здравствуйте, Игорь Ткачев, Вы писали:
ИТ>Аннотация: ИТ>Первая часть статьи, рассказывающая о новой технологии межпроцессной коммуникации — Remoting. Это "родная" для .NET Framework технология, использующая все преимущества платформы. В статье разбираются такие тонкие моменты, как работа с контекстом и перехват создания объектов и вызова методов.
А что планировалось во второй части статьи?
На какие другие интересные моменты стоит обратить внимание в .NET Remoting?
ИТ>После сборки всех модулей запустите сервер, а затем клиента. Если вы всё сделали правильно, клиент должен вывести на экран следующую строчку:
ИТ>Server.exe
Я сделал, как все было написано, но при запуске клиента получил:
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
Additional information: File or assembly name TestObject, or one of its dependencies, was not found.
Если поменять в конфигурационном файле Test, на Test1 — чтобы такой объект не был найден на сервере, объект создается на клиенте и все работает нормально. Сборка TestObject.dll присутствует в каталоге ..\Client\bin\debug. В чем может быть причина? Нужно ли этой сборке присваивать String name?
Здравствуйте, tlalok, Вы писали:
T>Я сделал, как все было написано, но при запуске клиента получил:
T>An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll T>Additional information: File or assembly name TestObject, or one of its dependencies, was not found.
T>Если поменять в конфигурационном файле Test, на Test1 — чтобы такой объект не был найден на сервере, объект создается на клиенте и все работает нормально. Сборка TestObject.dll присутствует в каталоге ..\Client\bin\debug. В чем может быть причина? Нужно ли этой сборке присваивать String name?
T>Спасибо
Сборка TestObject.dll должна присутствовать также и в Server\bin\debug.
См. "Когда на сервер приходит запрос от клиента, то сервер ищет сборку с именем TestObject (часть параметра после запятой), и в ней – класс TestObject.Test "
ИТ>Авторы: ИТ> Игорь Ткачев
ИТ>Аннотация: ИТ>Первая часть статьи, рассказывающая о новой технологии межпроцессной коммуникации — Remoting. Это "родная" для .NET Framework технология, использующая все преимущества платформы. В статье разбираются такие тонкие моменты, как работа с контекстом и перехват создания объектов и вызова методов.
напиши те пожалуйста перед каждым куском кода где он создается, в ddl'e, отдельно или раздельно, файлы конфигурации где должны находится? и как их создавать? где создавать?
Re: Внутри .NET Remoting
От:
Аноним
Дата:
26.06.09 00:54
Оценка:
Доброго времени суток уважаемые авторы статьи. Когда попытался запустить серверную часть, то вывалилось следующее:
Сбой с исключением "System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.Configuration.ConfigurationErrorsException: Система конфигурации не прошла инициализацию ---> System.Configuration.ConfigurationErrorsException: Неизвестный раздел конфигурации system.serviceModel. (c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config line 135)
в System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
в System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
в System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
в System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
--- Конец трассировки внутреннего стека исключений ---
в System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
в System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(String sectionName)
в System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
в System.Configuration.ConfigurationManager.GetSection(String sectionName)
в System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
в System.Net.Configuration.SettingsSectionInternal.get_Section()
в System.Net.Sockets.Socket.InitializeSockets()
в System.Net.Sockets.Socket.get_SupportsIPv4()
в System.Runtime.Remoting.Channels.Tcp.TcpServerChannel..ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider, IAuthorizeRemotingConnection authorizeCallback)
в System.Runtime.Remoting.Channels.Tcp.TcpServerChannel..ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider)
в System.Runtime.Remoting.Channels.Tcp.TcpChannel..ctor(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider)
--- Конец трассировки внутреннего стека исключений ---
в System.RuntimeMethodHandle._InvokeConstructor(Object[] args, SignatureStruct& signature, IntPtr declaringType)
в System.RuntimeMethodHandle.InvokeConstructor(Object[] args, SignatureStruct signature, RuntimeTypeHandle declaringType)
в System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
в System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
в System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
в System.Runtime.Remoting.RemotingConfigHandler.CreateChannelFromConfigEntry(ChannelEntry entry)
в System.Runtime.Remoting.RemotingConfigHandler.ConfigureChannels(RemotingXmlConfigFileData configData, Boolean ensureSecurity)
в System.Runtime.Remoting.RemotingConfigHandler.ConfigureRemoting(RemotingXmlConfigFileData configData, Boolean ensureSecurity)" при настройке службы удаленного взаимодействия.