Чтение онлайн

на главную - закладки

Жанры

Интернет-журнал "Домашняя лаборатория", 2007 №6
Шрифт:

<<<IN>>> parameters: (

}

===System.MarshalByRefObject, mscorlib, Version=1.0.3300.0,

Culture=neutral, PublicKeyToken=b77a5c561934e089

InitializeLifetimeservice

<<<OUT>>> parameters: (

}

===clr: SPbU.AOP_NET.Account, MyServer

Add

<<<IN>>> parameters: {

sum= 5

'

clientProcessId= 192)

===clr: SPbU.AOP_NET.Account, MyServer

Add

<<<IN>>> parameters: {

sum= 5

'

clientProcessId= 165)

===clr: SPbU.AOP_NET.Account, MyServer

Add

<<<OUT>>> parameters: {

}

===clr: SPbU.AOP_NET.Account, MyServer

Add

<<<OUT>>> parameters: {

}

===clr: SPbU.AOP_NET.Account, MyServer

Add

<<<IN>>> parameters: {

sum= 5

'

clientProcessId= 192)

===clr: SPbU.AOP_NET.Account, MyServer

Add

<<<OUT>>> parameters: {

}

Компоненты

размещаются в двух контекстах, но в одном домене синхронизации

Закомментируем атрибут Synchronization , приписанный классу Account. Теперь, просматривая вывод на консоль сервера, можно заметить, что компонент Account размещается в контексте 1, а компоненты Tax и News в контексте 2:

Server is listening

News context = 2 News constructor thread = 9 IsPoolThread = True

Tax context = 2 Tax constructor thread = 9 IsPoolThread = True

Account context = 1 Account constructor thread = 9 IsPoolThread = True

…….

Просматривая файл LogFile видим, что теперь перехватываются вызовы к компонентам Tax и News, поступающие от компонента Account:

===SPbU.AOP_NET.Tax, MyServer, Version=0.0.0.0,

Culture=neutral, PublicKeyToken=null

ctor

<<<IN>> parameters: {

}

===SPbU.AOP_NET.Tax, MyServer, Version=0.0.0.0,

Culture=neutral, PublicKeyToken=null

ctor

<<<OUT>>> parameters: {

}

===SPbU.AOP_NET.Tax, MyServer, Version=0.0.0.0,

Culture=neutral, PublicKeyToken=null

Notify

<<<IN>>> parameters: {

msg= new Account operation: +5)

===SPbU.AOP_NET.Tax, MyServer, Version=0.0.0.0,

Culture=neutral, PublicKeyToken=null

Notify

}

===SPbU.AOP_NET.Tax, MyServer, Version=0.0.0.0,

Culture=neutral, PublicKeyToken=null

get_news

<<<IN>>> parameters: {

}

===SPbU.AOP_NET.Tax, MyServer, Version=0.0.0.0,

Culture=neutral, PublicKeyToken=null

get_news

<<<OUT>>> parameters: {

}

===SPbU.AOP_NET.News, MyServer, Version=0.0.).0,

Culture=neutral, PublicKeyToken=null

Notify

<<<IN>>> parameters: {

msg= direct notification from Account)

===SPbU.AOP_NET.News, MyServer, Version=0.0.0.0,

Culture=neutral, PublicKeyToken=null

Notify

<<<OUT>>> parameters: {

}

В

рамках данного эксперимента мы покажем, что оба контекста синхронизации размещаются в одном домене синхронизации. Для этого необходимо показать, что ссылка на свойство синхронизации во втором контексте указывает на свойство синхронизации первого контекста, т. е. оба контекста совместно используют одно свойство синхронизации (одну очередь работ и т. д.).

Внесем в код сервера следующие дополнения:

namespace SPbU.AOP_NET {

……

public class Account: ContextBoundObject, IAccumulator,

IAudit, IAccumulatorNew{

……

public Account {

……

SynchronizationAttribute syncProperty =

(SynchronizationAttribute)

Thread.CurrentContext.GetProperty {

"Synchronization");

Console.WriteLine {

"Account syncProperty == Tax syncProperty "+

Object.ReferenceEquals(syncProperty, _tax.syncProperty));

}

……

}

……

public class Tax: ContextBoundObject {

……

private SynchronizationAttribute _syncProperty;

public Tax {

…….

_syncProperty =

(SynchronizationAttribute)

Thread.CurrentContext.GetProperty {

"Synchronization");

……

}

…….

internal SynchronizationAttribute syncProperty {

get { return _syncProperty;}

}

……

}

…….

Просматривая консоль сервера убеждаемся, что ссылки на свойство синхронизации в обоих контекстах (в контексте, в котором живет компонент Account и в контексте, в котором живут компоненты Tax и News) указывают на один объект — свойство синхронизации домена синхронизации:

Server is listening

News context = 2 News constructor thread = 9 IsPoolThread = True

Tax context = 2 Tax constructor thread = 9 IsPoolThread = True

Account context = 1 Account constructor thread = 9 IsPoolThread = True

Account syncProperty == Tax syncProperty True

…….

Компоненты размещаются в трех контекстах и в двух доменах синхронизации

Заменим атрибут синхронизации, приписанный компоненту News следующей его версией:

Поделиться:
Популярные книги

Бастард Императора

Орлов Андрей Юрьевич
1. Бастард Императора
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Бастард Императора

Измена дракона. Развод неизбежен

Гераскина Екатерина
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Измена дракона. Развод неизбежен

Барон ненавидит правила

Ренгач Евгений
8. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Барон ненавидит правила

Завод 2: назад в СССР

Гуров Валерий Александрович
2. Завод
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Завод 2: назад в СССР

Пышка и Герцог

Ордина Ирина
Фантастика:
юмористическое фэнтези
историческое фэнтези
фэнтези
5.00
рейтинг книги
Пышка и Герцог

Экономка тайного советника

Семина Дия
Фантастика:
фэнтези
5.00
рейтинг книги
Экономка тайного советника

Обгоняя время

Иванов Дмитрий
13. Девяностые
Фантастика:
попаданцы
5.00
рейтинг книги
Обгоняя время

Битва королей

Мартин Джордж Р.Р.
2. Песнь Льда и Огня
Фантастика:
фэнтези
9.61
рейтинг книги
Битва королей

Душелов. Том 2

Faded Emory
2. Внутренние демоны
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Душелов. Том 2

Возрождение Феникса. Том 2

Володин Григорий Григорьевич
2. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.92
рейтинг книги
Возрождение Феникса. Том 2

Черный маг императора 3

Герда Александр
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора 3

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота

Меч Предназначения

Сапковский Анджей
2. Ведьмак
Фантастика:
фэнтези
9.35
рейтинг книги
Меч Предназначения

Матабар. II

Клеванский Кирилл Сергеевич
2. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар. II