Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

#48:


Информационный Канал Subscribe.Ru

.Net Собеседник #48

Содержание
  1. От автора
  2. Обзор новостей
  3. Взаимодействуем с ОС через .NET и WMI
  4. Время кода - Ключевые слова на C# : B
  5. Форумы .Net на www.sql.ru

От автора

Здравствуйте, коллеги!

После выхода четвёртого номера журнала я стал получать письма с вопросами по подписке на электронную версию журнала. Подписка на твёрдую копию вроде бы достаточно ясно прописана в самом журнале, по-крайней мере по ней вопросов не возникает. Так вот, подписка на электронную версию отличается только ценой (27 руб. или 5 грн. за номер) и возможностью оплаты по системе WebMoney (подробнее - см. здесь). Т.е. вы можете подписаться на электронную версию таким же образом, как и на бумажную - на год (это максимальный срок подписки) или на полгода вперёд, заплатить и прислать купон (в котором нужно указать только Ф.И.О. и адрес электронной почты доставки, а также подписной период) и отсканированную копию квитанции об оплате. В случае оплаты через WebMoney копия квитанции, конечно же, не нужна. Если есть какие-то вопросы по оплате, то оперативно их можно обсудить здесь
Кроме того,  хочу добавить, что №5 журнала "Алгоритм" будет лучшим из всех выпущенных номеров. В нём будет больше дюжины статей, посвященных различным аспектам платформы .NET, как всегда много новостей и обзоров компонент.

На этом всё- желаю интересного чтения.

{К содержанию}

Обзор новостей

  1. Вышел Aspose.Word 3.1
    Aspose.Word - компонент для работы с документами в формате Word, который позволяет вам читать и писать документы Word без использования Microsoft Word и автоматизации Microsoft Office в приложениях .Net, которые работают как на сервере, так и на клиенте.
  2. Вышел ExcelLite 2.0
    Используя этот, на 100% управляемый компонент .Net, легко создавать, конвертировать, читать и писать файлы в формате Microsoft Excel (как XLS, так и CSV).
    ExcelLite является высокопроизводительным компонентом (как по оптимальному использованию памяти, так и по скорости работы) в части создания, конвертирования, записи и чтения файлов в формате Microsoft Excel (файлы XLS в формате BIFF или файлы CSV в текстовом формате) без задействования самого Microsoft Excel – в его присутствии нет надобности ни на машине разработчика ни на машине клиента.
  3. Вышел IrisSkin для Microsoft VisualStudio.NET(Winforms)
    Sunisoft выпустила новую версию IrisSkin для разработчиков, использующих Microsoft VisualStudio.NET (Winforms).
    IrisSkin является самым простым решением по созданию скинов для приложений .NET, разрабатываемых в Microsoft VisualStudio.NET (WinForms). С помощью этого продукта скин автоматически налагается на все формы вашего приложения. И вам никогда не придётся тратить массу времени на программирование поддержки скинов в вашем приложении.
  4. Вышли Web Services Enhancements (WSE) 3.0 Beta для Microsoft .NET
    WSE 3.0 упрощают разработку и установку безопасных веб-сервисов.
  5. Вышел веб-вариант Source Safe – SS Web Interface 1.3.6
    Эта версия содержит много обновлений и исправлений, которые привели к улучшению производительности. Появились также такие новшества, как поддержка Visual Diff и поддержка установщика для Microsoft Small Business Server.
  6. Вышел поставщик данных Firebird ADO.NET Data Provider 2.0 Alpha 2
    Доступен для скачивания Firebird ADO.NET Data Provider 2.0 (также известный как FirebirdClient). Firebird – сервер баз данных с открытым исходным кодом, который использует базы данных выполненные одним файлом.
  7. Доступна августовская Visual Studio 2005 CTP
    На сайте MSDN выложена августовская предварительная версия Visual Studio 2005 August CTP, которая доступна всем подписчикам MSDN. Версия содержит редакцию Professional, Standard, Visual Studio Team System, Team Foundation Server и Visual Studio Tools for Office.

{К содержанию}

Статья номера

Взаимодействуем с ОС через .NET и WMI

ЯЗЫК: C#
Автор статьи: Тони Паттон, полную версию статьи читайте в №5 журнала "Алгоритм"
 
ПЕРЕВОД: Чужа В.Ф. ака hDrummer

Обзор WMI

WMI предлагает управленческую функциональность. Она доступна на Windows XP и на некоторых Windows более ранних версий. Файл System.Environment.dll поддерживает функциональность WMI, поэтому ссылка на него должна быть добавлена в приложение .NET. Он также использует COM для работы с операционной системой.


WMI является обёрткой над кодом Windows API. Провайдеры используются менеджером объектов WMI. Если вы хотите использовать родное API, то вы работаете с менеджером объектов WMI через пространство имён System.Environment.

.NET Framework содержит массу провайдеров WMI для выполнения разных задач.

Вы можете создать свои собственные поставщики (или провайдеры). WMI включена в ОС Windows начиная с Windows ME, но доступные провайдеры зависят от версии Windows. Microsoft предлагает также инструменты администрирования WMI, с помощью которых можно посмотреть, например, какие из провайдеров вам доступны.

WMI в действии

Основная идея WMI нам ясна, теперь посмотрим на неё в коде .NET. Добавим ссылку на файл System.Environment.dll в ваш проект, а также пространство имён System.Environment в ваш код (пишем using в C#, import в J# и Imports в VB.NET). В следующем примере мы получим доступ ко многим параметрам системы:

using System;
using System.Management;
namespace Builder {
class WMIExample {
[STAThread]
static void Main(string[] args) {
try {
ManagementObject mo = new
ManagementObject("Win32_ComputerSystem.Name=\"PENTIUM4\"");
Console.WriteLine("Описание: " + mo["Description"].ToString());
Console.WriteLine("Модель: " + mo["Model"].ToString());
Console.WriteLine("Число процессоров: " +
mo["NumberOfProcessors"].ToString());
catch (ManagementException e) {
Console.WriteLine("Сгенерировано исключение: " + e.ToString());
catch (Exception e) {
Console.WriteLine("Сгенерировано исключение: " + e.ToString());
} } } } 

Обращу ваше внимание на некоторые участки кода. Во-первых, объект класса ManagementObject используется для работы с WMI. Вы можете использовать объект класса ManagementObject для работы с любым объектом, доступным через WMI. Класс WMI (Win32_ComputerSystem.Name="Pentium") используется для создания объекта MangementObject. Можно использовать уже упомянутые инструменты администрирования (WMI Object Browser или Просмотрщик Объектов WMI) для просмотра классов WMI, доступных на целевой системе. И, конечно, все полученные значения можно не только считывать, но и изменять.

Функциональность, доступная при необходимости

WMI является важным аспектом .NET Framework, которой уделяется мало внимания. Этот инструментарий позволяет вам взаимодействовать и манипулировать многими аспектами системы, на которой работает приложение. К тому же, можно отслеживать изменения в системе с помощью WMI с помощью событий.

{К содержанию}

Время кода

Ключевые слова на C# : B

ЯЗЫК: C#
Автор статьи: В.Чужа
, полную версию статьи читайте в №4 журнала "Алгоритм"

bool

Итак, продолжим наш рассказ. Сегодня мы поговорим о ключевом слове bool, которое является псевдонимом к типу System.Boolean. Переменные этого типа (или структуры, если вам будет угодно) служат для хранения значений true и false. Объявление самой структуры выглядит таким образом:


public struct Boolean : IComparable, IConvertible

То есть мы видим, что структура реализует два интерфейса, а именно IComparable и IConvertible. Интерфейс IComparable имеет только один метод – CompareTo(object obj) и реализован он достаточно интересно, см. Листинг 1.

Листинг 1. Реализация метода CompareTo в структуре System.Boolean
public sealed virtual int CompareTo(object obj)
    {
      if (obj == null)
      {return 1;}

      if (!(obj is Boolean))
      {throw new ArgumentException(Environment.GetResourceString("Arg_MustBeBoolean"));}

      if (m_value == ((bool)obj).m_value)
      {return 0;}

      if (!m_value)
      { return -1;}
      else
      {return 1;}
}

Наибольший интерес представляет собой некая переменная m_value, которая является ни чем иным, как членом структуры, имеющей тип bool и хранящей текущее значение переменной этого типа.

Что касается интерфейса IConvertible, то мы знаем, что он содержит описания методов, конвертирующих значение одного типа в значение другого типа. Один из методов этого интерфейса, реализованный в нашей структуре, выглядит так, как показано в Листинге 2. Здесь можно обратить внимание на два момента. Первый – конверитруется уже знакомая нам переменная m_value. Второй – метод не является совместимым с CLS (Common Language Specification или Общей Спецификацией Языка).

Листинг 2. Метод, конвертирующий булево значение в целое типа ushort.
[CLSCompliantAttribute(false)]
ushort IConvertible.ToUInt16(IFormatProvider provider)
{
  return Convert.ToUInt16(m_value);
}

Примеры

В примере, приведенном в Листинге 5, мы просим пользователя программы ввести один символ, а затем, пользуясь булевыми переменными, выводим информацию об этом символе – является ли он буквой и, если да, то, в каком регистре она введена.

Листинг 5. Пример использование булевых переменных
using System;

namespace boolproject
{
class BoolExample
{
[STAThread]
static void Main(string[] args)
{
           bool charIsLetter = false;
           bool charIsUpper  = false;
           Console.Write("Введите 1 символ: "); 
           char c = (char)Console.Read();
           if (Char.IsLetter(c))
           {
               charIsLetter = true;
               Console.WriteLine("Ваш символ является буквой {0}.", c);
               if (Char.IsUpper(c))
               {
                   charIsUpper = true;
        Console.WriteLine("Ваш символ является буквой в верхнем регистре.");
                }
           }
           if (charIsLetter==false)
           {
              Console.WriteLine("Вы ввели не букву.");
           }
           else 
           {
               if (charIsUpper==false)
               {
                   Console.WriteLine("Вы ввели маленькую букву.");
               }
            }
}}}

В следующем примере, приведенном в Листинге 6, мы увидим как можно упаковать и распаковать переменную булевого типа.

Листинг 6. Упаковка и распаковка переменной булевого типа.
using System;

namespace boolproject
{
    internal class BoolExample2
    {
        [STAThread]
        private static void Main(string[] args)
        {
            bool test = true;
            /*упаковка, можем упаковать, 
             * т.к. стурктуры хранятся в стеке
             */
            object booltest = test;
            Console.WriteLine(booltest);
//вывод на консоли: True
            bool testfalse = false;
//распаковка
            testfalse = (bool)booltest;
            Console.WriteLine(testfalse);
//вывод на консоли: True
        }
    }
}

Упаковкой называется процесс преобразования структурного типа (который размещается в стеке) в ссылочный (находящийся в управляемой куче). При этом в управляемой куче создаётся новый объект, которым в нашем случае является object booltest, в него копируются все внутренние данные из переменной структурного типа. При распаковке происходит обратный процесс – объект из управляемой кучи (всё тот же booltest) копируется в переменную структурного типа (bool testfalse), однако перед самим процессом копирования проверяется, совпадает ли тип упакованной переменной со структурным типом и, если нет, то генерируется исключение.


{К содержанию}

Форумы .Net - вопросы оставшиеся без ответа

Анонимный доступ к Sharepoint'у Что лучше
Графики и диаграммы
Mono (.Net) + PostgreSQL8 - кодировка :(
интересные штуки происходят иногда с VALIDATION контролами
Помогите с CR!
Загвогдка с TextBox
Как контролировать работу принтера в Windows?
Построчное сохранеие в гриде! Как? (VS 2005)

На этом сорок восьмой выпуск .Net Собеседника закончен.
До следующего номера.


Чужа Виталий Ф. aka hDrummer, MCAD, MCDBA, MCP
hdrummer ухо gmail точка ru - жду ваши предложения и замечания.



Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.dotnetgrains
Отписаться
Вспомнить пароль

В избранное