What's
new in the .NET Framework 1.1
Host: Kumar Gaurav Khanna, Microsoft MVP
May
02, 2003
Deepak_MS: Hi Folks!
Deepak_MS: Good Evening, today we have with us Kumar Gaurav Khanna,
who works with HP and is a Microsoft MVP
Deepak_MS: and a good morning to Gaurav, who has joined us from US..
(its still very early morning there )
KGK: Good morning from me
KGK: Thank you Deepak
KGK: Yes...not my usual day
Deepak_MS: Ok Gaurav, we already have two questions.. so you can get
started right away..
Deepak_MS: (Pratap): what are the new features added in framework
1.1?
KGK: Before I start off with that let me tell you something.
.NET 1.1 has
KGK: 1) New Additions
KGK: 2) Non-breaking Changes
KGK: 3) Breaking Changes
KGK: And in this chat I shall give you an introduction
to all of these hopefully answering your queries. So, we kick off
with "new additions":
KGK: Visual J# is new addition. .NET 1.1 includes the
installation of its redistributable when VS.NET 2003 is installed
KGK: It leverages the skill-set of existing Java language
developers to .NET with very negligible grammatical learning curve.
KGK: Apart from this, we have the new and enhanced support
for targeting mobile devices from ASP.NET and couple this with the
fact that its part of VS.NET 2003 unlike VS 2002 with supporting 200+
devices compared to 150+ of VS 2002.
KGK: For the C++ community, the good news is that the
VC++ compiler is now a lot more ANSI standards compliant, reaching
close to 98%.
KGK: But the more important issue here is the support
for VC++ developers to "draw" a WinForms application just like any
other VB.NET VC#, VJ# developer. This wasn't supported in the VS 2002.
So, now VC++ developers for .NET can take complete advantage of RAD
development.
KGK: Moving to database accesses, .NET 1.1 has now support
built-in for accessing Oracle database and accessing databases via
ODBC. The relevant namespaces introduced to work with them are System.Data.OracleClient
(which uses OCI internally) and System.Data.Odbc
KGK: Network developers who intend to write applications
targeting IPv6 networks, now have complete support for .NET 1.1.
KGK: Finally for WinForms controls hosted in IE, a new
"Internet" permission has been introduced, marking them as semi-trusted,
so that WinForm controls can be easily hosted.
KGK: And while I am a telling you how managed controls
are hosted in unmanaged hosts this will also be a good news for the
MFC developers that MFC 7.1 shipping with VS 2003 has been tested
completely with WinForms controls to host them, and works great!
KGK: CWinFormsControlSite is the controlling end just
like COleControl is for COM Controls
KGK: Apart from these major and obvious changes internally
the runtime has been optimized to scale well, particularly in context
of GC.
KGK: Well that's all for the "what's new"
KGK: As we proceed I shall talk about breaking and other
changes
Deepak_MS: (Pratap):: ok. among vb.net, c#.net, vc++.net and j#.net
which has the faster execution. Can you tell me the order?
KGK: When you are writing pure managed code, they are
all at par. In an enterprise deployment where just pure managed code
is being deployed they will perform equally well. Choosing one over
other depends a lot on what you plan to do. For instance, if you are
concerned over the overheads involved when accessing COM components
from your .NET app, then you might consider using Managed C++, using
IJW (It Just Works!), to reduce the interop. overhead and get better
performance.
Deepak_MS: (Subuki): Would this VB-like Windows Forms RAD be available
to .NET platform applications only?
KGK: Which other platforms do you have in mind?
Deepak_MS: (Subuki): Would this VB-like Windows Forms RAD be available
to .NET platform applications only? (Like MFC)
KGK: Well.. MFC itself has a good bit of RAD for itself,
albeit not as extensive as VB6 or WinForms RAD since the MFC Framework
design is such.
KGK: All the same, it has a good RAD support, we don't
write code for creating a UI anyways
Deepak_MS: (venu): System.Data.OracleClient ....does this speed up
the things...compared using System.Data.Oledbclient?
KGK: Definitely. Just like the SqlClient client actually
speeds up talking with the SQL Serve using TDS protocol OracleClient
uses OCI (Oracle Call Interface) to talk with Oracle Servers. OleDB
instead,would go thru a series of calls, via the OleDB provider before
it gets to talk with the Oracle Server, unlike OracleClient which
talks directly. Sure enough, things speed up.
Deepak_MS: (SriSamp): Have any improvements been made to the Oracle
client from the earlier version which was downloadable? The Oracle
.NET driver had native support for lots of Oracle data types, which
the MS driver did not have...
KGK: As of the moment, this is no exceedingly different
enhancement from the separate download which was available, except
for few optimizations and namespace name changes.
KGK: But if you see the latest Oracle proivder download
for 9i, they require the 9i client to be installed on the system where
the 9i managed provider will be installed. This prerequisite is not
there when you use the MS provider.
Deepak_MS: (pratap): is there any tool for converting vb.net code
into c#.net?
KGK: http://www.kamalpatel.net/
Deepak_MS: (Venu): when we use validation controls with asp.net...when
the code is validated the message appears very fast...but as we say
controls are server controls...how does the things turn up fast...does
IE has integrated .net framework/CLR?
KGK: When we say they are server controls, what it means
that they are rendered at the server and then relevant HTML/Script
code is sent to the client (browser). When validation occurs, its
pure client side javascript. No server trips come into the picture.
Hence, the quick response.
Deepak_MS: (Nanda): how could the code written in vc++ can be made
.NET compatible ?
KGK: Good question.. and if you are looking to completely
convert your VC++ application for .NET, I suggest you write it from
scratch for .NET. However, if only portions/classes need to be made
.NET compliant you should use the approach of writing managed C++
classes that wrap corresponding unmanaged C++ class and have one-to-one
method mapping. Your .NET application can then consume the managed
C++ class, which will internally get the work done using the unmanaged
C++ class.
Deepak_MS: (vin): When I install Framework 1.1 over an existing 1.0
Framework, When I open the VS.NET IDE I see just the Framework 1.0
components. I have to manually browse to the Framework 1.1 location
to select the new components. Is there any settings I have to change?
KGK: I think what you are doing is simply installing .NET
SDK 1.1 and trying to use it with VS 2002. This won't work well and
isn't advised. Instead, install VS.NET 2003 and use it to work with
.NET 1.1 classes.
Deepak_MS: (vin): What about the changes in compatibility breaks from
1.0 to 1.1. e.g. System.XML changes ... How do we code for such changes
... What is your suggestion on this ...?
KGK: All the breaking changes from .NET 1.0 to 1.1 are
available here and more.
KGK: Now, coming to your question, To handle code that
explicitly breaks up, you will need to rewrite it to work with .NET
1.1.
KGK: If, that code is available as a seperate assembly
which your application loads at runtime,
KGK: deploy a new assembly and set the version policies
to make your application use the new assembly. This way, you will
also use Side-By-Side execution, a concept that comes to life with
.NET 1.1 and 1.0 deployed together.
Deepak_MS: (Mamsona): Will it be possible to use the 1.1 with visual
studio 2002?
KGK: Nope... you will be able to browse and select relevant
assemblies, but VS.NET 2002 will not work properly with .NET 1.1 class
library assemblies.
Deepak_MS: (Mamsona): means we have only one option to upgrade the
current application for 1.1
KGK: Well, if you wish to use RAD of VS, then yes, you
got to have VS 2003. But if you simply wish to write class libraries,
etc, then just install .NET 1.1 SDK and use any text editor to write
code against it. Ensure that you compile using the .NET 1.1 compilers.
That's all. This will work.
Deepak_MS: (Mamsona): Then what's the compatibility factor? (I mean
the code written for VS 2002 will work with VS 2003 after upgrade???
KGK: Yes it will. Unless its part of the breaking changes,
it will work.
Deepak_MS: (SriSamp): Side-by-side is a good option, but if the client
buys 2003 servers, it comes with 1.1, correct? Can we install 1.0
on top of this to make sure that existing application (VS 2002) work
correctly?
KGK: Are you deploying VS or .NET 1.0 apps? In such a
case, configure the policies to redirect the calls to .NET 1.1 assemblies.
That will save you the trouble of installing .NET 1.0
Deepak_MS: (Nanda): Can I run the application created using managed
c++ in other OS like linux?
KGK: Yes you can provided the OS has a CLI implementation.
In-fact, I created a C# console app on Win32 and executed it on Mono.
Works great!!
Deepak_MS: (Mamsona): What major changes have been made to ADO.NET
classes?
KGK: Well.. as I said earlier, there is now built-in support
for Oracle and ODBC access. Apart from this, the DataReader now exposes
a "HasRows" property so that you know any rows have been returned.
You don't have to do a "While(dr.Read())". Where dr is a DataReader
object, to check if rows are present.
KGK: Also, if you have specifically instructed to your
database driver not to enlist your calls in transactional contexts,
now the Connection objects supports the EnlistDistributedTransaction
method that lets you manually enlist your call in an existing transaction
context
Deepak_MS: (dotnety): is it possible to make the assemblies created
using the frameworks made to invoke an EJB using SOAP? Does Windows
Server 2003 support this?
KGK: You answered your own question? If the server hosting
the EJB can understand the SOAP packet and invoke the EJB, and return
the result anyone can do that. Not just Windows Server 2003.
Deepak_MS: (SriSamp): Is there a performance difference between installing
1.1 on a Windows 2000 server and having it part of Windows Server
2003? The performance documents from MS seem to indicate there is.
Why is this so?
KGK: What's new in Windows Server 2003, though, is the
fact that now a COM+ application
KGK: can be exposed as a WebSevice with just a single
click. That's so, since Win2k3 has been optimized to work with .NET
1.1, not to mention that there are certain specifics to Windows Server
2003 which weren't there in Windows 2000, like I mentioned above:
creating a WebService for a COM+ application.
KGK: Finally, understand that Windows Server 2003 is native
to .NET 1.1, and hosts its internally. Just like Windows 2000 was
the first OS to host COM+ native. Hope the analogy clears your doubts.
Deepak_MS: Ok folks.. we need to wind off.. thank Gaurav for Logging
on.. !
Deepak_MS: Do join us next week for discussion on UDDI in Windows
2003 Server..