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

на главную

Жанры

Интернет-журнал "Домашняя лаборатория", 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 следующей его версией:

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

Сонный лекарь 7

Голд Джон
7. Сонный лекарь
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Сонный лекарь 7

Законы Рода. Том 4

Flow Ascold
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4

Внешники такие разные

Кожевников Павел
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Внешники такие разные

Дайте поспать! Том IV

Матисов Павел
4. Вечный Сон
Фантастика:
городское фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Дайте поспать! Том IV

Не грози Дубровскому! Том Х

Панарин Антон
10. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том Х

Законы Рода. Том 5

Flow Ascold
5. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 5

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Уязвимость

Рам Янка
Любовные романы:
современные любовные романы
7.44
рейтинг книги
Уязвимость

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Провинциал. Книга 1

Лопарев Игорь Викторович
1. Провинциал
Фантастика:
космическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Провинциал. Книга 1

Осознание. Пятый пояс

Игнатов Михаил Павлович
14. Путь
Фантастика:
героическая фантастика
5.00
рейтинг книги
Осознание. Пятый пояс

Невеста вне отбора

Самсонова Наталья
Любовные романы:
любовно-фантастические романы
7.33
рейтинг книги
Невеста вне отбора

Егерь

Астахов Евгений Евгеньевич
1. Сопряжение
Фантастика:
боевая фантастика
попаданцы
рпг
7.00
рейтинг книги
Егерь