July 27, 2004
@ 11:55 AM

Often the .NET Common Language Runtime, or CLR, is directly compared to the Java Virtual Machine. Initially, there are many clear parallels: both are “managed” environments that provide a component container, both consume a “partially chewed” intermediate language, both provide low-level services like garbage collection and threading conveniences.

[Scott Hanselman]

Sun promotes a marketing program called 100% Pure Java, which is certainly appropriate if code portability and underlying operating system transparency is a desirable endpoint.

The Java VM is truly a “virtual machine” that’s ultimate goal is to abstract (virtualize) away the underlying Operating System and provide an idealized (not necessarily ideal, but idealized) environment for development.

The .NET Common Language Runtime is named well as it is used more as a Language Runtime than a Virtual Machine. While it successfully abstracts away aspects of underlying hardware through its use of an Intermediate Language, when the CLR is combined with the .NET Framework Library of APIs it is married to the underlying platform, which is Windows. The CLR provides all the facilities of the Windows Platform to any .NET-enabled Language.

If Microsoft were to truly virtualize the machine, they would have marginalized their investment in the Windows platform. The .NET Framework Library itself isn’t “pure .NET” as it takes every opportunity to take full advantage of the underlying platform primitives.


 

This article talks about the security comparison between Java and .NET. Its a detailed 4 part series covering Configuration, Cryptography, CAS, and RBS.

[Via: {Sudhakar's .NET Dump Yard;}]


 

November 14, 2003
@ 03:53 AM

From Dan Fernandez

Expansions are fill-in-the-blank snippets of code that have several benefits.  They help automate boiler-plate code constructs like looping through a collection using a foreach statement, they help reduce syntax errors and they're a perfect example of code-focused RAD.  One of the things you'll notice with C# Whidbey is the concept of code-focused RAD, meaning RAD isn't just limited to drag-and-drop wizards, we're going to add productivity features directly into the code editor where C# developers spend the majority of their time.


 

November 14, 2003
@ 03:17 AM

[Via Dan Fernandez]

Introduction to C# Generics

Some snippets from the article for introduction ...

Generics allow you to define type-safe data structures, without committing to actual data types. This results in a significant performance boost and higher quality code, because you get to reuse data processing algorithms without duplicating type-specific code.

Consider an everyday data structure such as a stack, providing the classic Push() and Pop() methods. When developing a general-purpose stack, you would like to use it to store instances of various types. Under C# 1.1, you have to use an Object-based stack, meaning that the internal data type used in the stack is an amorphous Object, and the stack methods interact with Objects:

 public class Stack {
object[] m_Items;
public void Push(object item)
{...}
public object Pop()
{...}
}

Generics allow you to define type-safe classes without compromising type safety, performance, or productivity. You implement the server only once as a generic server, while at the same time you can declare and use it with any type. To do that, use the and > brackets, enclosing a generic type parameter. For example, here is how you define and use a generic stack:

 public class Stack {
T[] m_Items;
public void Push(T item) {...}
public T Pop() {...}
}
Stack stack = new Stack();
stack.Push(1);
stack.Push(2);
int number = stack.Pop();
On the surface C# generics look very similar to C++ templates, but there are important differences in the way they are implemented and supported by the compiler. As you will see later in this article, this has significant implications on the manner in which you use generics. Compared to C++ templates, C# generics provide enhanced safety but are also somewhat limited in capabilities.

 

Roy points to NAntPad that lets you edit your NAnt script files using a GUI and then generates the .build XML file automatically.


 

October 28, 2003
@ 04:23 AM

CodeSMART

To add all the Visual Studio features that Microsoft got

CodeSmith

Code generation

CodeWright

Text Editing

Desktop Sidebar

Provide you with instant access to some of your most important daily information

Dundas WebChart

The absolute best chart control I've seen

FogBUGZ

Bug-tracking

ieHttpHeaders

Show you the HTTP Headers IE are sending and receiving.

InstallShield and Wise

installer creation

MindManager

Brainstorming

Nant

build system

NDoc

documentation creation

NUnit

TDD fixtures and test harness

Reflector

Spelunking

RegexDesigner.NET

Regular Expressions

RoboHelp

End-user documentation

XMLSPY

XML editing

 


 

Scott Guthrie answers queries about web deployment in Whidbey. He has also attached a screenshot !!!
 

October 24, 2003
@ 12:14 AM

I keep forgetting the path to this schema folder all the time ...

C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Packages\schemas\xml

And this is about what you need to have in the schema. Found the following in the AdRotator example from MS.

<xsd:schema vs:ishtmlschema="false" vs:friendlyname="Ad Rotator Schedule File" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/AspNet/AdRotator-Schedule-File"targetNamespace="http://schemas.microsoft.com/AspNet/AdRotator-Schedule-File“>

[Update: Actually the target namespace and the xmlns attribute for namespace is also not required. The vs: attributes and the xmlns:vs namespace should however be included]


 

October 14, 2003
@ 05:12 AM
CodeSmith rocks ! Cant say much here, check out for yourself. Will have details about my experiences once I have used it more.