Подтвердить что ты не робот

Регистрация с regasm и regsvcs

У меня есть следующий вопрос: возможно ли, что сборка .NET будет регрессирована и с Regasm и Regsvcs? Благодаря

4b9b3361

Ответ 1

Это отсроченный ответ на вопрос. но позвольте мне объяснить различия, о которых я знаю.

Чтобы понять это, вам придется вызывать разницу между COM и COM + -приложением.

Зарегистрируйте свои типы как COM - Создает объект по требованию каждый раз, когда код пытается инициализировать объект

Зарегистрируйте свои типы в качестве приложения COM + - Создает объект, поддерживает объединение объектов, поддерживает транзакции, поддерживает повышенную безопасность Windows и многое другое.

Чтобы понять пул, я заимствую ответ http://www.tek-tips.com/viewthread.cfm?qid=116249

COM + основной способ добавления масштабируемости и производительности осуществляется путем объединения объектов. К сожалению, для этого требуется компонент с бесплатной резьбой, который VB6 делать не может. Но....NET(любой язык) и С++ могут.

Что делает пул объектов, вы указываете MTS/COM + создать пул доступных объектов, начиная с минимума, который создается при запуске COM +, до некоторого максимума (который я не знаю, если это жесткий максимум, или если он гибкий). Что для вас делает объединение, это обеспечить вызывающего абонента с предварительно инициализированным объектом. Это намного быстрее, чем ждать создания объекта (особенно по сети). Абонент подключается к объекту, выполняет вызовы методов и отключает. Затем объект возвращается в пул.

Это требует фундаментальных изменений в архитектуре программы. Перед COM + все открывали соединение с базой данных и оставляли его открытым на время действия приложения. Это было нормально, когда количество пользователей было < 100, так как загрузка на сервере была управляемой (каждое соединение занимает ОЗУ). Но для больших групп населения или неизвестного количества пользователей (например, пользователей из Интернета) сервер базы данных быстро перегружается. Кто-то понял, что каждый транзакционный пользователь фактически делает реальную работу небольшим процентом времени - остальное время они простаивают.

Таким образом, ваши программы должны установить соединение, сделать запрос, получить результаты, а затем отключиться (это также относится к объектам без базы данных). Это также означает, что приложение не имеет статуса (состояние программы не поддерживается между запросами). Потому что... объект, который вы используете в настоящее время, принадлежит кому-то еще 200 миллисекунд назад. И когда вы пройдете через объект, другой пользователь будет использовать его после вас. Таким образом, объекты не могут хранить информацию - они должны быть только кодом.

regasm. Регистрирует типы сборки .net как COM. Это означает, что regasm выбирает общедоступные типы вашей сборки .Net, а затем записывает соответствующие записи в HKCR....; (таким образом работает regsvr32).

  • regasm может сгенерировать для вас tlb файл (например, tlbexp.exe)
  • regasm может кодировать вашу сборку .Net. То есть, если у вас нет вашей сборки .Net в GAC, тогда вы можете закодировать код COM в папку файла, где присутствует сборка .Net. И отсюда COM Marshaller выберет выполнение сборки с CLR.
  • regasm позволяет вам создать .reg файл двойным щелчком, который вы можете обновить записи реестра. вы должны убедиться, что сборка .Net установлена ​​в GAC. Переключатель becase/regfile в regasm не позволяет вам /codebase (если это кодовая база, то это бессмысленно).

regsvcs. Создает приложение COM + из сборки .NET. Это означает, что regsvcs выбирает общедоступные типы вашей сборки .Net и, кроме того, записывая соответствующие записи в реестре, он также создает приложение COM +, которое вы можете управлять через консоль диспетчера служб компонентов (% systemroot%\system32\comexp.msc).

  • regsvcs создает приложение COM + на основе информации, переданной ему из командной строки, или на основе информации, доступной из dll.Net.

  • regsvcs позволяет объединить ваши типы COM + в существующее приложение COM+. Взгляните на comexp.msc, чтобы пройти, чтобы понять приложение COM + и COmponets, которыми управляет COM +.

Если вы пишете класс С# с ComVisible (true) → Публичные типы этого класса (Foo) готовы к регистрации с regasm для COM.

    // Set the COM visibility attribute to true
[ComVisibleAttribute(true)]
public class Foo{....}

Если вы пишете класс С# с ComVisible (true), наследующий от System.EnterpriseServices.ServicedComponent(и, конечно же, больше настроек).- > Этот класс (FooBar) готов к регистрации в качестве приложения COM +.

    // Set the COM visibility attribute to true
[ComVisibleAttribute(true)]
  public class FooBar: System.EnterpriseServices.ServicedComponent{.....}

Создание приложения COM + из .Net - вы можете начать здесь. Помните, что COM + обеспечивает расширенное управление транзакциями для объекта, подверженного COM.

http://support.microsoft.com/kb/306296 http://my.execpc.com/~gopalan/dotnet/complus/complus.net_accountmanager.html http://www.codeproject.com/Articles/3845/Creating-COM-Objects-using-EnterpriseServices-in-N