I used to work in JavaScript a lot and one thing that really bothered my employers was that the source code was too easy to steal. Even with obfuscation, nothing really helped, because we all knew that any competent developer would be able to read that code if they wanted to.
JS Scripts are one thing, but what about SOA projects that have millions invested in IP (Intellectual Property). I love .net, and especially C#, but I recently again had to answer the question "If we give this compiled program over to our clients, can their developers reverse engineer it?" I had gone out of my way to obfuscate the code, but I knew it wouldn't take that much for another determined C# developer to get at the code.
So I earnestly pose the question, is it impossible to secure .net code?
The considerations I have as as follows:
I'm not knocking .net, but I would like some realistic answers, thank you, question marked as subjective and community!
All code can be reverse engineered.
.NET lowers the bar for this (just try Reflector!), but obfuscation raises it back up again. A good obfuscator will raise the bar high enough to prevent all but a very dedicated, motivated person from reverse engineering your code.
That being said, I'd personally prefer to focus on quality. I run a small ISV, and we use .NET - obfuscation is important, but if you can deliver quality products, it really doesn't matter if somebody tries to reverse engineer your code.
Even, hypothetically, if they could reverse engineer everything, with a complex project, they'd be years behind in actually delivering something with a competitive advantage in the marketplace...