Как создать сервисные компоненты .NET, использующие транзакции, в Microsoft Visual C# .NET

Переводы статьи Переводы статьи
Код статьи: 306296 - Vizualiza?i produsele pentru care se aplic? acest articol.
Данная статья была ранее опубликована под номером RU306296
Развернуть все | Свернуть все

В этой статье

Аннотация

''Enterprise services'' предоставляют мост .NET к службам Microsoft COM+ 1.0. Данная статья демонстрирует как создать сервисные компоненты .NET, которые используют транзакции, а также как создать клиента для проверки ваших сервисных компонентов.

Важные замечания

  • Сервисные компоненты требуют криптографическую подпись
  • Сервисные компоненты должны быть зарегистрированы в ''Global Assembly Cache'' (GAC), так как являются ресурсами системного уровня. Серверные приложения требуют установки в GAC, в то время как библиотечные приложения не требуют (хотя это рекомендуется).
  • Вы можете зарегистрировать сервисные компоненты с помощью COM+ любым из двух способов автоматически через фоновую регистрацию или вручную через утилиту Regsvcs.exe. Утилита Regsvcs.exe расположена в следующей папке:
    \WINNT\Microsoft.NET\Framework\< Framework Version >
    За дополнительной информацией по утилите Regsvcs.exe обращайтесь к соответствующей статье в документации по Microsoft .NET Framework Software Development Kit (SDK).
  • В данном примере подразумевается, что Microsoft SQL Server уже установлен на вашем компьютере.
  • Данный пример предназначен только иллюстрации возможностей. Строго говоря, запрос ''select'' этого примера не следует выполнять в пределах транзакции COM+, так как COM+ использует самый высокий уровень изоляции для транзакций. Чтобы увеличить производительность базы данных, следует осуществлять запросы на чтение с более низкими уровнями изоляции.

Создание сервисных компонентов .NET

  1. Создайте новый проект Visual C# типа ''Class Library'' с именем ServicedCOM.
  2. Переименуйте файл и класс, названный по умолчанию Class1.cs, в SimpleTrans.cs.
  3. Добавьте ссылку на пространство имен ''System.EnterpriseServices''.
  4. Добавьте следующую директиву в файлы SimpleTrans.cs (непосредственно перед объявлением классов) и AssemblyInfo.cs:
                                                                      using System.EnterpriseServices;
  5. Создайте класс на основе ServicedCOM.
  6. Добавьте следующий фрагмент кода непосредственно перед объявлением класса (Public Class):
                                                                                             [Transaction(TransactionOption.RequiresNew)]
  7. Добавьте следующие рекомендуемые атрибуты к файлу AssemblyInfo.cs:
    [assembly: ApplicationActivation(ActivationOption.Library)]
                                                                                          [assembly: ApplicationName("SimpleTrans")]
    • Атрибут ''ActivationOption'' показывает, будет ли компонент активизирован вызывающим процессом. Вы можете установить его в значения ''Library'' или ''Server''.
    • Атрибут ''ApplicationName'' - это имя, которое отображается для приложений COM+ в каталоге COM+ и в консоли ''Component Services Administration''.
  8. Добавьте следующий дополнительный атрибут к файлу SimpleTrans.cs:
                                                                                                                                                                                              [assembly: Description("Простое транзактионное приложениепоказывающее службы Enterprise")]
    Данный атрибут предоставляет описание приложения COM+ в каталоге COM+ и консоли ''Component Services Administration''.
  9. Добавьте следующий метод в файл SimpleTrans.cs:
    // Demos Explicit SetComplete/SetAbort
            public string DoTrans()
            {
                SqlConnectionconnection;
                SqlCommandcommand;
                SqlDataReaderreader;
                stringname;
                stringquery;
    
                try
                {
                    query = "SELECT au_lname, au_fname FROM authors";
                    connection = new SqlConnection("data source = localhost;
                                                    initial catalog = pubs;
                                                    UID=sa;PWD=");
                    command = new SqlCommand(query, connection);
    
                    connection.Open();
                    reader = command.ExecuteReader();
    
                    reader.Read();
                    name = reader.GetString(0) + ", " + reader.GetString(1);
                }
                catch(Exception exc)
                {
                    ContextUtil.SetAbort();
                    throw exc;
                }
                return name;
        }
    // Demo implicit SetComplete/SetAbort
    [AutoComplete]
    public void DoTxAuto()
    {
        // Do stuff
       }
  10. Измените строку ''SqlConnection'' в зависимости от вашего окружения.

Присвоение сборке криптографической подписи

  1. Нажмите кнопку ''Пуск'', выберите в меню пункт ''Программы'', откройте группу программ ''Microsoft Visual Studio .NET'', затем группу программ ''Visual Studio .NET Tools'' и запустите команду ''Visual Studio .NET Command prompt''.
  2. В командной строке введите команду ''sn.exe -k ServicedCOM.snk'' (без кавычек), чтобы присвоить сборке криптографическую подпись.

    За дополнительной информацией по работе с криптографическими подписями обратитесь к документации по .NET Framework SDK.
  3. Скопируйте файл ServicedCOM.snk в папку проекта.
  4. В файле AssemblyInfo.cs замените код ''AssemblykeyFile'' на приведенный ниже фрагмент кода:
                                                                                                                 [assembly: AssemblyKeyFile("..\..\ServicedCOM.snk")]

Добавление ваших служебных компонентов к COM+

Вы можете разрешить компонентам автоматически регистрироваться при первом запуске или вы можете зарегистрировать их вручную при помощи утилиты Regsvcs.exe. Чтобы использовать утилиту Regsvcs.exe, выполните следующие действия:
  1. Нажмите кнопку ''Пуск'', выберите в меню пункт ''Программы'', откройте группу программ ''Microsoft Visual Studio .NET'', затем группу программ ''Visual Studio .NET Tools'' и запустите команду ''Visual Studio .NET Command prompt''.
  2. В командной строке введите команду ''regsvcs servicedcom.dll''. При этом приложение будет добавлено в библиотеку COM+ с именем, совпадающим с именем вашего класса.

Проверка ваших компонентов

  1. В программе ''Блокнот'' создайте текстовый файл.
  2. Скопируйте следующий фрагмент кода в файл:
    set o =createobject("ServicedCOM.SimpleTrans")
    
                                          MsgBox o.DoTrans()
  3. В меню ''Файл'' выберите команду ''Сохранить''.
  4. В диалоговом окне ''Сохранить как'' в поле ''Имя файла'' введите строку ''Test.vbs'' (без кавычек). В списке ''Тип файла'' выберите тип ''Все файлы'' и нажмите кнопку ''Сохранить''.
  5. Двойным щелчком мыши запустите файл примера.

Свойства

Код статьи: 306296 - Последний отзыв: 18 февраля 2002 г. - Revision: 1.0
Информация в данной статье применима к:
  • Microsoft Visual C# .NET 2002 Standard Edition
Ключевые слова: 
kbhowto kbhowtomaster KB306296

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com