Успешно были проведены испытания, основной целью которых была интеграция smalltalk-образов на уровне посылки сообщений.
Был выполнен в workspace программный код: start to: end execute: [:index| d := (a + b + c) * index. transcript cr; show: d string. transcript2 cr; show: d factorial string]. где переменные start, end, transcript, transcript2 содержали представителей удаленных объектов, расположенных в двух других образах. Вместо селектора to:do: пришлось использовать to:execute: В испытаниях объекты использовали при взаимодействии с внешними объектами только сообщения (виртуальная машина не используется). -- http://groups.google.ru/group/sugr |
Звучит интересно, но как-то завуалировано. start, end, transcript, transcript2 это надо полагать некие делегаты? Что значит виртуальная машина не используется, в каком образе считается factorial, работает блок? Сколько всего образов? Какому образу принадлежат start и end. Если удаленному, то что будет если их значение поменяется, или они просто уйдут в garbage collection. Что будет если в удаленном образе произойдет ошибка? В чем суть задачи?
2010/10/26 Nikolay Kleptsov <[hidden email]> Успешно были проведены испытания, основной целью которых была интеграция smalltalk-образов на уровне посылки сообщений. -- http://groups.google.ru/group/sugr |
start, end, transcript, transcript2 экземпляры класса Presenter. Основное назначение представителя, перенаправить сообщение удаленному объекту и ждать выполнения сообщения.
В испытаниях использовалось три компьютера соединенные через локальную сеть. На каждом компьютере запускался Pharo-образ с сервером объектов. На сервере размещаются опубликованные объекты и ответы на сообщения. Посылка удаленного сообщения выполняется по следующей цепочке: - представитель перехватывает сообщение в doesNotUnderstand: aMsg методе. - публикует аргументы сообщения на локальном сервере, если они есть - упаковывает в строковой объект селектор и указатели на аргументы сообщения. Также добавляется получатель. - посылает упакованное строковое значение по сети удаленному серверу и ждет ответа. - сервер создает представителей для удаленных объектов на стороне сервера. - собирает сообщение из представителей аргументов и селектора. - посылает сообщение получателю и публикует ответ. - сигнализирует отправителю об окончании - отравитель возвращает ответ Что значит виртуальная машина не используется? Обмен сообщений между удаленными объектами не использует примитивы. Окончательная информация передается через селекторы. в каком образе считается factorial? В образе расположения получателя. Если получатель сообщения factorial расположен в образе Image2, то сообщение будет выполнено в Image2 и ответ опубликован на локальном сервере. Какому образу принадлежат start и end? Программный код и переменные соответственно расположены на Image1. Представитель (Presenter) подкласс Object. Когда на него не ссылается ни одна переменная, утилизируется обычным способом. Опубликованные объекты утилизируются с помощью специального процесса. При возникновении ошибки возвращается строковой объект. (Не доработано) Репозиторий расположен: http://www.squeaksource.com/Amers В образе должен быть установлен Seaside 3.0 Рабочий образ: http://ubuntuone.com/p/Lyt/ Виртуальная машина: http://squeakvm.org/win32/release/SqueakVM-Win32-4.1.1-bin.zip или http://squeakvm.org/unix/release/Squeak-4.0.3.2202-linux_i386.tar.gz В категории Amers-Tests расположены тесты и проверка производительности некоторых объектов. 2010/10/26 Alex Kogan <[hidden email]> Звучит интересно, но как-то завуалировано. start, end, transcript, transcript2 это надо полагать некие делегаты? Что значит виртуальная машина не используется, в каком образе считается factorial, работает блок? Сколько всего образов? Какому образу принадлежат start и end. Если удаленному, то что будет если их значение поменяется, или они просто уйдут в garbage collection. Что будет если в удаленном образе произойдет ошибка? В чем суть задачи? -- http://groups.google.ru/group/sugr |
CONTENTS DELETED
The author has deleted this message.
|
И чем отличается от rST(RemoteSmalltalk) и UbiquiTalk? (Сейчас их вроде бы можно загрузить в Pharo 1.1)
26 октября 2010 г. 23:38 пользователь Владимир Мусулайнен <[hidden email]> написал: В детали не совсем вник. -- http://groups.google.ru/group/sugr |
In reply to this post by Nikolay Kleptsov
Судя по описанию, это типичный RPC.
Presenter выступает в роли прокси, который отвечает за передачу сообщения удаленной стороне. Непонятно только, зачем нужен Seaside? В Фаро действительно ведется дискуссия о создании RPC фреймворка для работы с удаленными образами. Только требования - он должен быть маленьким, таким, чтобы его можно было установить в kernel image, в которой фактически ничего нет, кроме самого нужного и использовать его для удаленной отладки и разработки. Естесвенно, образ с установленным Seaside это уже далеко не минимально возможный kernel image. Также интересует, в чем у вас качественные отличия от другого проекта - Remote Smalltalk. http://www.squeaksource.com/rST 2010/10/26 Nikolay Kleptsov <[hidden email]>: > start, end, transcript, transcript2 экземпляры класса Presenter. Основное > назначение представителя, перенаправить сообщение удаленному объекту и ждать > выполнения сообщения. > В испытаниях использовалось три компьютера соединенные через локальную сеть. > На каждом компьютере запускался Pharo-образ с сервером объектов. На сервере > размещаются опубликованные объекты и ответы на сообщения. > Посылка удаленного сообщения выполняется по следующей цепочке: > - представитель перехватывает сообщение в doesNotUnderstand: aMsg методе. > - публикует аргументы сообщения на локальном сервере, если они есть > - упаковывает в строковой объект селектор и указатели на аргументы > сообщения. Также добавляется получатель. > - посылает упакованное строковое значение по сети удаленному серверу и ждет > ответа. > - сервер создает представителей для удаленных объектов на стороне сервера. > - собирает сообщение из представителей аргументов и селектора. > - посылает сообщение получателю и публикует ответ. > - сигнализирует отправителю об окончании > - отравитель возвращает ответ > > Что значит виртуальная машина не используется? > Обмен сообщений между удаленными объектами не использует примитивы. > Окончательная информация передается через селекторы. > > в каком образе считается factorial? > В образе расположения получателя. Если получатель сообщения factorial > расположен в образе Image2, то сообщение будет выполнено в Image2 и ответ > опубликован на локальном сервере. > > Какому образу принадлежат start и end? > Программный код и переменные соответственно расположены на Image1. > Представитель (Presenter) подкласс Object. Когда на него не ссылается ни > одна переменная, утилизируется обычным способом. Опубликованные объекты > утилизируются с помощью специального процесса. > При возникновении ошибки возвращается строковой объект. (Не доработано) > > Репозиторий расположен: http://www.squeaksource.com/Amers > В образе должен быть установлен Seaside 3.0 > > Рабочий образ: http://ubuntuone.com/p/Lyt/ > Виртуальная машина: > http://squeakvm.org/win32/release/SqueakVM-Win32-4.1.1-bin.zip или > http://squeakvm.org/unix/release/Squeak-4.0.3.2202-linux_i386.tar.gz > > В категории Amers-Tests расположены тесты и проверка производительности > некоторых объектов. > > 2010/10/26 Alex Kogan <[hidden email]> >> >> Звучит интересно, но как-то завуалировано. start, end, transcript, >> transcript2 это надо полагать некие делегаты? Что значит виртуальная машина >> не используется, в каком образе считается factorial, работает блок? Сколько >> всего образов? Какому образу принадлежат start и end. Если удаленному, то >> что будет если их значение поменяется, или они просто уйдут в garbage >> collection. Что будет если в удаленном образе произойдет ошибка? В чем суть >> задачи? >> >> 2010/10/26 Nikolay Kleptsov <[hidden email]> >>> >>> Успешно были проведены испытания, основной целью которых была интеграция >>> smalltalk-образов на уровне посылки сообщений. >>> >>> Был выполнен в workspace программный код: >>> start to: end execute: >>> [:index| d := (a + b + c) * index. >>> transcript cr; show: d string. >>> transcript2 cr; show: d factorial string]. >>> где переменные start, end, transcript, transcript2 содержали >>> представителей удаленных объектов, расположенных в двух других образах. >>> Вместо селектора to:do: пришлось использовать to:execute: >>> В испытаниях объекты использовали при взаимодействии с внешними объектами >>> только сообщения (виртуальная машина не используется). >>> >>> -- >>> http://groups.google.ru/group/sugr >> >> -- >> http://groups.google.ru/group/sugr > > -- > http://groups.google.ru/group/sugr -- Best regards, Igor Stasenko AKA sig. -- http://groups.google.ru/group/sugr |
зачем нужен Seaside?
Используются класс Comanche сервера: TcpService On 27/10/2010, Igor Stasenko <[hidden email]> wrote: > Судя по описанию, это типичный RPC. > Presenter выступает в роли прокси, который отвечает за передачу > сообщения удаленной стороне. > Непонятно только, зачем нужен Seaside? > В Фаро действительно ведется дискуссия о создании RPC фреймворка для > работы с удаленными образами. > Только требования - он должен быть маленьким, таким, чтобы его можно > было установить в kernel image, > в которой фактически ничего нет, кроме самого нужного и использовать > его для удаленной отладки и разработки. > Естесвенно, образ с установленным Seaside это уже далеко не минимально > возможный kernel image. > Также интересует, в чем у вас качественные отличия от другого проекта > - Remote Smalltalk. > http://www.squeaksource.com/rST > > 2010/10/26 Nikolay Kleptsov <[hidden email]>: >> start, end, transcript, transcript2 экземпляры класса Presenter. Основное >> назначение представителя, перенаправить сообщение удаленному объекту и >> ждать >> выполнения сообщения. >> В испытаниях использовалось три компьютера соединенные через локальную >> сеть. >> На каждом компьютере запускался Pharo-образ с сервером объектов. На >> сервере >> размещаются опубликованные объекты и ответы на сообщения. >> Посылка удаленного сообщения выполняется по следующей цепочке: >> - представитель перехватывает сообщение в doesNotUnderstand: aMsg методе. >> - публикует аргументы сообщения на локальном сервере, если они есть >> - упаковывает в строковой объект селектор и указатели на аргументы >> сообщения. Также добавляется получатель. >> - посылает упакованное строковое значение по сети удаленному серверу и >> ждет >> ответа. >> - сервер создает представителей для удаленных объектов на стороне сервера. >> - собирает сообщение из представителей аргументов и селектора. >> - посылает сообщение получателю и публикует ответ. >> - сигнализирует отправителю об окончании >> - отравитель возвращает ответ >> >> Что значит виртуальная машина не используется? >> Обмен сообщений между удаленными объектами не использует примитивы. >> Окончательная информация передается через селекторы. >> >> в каком образе считается factorial? >> В образе расположения получателя. Если получатель сообщения factorial >> расположен в образе Image2, то сообщение будет выполнено в Image2 и ответ >> опубликован на локальном сервере. >> >> Какому образу принадлежат start и end? >> Программный код и переменные соответственно расположены на Image1. >> Представитель (Presenter) подкласс Object. Когда на него не ссылается ни >> одна переменная, утилизируется обычным способом. Опубликованные объекты >> утилизируются с помощью специального процесса. >> При возникновении ошибки возвращается строковой объект. (Не доработано) >> >> Репозиторий расположен: http://www.squeaksource.com/Amers >> В образе должен быть установлен Seaside 3.0 >> >> Рабочий образ: http://ubuntuone.com/p/Lyt/ >> Виртуальная машина: >> http://squeakvm.org/win32/release/SqueakVM-Win32-4.1.1-bin.zip или >> http://squeakvm.org/unix/release/Squeak-4.0.3.2202-linux_i386.tar.gz >> >> В категории Amers-Tests расположены тесты и проверка производительности >> некоторых объектов. >> >> 2010/10/26 Alex Kogan <[hidden email]> >>> >>> Звучит интересно, но как-то завуалировано. start, end, transcript, >>> transcript2 это надо полагать некие делегаты? Что значит виртуальная >>> машина >>> не используется, в каком образе считается factorial, работает блок? >>> Сколько >>> всего образов? Какому образу принадлежат start и end. Если удаленному, то >>> что будет если их значение поменяется, или они просто уйдут в garbage >>> collection. Что будет если в удаленном образе произойдет ошибка? В чем >>> суть >>> задачи? >>> >>> 2010/10/26 Nikolay Kleptsov <[hidden email]> >>>> >>>> Успешно были проведены испытания, основной целью которых была интеграция >>>> smalltalk-образов на уровне посылки сообщений. >>>> >>>> Был выполнен в workspace программный код: >>>> start to: end execute: >>>> [:index| d := (a + b + c) * index. >>>> transcript cr; show: d string. >>>> transcript2 cr; show: d factorial string]. >>>> где переменные start, end, transcript, transcript2 содержали >>>> представителей удаленных объектов, расположенных в двух других образах. >>>> Вместо селектора to:do: пришлось использовать to:execute: >>>> В испытаниях объекты использовали при взаимодействии с внешними >>>> объектами >>>> только сообщения (виртуальная машина не используется). >>>> >>>> -- >>>> http://groups.google.ru/group/sugr >>> >>> -- >>> http://groups.google.ru/group/sugr >> >> -- >> http://groups.google.ru/group/sugr > > > > -- > Best regards, > Igor Stasenko AKA sig. > > -- > http://groups.google.ru/group/sugr -- http://groups.google.ru/group/sugr |
И чем отличается от rST(RemoteSmalltalk) и UbiquiTalk?
На сколько мне понятно, rST использует при посылке сообщений удаленным объектам сериализацию объектов. Аргрументы и отвыты сообщений "перемещаются" из образа в образ. Для правильной сериализации нужны соответствующие классы как на стороне клиента так и на стороне сервера. Операции с числами ни в примерах ни в тестах я не обнаружил, поддерживается ли числа, не известно. Amers используют совершенно другой принцип. Объекты и результаты сообщений не перемещаются через образы, а размещаются в "родном" образе. Используются только ссылки на объекты. Например, fulName := name, surname. Результат будет размещен на стороне получателя, а переменной fullName на стороне отправителя, будет присвоен представитель, ссылающийся на результат. Когда на представитель не ссылается ни одна переменная, gc его утилизирует. Сообщения будут корректно отравляться, если они не будут проходить через примитив. т.е. объекты "видят" друг друга только через сообщения. Пример. Сравнение булевых объектов. True(Object) >> = anObject ^self == anObject True(ProtoObject) >> == anObject <primitive: 110> self primitiveFailed На нижнем уровне вступает в действие примитив. Отправитель не сможет сравнить через сообщение. Если переписать по другому. ATrue >> equeal: anObject ^ aBoolean equalTrue ATrue >> equalTrue ^ self. AFalse >> equalTrue ^ self. Между получателем и отправителем отсутствует примитив. Становиться не важно какая используется ВМ, какой класс объекта, тип образа. Главное чтобы имелась ссылка на удаленный объект и корректно реализован протокол сообщений. Есть какое-то отличие от opentalk в VW smalltalk? К сожалению не установлен VW зачем нужен Seaside? Вместо Seaside достаточно установить категорию KomService Komanche сервера -- http://groups.google.ru/group/sugr |
Странно, я думал rSt так и работает. А какие объекты передавать по ссылке , а какие по значению (копировать на сервер) - это настраиваеться. 27 октября 2010 г. 17:42 пользователь Nikolay Kleptsov <[hidden email]> написал:
-- http://groups.google.ru/group/sugr |
Самый лучший способ, сравнить в программном коде.
Давайте попробуем сравним как исполнится программный код: start := 1. stop := 10000. a := 24.5. start to: stop do: [:index| s := (index * a) sqrt. Transcript show: s asString ] где start, index, Transcript расположены в image2 a, программный код в image1. On 27/10/2010, Denis Kudriashov <[hidden email]> wrote: > Странно, я думал rSt так и работает. А какие объекты передавать по ссылке , > а какие по значению (копировать на сервер) - это настраиваеться. > > > 27 октября 2010 г. 17:42 пользователь Nikolay Kleptsov < > [hidden email]> написал: > >> И чем отличается от rST(RemoteSmalltalk) и UbiquiTalk? >> На сколько мне понятно, rST использует при посылке сообщений удаленным >> объектам сериализацию объектов. Аргрументы и отвыты сообщений >> "перемещаются" из образа в образ. Для правильной сериализации нужны >> соответствующие классы как на стороне клиента так и на стороне >> сервера. Операции с числами ни в примерах ни в тестах я не обнаружил, >> поддерживается ли числа, не известно. >> Amers используют совершенно другой принцип. Объекты и результаты >> сообщений не перемещаются через образы, а размещаются в "родном" >> образе. Используются только ссылки на объекты. Например, fulName := >> name, surname. Результат будет размещен на стороне получателя, а >> переменной fullName на стороне отправителя, будет присвоен >> представитель, ссылающийся на результат. Когда на представитель не >> ссылается ни одна переменная, gc его утилизирует. >> >> Сообщения будут корректно отравляться, если они не будут проходить >> через примитив. т.е. объекты "видят" друг друга только через >> сообщения. >> Пример. Сравнение булевых объектов. >> True(Object) >> = anObject >> ^self == anObject >> >> True(ProtoObject) >> == anObject >> <primitive: 110> >> self primitiveFailed >> На нижнем уровне вступает в действие примитив. Отправитель не сможет >> сравнить через сообщение. >> Если переписать по другому. >> ATrue >> equeal: anObject >> ^ aBoolean equalTrue >> >> ATrue >> equalTrue >> ^ self. >> >> AFalse >> equalTrue >> ^ self. >> Между получателем и отправителем отсутствует примитив. Становиться не >> важно какая используется ВМ, какой класс объекта, тип образа. Главное >> чтобы имелась ссылка на удаленный объект и корректно реализован >> протокол сообщений. >> >> Есть какое-то отличие от opentalk в VW smalltalk? >> К сожалению не установлен VW >> >> зачем нужен Seaside? >> Вместо Seaside достаточно установить категорию KomService Komanche сервера >> >> -- >> http://groups.google.ru/group/sugr >> > > -- > http://groups.google.ru/group/sugr -- http://groups.google.ru/group/sugr |
In reply to this post by Denis Kudriashov
2010/10/27 Denis Kudriashov <[hidden email]>:
> > Странно, я думал rSt так и работает. А какие объекты передавать по ссылке , > а какие по значению (копировать на сервер) - это настраиваеться. > ну да. иногда полезно с сереализацией, иногда нет. да и в любом случае сереализация нужна - хотя бы чтоб селектор передать :) > > 27 октября 2010 г. 17:42 пользователь Nikolay Kleptsov > <[hidden email]> написал: >> >> И чем отличается от rST(RemoteSmalltalk) и UbiquiTalk? >> На сколько мне понятно, rST использует при посылке сообщений удаленным >> объектам сериализацию объектов. Аргрументы и отвыты сообщений >> "перемещаются" из образа в образ. Для правильной сериализации нужны >> соответствующие классы как на стороне клиента так и на стороне >> сервера. Операции с числами ни в примерах ни в тестах я не обнаружил, >> поддерживается ли числа, не известно. >> Amers используют совершенно другой принцип. Объекты и результаты >> сообщений не перемещаются через образы, а размещаются в "родном" >> образе. Используются только ссылки на объекты. Например, fulName := >> name, surname. Результат будет размещен на стороне получателя, а >> переменной fullName на стороне отправителя, будет присвоен >> представитель, ссылающийся на результат. Когда на представитель не >> ссылается ни одна переменная, gc его утилизирует. >> >> Сообщения будут корректно отравляться, если они не будут проходить >> через примитив. т.е. объекты "видят" друг друга только через >> сообщения. >> Пример. Сравнение булевых объектов. >> True(Object) >> = anObject >> ^self == anObject >> >> True(ProtoObject) >> == anObject >> <primitive: 110> >> self primitiveFailed >> На нижнем уровне вступает в действие примитив. Отправитель не сможет >> сравнить через сообщение. >> Если переписать по другому. >> ATrue >> equeal: anObject >> ^ aBoolean equalTrue >> >> ATrue >> equalTrue >> ^ self. >> >> AFalse >> equalTrue >> ^ self. >> Между получателем и отправителем отсутствует примитив. Становиться не >> важно какая используется ВМ, какой класс объекта, тип образа. Главное >> чтобы имелась ссылка на удаленный объект и корректно реализован >> протокол сообщений. >> >> Есть какое-то отличие от opentalk в VW smalltalk? >> К сожалению не установлен VW >> >> зачем нужен Seaside? >> Вместо Seaside достаточно установить категорию KomService Komanche сервера >> >> -- >> http://groups.google.ru/group/sugr > > -- > http://groups.google.ru/group/sugr -- Best regards, Igor Stasenko AKA sig. -- http://groups.google.ru/group/sugr |
Free forum by Nabble | Edit this page |