Вы бы использовали EnterpriseServices в новой корпоративной разработке?
Как вы, возможно, уже знаете, управляемый код (приложения.NET) может использовать COM+ через EnterpriseServices, делая такие задачи, как распределенные транзакции, пул ресурсов и синхронизацию, "проще для программирования", поскольку решения предоставляются COM+ в качестве вспомогательной инфраструктуры для приложения.,
Если ваши серверы приложений находятся в домене Windows, COM+ автоматически делает ваши приложения более масштабируемыми, обеспечивая пул потоков, пул объектов и своевременную активацию объектов. COM+ также помогает защитить целостность ваших данных, обеспечивая поддержку транзакций, даже если транзакция охватывает несколько баз данных по сети " (источник MS)
Итак, скажем, вам нужно создать большое приложение с нуля в компании, которая не написала компоненты COM+, которые вы можете использовать повторно, так что вы не привязаны к этой технологии.
Это будет большая система, но вы знаете, что со временем она может стать намного больше. Допустим, это что-то вроде большого ERP, с распределенными транзакциями, происходящими постоянно. Наконец, предположим, что ядро системы будет находиться в домене Microsoft Windows... делая выбор COM+ через System.EnterpriseServices (ES). Вам нужно будет сделать некоторые компоненты доступными для третьих лиц, и вы можете сделать это через WCF.
Итак, зная, что эта технология доступна и ваша среда совместима, вы бы ее использовали?
Если ответ отрицательный, все ли услуги COM+, такие как распределенные транзакции, доступны и просты в использовании в полностью управляемой среде?
2 ответа
Я, вероятно, не стал бы использовать EnterpriseServices, если вы еще не женаты на COM. Я думал о подобной проблеме этим утром, и если у вас есть опыт работы с COM, то EnterpriseServices - это находка. Двигаясь вперед, я бы выбрал более современную (.NET) инфраструктуру, потому что
- Проще найти разработчиков (и обучение)
- Программное обеспечение сторонних производителей будет ориентировано на.NET
- MS PSS более доступен для разработки.NET (я знаю, что они не прекращают поддержку COM, но попробуйте вызвать две разные проблемы и время ответа)
Нет.
У нас не было конца проблем (в основном неразрешимых утечек памяти в COM+ - вызванных различными битами взаимодействия COM +, на которые мы не могли повлиять), когда мы использовали.Net в COM+. Мы перешли на WCFServices, предоставляя функциональность бизнес-уровня, и свели наши распределенные транзакции к минимуму (т. Е. Транзакция завершена внутри службы WCF - единственный способ сделать это на самом деле). Используя встроенный.Net Transaction материал обрабатывает все, что нам нужно для обработки транзакций.
Я бы придерживался различных сервисных уровней WCF, чтобы показать функциональность. Держите один уровень внутренним и предоставляйте открытые сервисы на внешнем уровне, который связывается с внутренним уровнем. Это немного тяжело, но, кажется, масштабируется позже и обеспечивает безопасность, которую вы ожидаете (и требуете).