Что означает дружественные сборки?

2 коментари(и/ев)

Что означает дружественные сборки?Как известно, чтобы получить доступ к классу из другой сборки, этот класс должен быть обьявлен как public. Однако такие действия не всегда являются лучшим решением, так как в результате классом может воспользоваться кто угодно. Существует и другой модификатор доступа  - internal. Пометив класс как internal, область его видимости ограничивается сборкой в которой он обьявлен. Иногда же возникает необходимость объединить эти два подходы, то есть класс должен быть видим только внутри сборки, где он определён, и в некоторых случаях вести как public. Хорошим пример может послужить разбиение приложения на слои (layer), где каждому слою соответствует отдельная сборка. До появления .NET Framework 2.0 единственным выходом из этой ситуации было определения класса как public, но с выходом последнего появился специальный атрибут InternalsVisibleTo, который позволяет делать сборки "дружественными".

Например, у нас есть сборка А, классы которой помечены как internal. Для того чтобы сборка В могла обращаться к internal классам сборки А, в последнюю нужно добавить атрибут

[code=c#][assembly: InternalsVisibleTo("'имя сборки В', PublicKey='публичный ключ'")].[/code]

Применение данного атрибута распространяется как на internal классы, так и на методы, свойства.

PS: использовать данный атрибут можно и в юнит-тестах, когда необходимо протестировать internal методы. Кстати, майкрософтовцы и сами широко используют данный атрибут, как пример сборка System.Data, посмотрите рефлектором.

Блог умер?!

7 коментари(и/ев)

Блог умер?!Как все могли заметить, последний месяц вышел совсем непродуктивным (3 поста за ноябрь - это слишком мало). Но этому есть ряд причин, хотя последние, как по мне, скорее отмазка. Главное чем я занимался - это готовился к экзамену 70-536 Microsoft .NET Framework - Application Development Foundation.

Так сложилось, что после сдачи в октябре экзамена 70-528, начальство порекомендовало сдать ещё один. Зачем?! Сложный вопрос... Возможно, чтобы просто оттянуть повышение зарплаты, надеясь на то, что следующий экзамен я соберусь сдавать не в скором времени. А возможно действительно во внимание принимается только получение статуса Microsoft Certified Technology Specialist (MCTS). Вообщем, ответы на все вопросы я получу в ближайшем будущем, так как уже через несколько дней мне предстоит сдать второй экзамен (70-536). Вот тогда-то всё и станет на свои места. Пока я надеюсь на лучшее и то, что было обещано, будет выполнено.

По экзамену. Подготовка к этому экзамену выдалась на много интересней. Я наконец-то прочитал книгу Рихтера "CRL via C#", которую купил года два назад. Это мне принесло наибольшее удовольствие. Изо всех книг по .NET Framework, которые есть у меня (2 издания Троелсена, Дейтел и т.д.) - эта на голову выше. Как по мне, она достойна внимания каждого .NET-разработчика.

Как показала подготовка, за более чем два года работы на .NET Framework, мне приходилось использовать далеко не все его возможности. 100%-новой темой для меня оказалась Code Access Security (CAS), до экзамена я даже и не догадывался об существовании таких возможностей. Наконец-то более детально разобрался с потоками, синхронизацией доступа к данным на основе блокировок, асинхронной моделью программирования, доменами, отражением, вообщем, со всем, для чего раньше нехватало времени.

Как и предидущая книга по 70-528 от Майкрософта, для 70-536 экзамена оказалась не лучше. К сожалению, её всё-таки пришлось читать, так как некоторый материал был изложен только в ней. 

На протяжении всего времени, для лучшего запоминания материала, составлял краткие заметки, которых в итоге собралось на 14 вордовских страниц. В ближайшем будущем постараюсь довести их до ума и выложить на блоге. Так же насобирал порядка 30 интересных вопросов по основам .NET Framework, на которых, сообственно, и собираюсь сконцентрировать свое внимание.

PS: блог снова оживает, я надеюсь.... :)

Быстрый способ получения MCP ID

4 коментари(и/ев)

MCP, Microsoft certified professional Две недели назад я сдал экзамен Microsoft® .NET Framework 2.0 - Web-based Client Development и на протяжении этого времени мне должны были прислать MCP ID. Я не знаю как там у них настроен этот процесс, но сюда по тому, что в течении двух недель я так и не получил от Майкрософта ни одного письма, явно все идёт через жо..
Сегодня моё терпение кончилось и, следуя совету коллеги по работе, решил написать им письмо. Результаты не заставили себя ждать.
Письмо было примерно следующего формата:

Hello,

My name is Andrey. Last month (October 23, 2008) I've past exam
70-528 Microsoft .NET Framework 2.0-Web-Based Client Development in
Prometric.
 
Candidate: andrii kuzmenko
Exam Number: 070-528
Сandidate id: *****
Number: ***
Registration: *********
 
When I'll get my mcp id?
Thank you.


Через несколько часов мне отписали и попросили ещё отослать отсканированные копии документа, котрый выдали в сертификационном центре. Только после этого пришло два письма, в одном был MCP ID, во втором - Access code.

Письмо писал сюда: emeamcp@msdirectservices.com

А вот и ссылка на транскрипт http://www.microsoft.com/learning/mcp/transcripts

Transcript ID: 820594
Access Code: andrewkid

Экзамен 70-528 Microsoft .NET Framework 2.0 - Web Based Client Development. Отчёт

2 коментари(и/ев)

MCP, Microsoft certified professionalНаконец-то это событие сбылось. Вчера сдал экзамен 70-528 Microsoft .NET Framework 2.0 – Web Based Client Development. Набрал немало-немного - 965 балов из 1000 возможных. Хочу поделится своими впечатлениями. Далее обо всём по порядку.

 

Предисловие.
Исторически сложилось, что наша контора (ISM Ukraine) сертифицирует своих сотрудников в БМС Консалтинг. К сожалению, в моем случае произошло исключение, так как БМС Консалтинг не работал по техническим причинам и сдать экзамен раньше ноября возможности не было. Я же в свою очередь не хотел откладывать это событие на потом и моё руководство пошло мне навстречу, решив поискать другой сертификационный центр. Другим сертификационным центром был избран Инком и в течении следующей недели рокуводство улаживало проблемы с документами. Этот процесс настолько растянулся, что я до последнего момента сомневался в позитивном решении этого вопроса. К счастью, всё закончилось хорошо и как я и просил экзамен был призначен на 23 октября.

Несколько слов об компании Инком
На данный момент компания Инком не сотрудничает с Прометрик (международная система тестирования, имеющая договор с Майкрософт), поэтому пройти тест 70-528 непосредственно у них пока возможности нет. Как я выяснил в процессе переписки с саппортом Инкома, центр тестирования Prometric у них откроется в течение месяца, а пока они отправляют своих клиентов для сдачи экзаменов Майкрософт к своим партнёрам. Таким партнёром в моём случае оказался Квазар-Микро.

Квазар-Микро

Зная не по наслышке о пробках в Киеве, на поиски Квазар-Микро я отправился заранее и в результате добрался до места назначения за час до установленого времени. Как оказалось компания Квазар-Микро занимает немалую площадь и мне пришлось немного походить в поисках нужного мне здания. Пройдя процедуру регистрации, я попал к нужному мне человеку. Хотя на часах ещё не было 11:00, сотрудница Квазар-Микро не заставила меня ждать и начала процедуру подготовки в экзамену. По ходу действия мне пришлось выложить запрещенные для использования устройства: телефон и флешку. Так подготовка занимает некоторое время, мне было предложено попить кофе (чаю) в специально отведённом месте. В добавок к чаю ещё предлагалось печенье. Такое гостепреимство не могло не поднять настроение.

Экзамен
Экзамен проводился в специально отведённом месте, оборудованном на 4-5 человек (точно не помню). Так как это был мой первый экзамен сначала пришлось потренироваться в целях обучения работы с программой. Лишь после этой процедуры я приступил к сдаче целевого экзамена. И тут-то наступило полное разочарование. Со всеми вопросами, как оказалось, я был знаком. Притом настолько знаком, что отвечал практически не в читываясь в вопросы. Последние полностью совпадали с вопросами в Braindump'ах, о месте расположения которых я упоминал в одном из предидущих постов. Самое смешное, что даже ответы были приведены в таком же порядке. Поэтому и не странно, что я потратил всего лишь 25-30 мин. вместо 180 отведённых. Как оказалось допустился нескольких ошибок, сколько именно сказать сложно, знаю только, что промахнулся в нелюбимой мной теме "Creating ASP.NET Mobile Web Applications".

Итоги
Сложность, вернее её полное отсутствие, в сдаче майкрософтовских экзаменов меня разочаровала. Теперь для меня это не показатель. И если раньше на ряду с разработанными проектами экзамены Майкрософта играли важную роль, то надалее в определении "крутости" разработчика я их не буду иметь ввиду, хотя вернее "буду иметь" ввиду :). Конечно, это только моё мнение и каждый пусть для себя делает свои выводы. Позитивным моментом в сдаче экзамена вижу только непосредственно саму подготовку. Ведь то время, что я потратил не прошло зря, и знания, которые я приобрёл, ни в коем случае не помешают.

Two Addons for Visual studio

4 коментари(и/ев)

Решил поделиться ссылками на два аддона к Visual Studio, которые упрощают мне ежедневную жизнь.

1. PowerCommands

Данный аддон представляет собой набор расширений для Visual Studio 2008, подробное описание можно почитать в MSDN. Я только хочу остановиться на самых полезных (по моему мнению).

- Collapse Projects - сворачивает проекты в Solution Explorer. Разрабатывая большой продукт из нескольких десятков проектов (имеются ввиду проекты Visual Studio), сложно переключаться между ними, постоянно приходится ручками клацать по плюсикам. Фича Collapse Projects позволяет "одним движением" руки свернуть все развёрнутые проекты. По частоте использования у меня она занимает первой место.

- Remove and Sort Usings on save - сортирует using-выражения, а также удаляет неиспользуемые. Эта фича доступна только в C#.
- Edit Project File - позволяет редактировать proj-файл в Visual Studio.

- Copy References/Paste References - копирование (вставка) Reference'ов между проектами.
Скачать можно здесь.

2. RockScroll

Заменяет стандартный скроллер окна (см. рисунок). При выделении слова двойным щелчком мишы RockScroll показывает все места, где встречается это слово. Единственный недостаток (найденный мною) этого аддона - это то, что он не поддерживает код, завёртнутый в регионы.

Download RockScroll

Следующая страница