Сейчас на работе пишу нечто вроде сервера приложений на
C#. Чтоб
.Net-объекты были доступны через remoting (аналог явовского
RMI). Хочется сделать такую фичу - чтоб увидев новую версию сборки сервер выгружал старую и загружал новую. Для серверов приложений на
Java, например для
JBoss - это стандартное поведение. А вот у .Net с этим явные сложности. Решил поискать что-нибудь готовое на
соурсфордже. Нашёл проект
NHost. Скачал исходники, заглянул в них, сначала недоумевал, потом долго смеялся. И ведь надо же, этот примерчик с двумя строчками логики имеет гордое описание
«NHost is a universal server for DotNet objects. You create your assemblies with business objects and then use NHost to publish them. It is written in C# and works on .NET, Portable.NET and Mono on Linux and Windows».
И всё же, почему наши IT-специалисты, увидев что-то новое от Microsoft, тут же начинают пищать от радости и тащить эту каку в рот? Вот и сейчас, мне вместо работы с любимой Java приходится морочиться с C#. Вместо того, чтобы заюзать нормальный
AS на Java, я изобретаю что-то своё, мужественно продираясь через тернии обильно взращённые Майкрософтом.
По мере углубления в C# сравниваю его с Java. Java удобен, логичен и прекрасен в своей эстетичности. C# рядом с Java выглядит этаким корявым уродцем. Хотя, если отвлечься от эстетики, в C# есть много приятных мелочей (например, в классе System.String есть методы PadLeft/PadRight, для Java аналогичные функции мне пришлось писать самому). В общем, несмотря на корявость реализации, C# вполне практичен. Но постоянная корявость весьма раздражает. Отсутствие checked exceptions, делегаты... Мерзость. :) Получить удовольствие от программирования на C# невозможно. Впрочем, все продукты Майкрософт производят отталкивающее впечатление, ну может быть за исключением Microsoft Office, который just work.