This is going to be a stream of consciousness thing - I'm taking notes as the talk proceeds. So on with it!
What is .NET?
A whole "platform" for Enterprise Systems
Not just Web Services
Gigantic, "State of art"
- Distributed Computing
- XML Standards
- Versioning (of libs)
(From the Bottom)
- Common Type Specification (CTS)
- Intermediate Language (IL - Byte Code)
- Common Language Specification (CLS)
- .NET Extended Class Libraries (across all supported languages)
- .NET Base Libraries (across all supported languages)
- Common Language Runtime (CLR)
"Any language" (in practice, 3) - and, there's the fact that there are whatever limits MS imposed (type system, etc).
Base Class libraries provide all the framework classes for common stuff, including reflection, OS stuff, COM interop - etc. No CORBA support built in.
IL - it's compiled (JIT). IL sits on the CTS and is "language neutral"
editor sidebar - but what about dynamic languages? Dave Simmons has posted extensively on the difficulty he has had. Even C has issues - but can run as an Unmanaged application.
Question - what about unmanaged - what's the penalty? No GC, resource management, etc. If you run unmanaged, you don't live with that. Note - this is a good thing for Smalltalk, in my opinion....
Learning Curve - How long? They say "a couple of weeks". Mind you, it's effectively an OS unto itself.
Compiling and running - compile code to an assembly. Assembly gets loaded (with platform rules (security, memory checks, etc). Application Domain created, then OS process. All managed apps are garbage collected.
Deploying - Assemblies are deployable units of software. Similar to parcels in VW, but with a lot of extra stuff - security (could be certificate based), dependencies, version identification (can deploy multiple versions to same platform - that's a cool feature. Deployment consists of copying the assembly out - like Parcels.
GUI stuff - Windows Forms stuff has not been ported. Only the web stuff really has (to different operating systems, that is). They seemed to think this is next to impossible....
A CLR will run all .NET programs in a single OS process (for performance purposes). There are Application Domains to separate things. There is a remoting infrastructure to allow splitting across multiple CLR sharing. NOTE - This is pretty much what VW does....
Customizable, granular permissions. Role based, based on ID of the process. Also code level security based on the trustworthiness of the code itself (certificates).
Question - this sounds complex. Are there tools to help? Yes, there are admin tools for this. The security stuff can be turned on or off; there's overhead for this.
Question - NSA has not blessed .NET? Amusing, because NSA does not constrain itself that way.... (question from a Navy developer).
More questions on security - why is it in the .NET platform, instead of the OS? Answer? The CLR is the new operating system....
More security - enforcement can be as granular as the method level. Assemblies can be signed (certificates).
Editor sidebar - can't this get to be a complete nightmare if/when assemblies come from multiple sources with various certificates? i.e., a vibrant third party market... Recall that MS told people not to trust their own certicates last year after a security breach....