September 2005 Entries
Well, it's been a year since my second-first post. I just hope that my random thoughts and rants have provided you, my three readers, with insightful information.
I promise to keep up bloggin' good stuff for at least one more year!
Lately, I’ve been working a lot in .NET 2.0; specially with generic collections. After working with System.Collections.Generics.List, I’ve learned to appreciate its ForEach method. Oh, how much it reminds me of the map procedure in Scheme. Can you tell which code is faster?
namespace GenericList{ using System; using System.Collections.Generic; using System.Diagnostics; class Program { static void Main(string[] args) { string[] numbers = { "1", "2", "3", "4", "5"}; List<string> numberList = new List<string>(numbers); // Create a watch to time the execution! Stopwatch watch = new Stopwatch(); watch.Start(); // Old boring way! foreach (string string1 in numberList) { Console.WriteLine("First For-Loop Value: {0}", string1); foreach(string string2 in numberList) { int n1 = Int32.Parse(string1); int n2 = Int32.Parse(string2); Console.WriteLine("\tSecond For-Loop Value: {0}+{1}={2}", n1.ToString(), n2.ToString(), (n1 + n2).ToString()); } } watch.Stop(); Console.WriteLine("For-loop time: {0} millisec(s)", watch.ElapsedMilliseconds.ToString()); // One empty line for ease of read Console.WriteLine(); watch.Reset(); // Get value of list without loop! watch.Start(); numberList.ForEach(new Action<string>( delegate(string s) { Console.WriteLine("First Delegate Value: {0}", s); // Lets loop again! numberList.ForEach( new Action<string>( delegate(string s2) { // Convert to numbers int num1 = Int32.Parse(s); int num2 = Int32.Parse(s2); // Output the simple loop sum Console.WriteLine("\tSecond Delegate Value: {0}+{1}={2}", num1.ToString(), num2.ToString(), (num1 + num2).ToString()); } ) ); } ) ); watch.Stop(); Console.WriteLine("Delegate time: {0} millisec(s)", watch.ElapsedMilliseconds.ToString()); watch.Reset(); Console.ReadLine(); } }}
[OverDuePost]
While working with COM interop (VB6 client / .NET Server), our architecture team ran into some problems with returning typed arrays back to the client. I had spent over two hours trying to get things working with the correct set of attributes, but I kept on getting “Type Mismatch” errors in VB6. I had to leave early to meet up with my wife and Fred and Nick stayed after to help with more research. This is our brain child:
Domain object (and interface) that is used by VB6 to populate its UI
namespace InteropLibrary{ using System; using System.Runtime.InteropServices; [InterfaceType(ComInterfaceType.InterfaceIsDual)] [Guid("905816E8-9C73-42f0-A776-7117ACF633BD")] public interface IPerson { [DispId(1)] string FirstName { get; set; } [DispId(2)] string LastName { get; set; } [DispId(3)] string ID { get; set; } }}
namespace InteropLibrary{ using System; using System.Runtime.InteropServices; [ClassInterface(ClassInterfaceType.None), ComDefaultInterface(typeof(IPerson)), ProgId("Interop.Person"), Guid("135983AB-8242-41fb-8ED8-FDE3383A2FDD"), Serializable] public class Person : IPerson { string firstName; string lastName; string id; public Person () { ID = Guid.NewGuid().ToString(); } public string FirstName { get { return firstName; } set { firstName = value; } } public string LastName { get { return lastName; } set { lastName = value; } } public string ID { get { return id; } set { id = value; } } }}
Server object (and interface) used by VB6 to return either a single...
Just wanted to mention that there are significant changes from Beta1 to Beta2 for Indigo (Windows Communication Foundation) that will make your beta1 applications not to work under the new version.
Right now I’m trying to sort through all the big differences. Thus far, I’ve found out the following: wsProfileBinding is no more. wsHttpBinding is now it’s equivalent, also System.ServiceModel.IProxyChannel for your proxy client is no more.
I will try to point out the big changes for the two versions of Indigo.
Just working late on a project. Here's the total thus far:
Total Lines: 23, 133
Total Lines of Code: 16, 901
Almost there!
Clemens Vasters has a new article on MSDN entitled Introduction to Building Windows Communication Foundation Services. The article gives you a nice run through the major parts of Indigo (WCF) and what it can do.
Check it out when you have the time!
Nikhil posts on the architecture of the Atlas framework. I’ve downloaded Atlas but have yet to find time to play with it! Curse these house chores!!
Anyway, it appears that Atlas provides support for client and server (and things in between). The thing I’m interested in finding out is how they create the dynamic JS proxies to interact with ASMX, Indigo and ASPX…
A LINQ (Language INtegrated Query) paper by Don Box and Anders Hejlsberg has been posted on MSDN. I haven’t read all of it yet, but so far so good.
The paper gives you a great deal of information of the functionality and features of the new framework.
The WinFX September CTPs have been released. Click the next links to get your fill of goodness.
Runtime Components
SDK
VS Extensions
ScottGu has posted the code for the Atlas keynote. Check it out, it’s pretty damn cool!
Ok, I know that was a stupid post title. But you have find it amusing that Windows Workflow Foundation (WWF) ended up with that TLA.
What is WWF? Well, it builds workflow right into the operating system (Win Vista) so your applications can take advantage of it.
Will this replace Biztalk? You ask? I don’t know and I don’t think so. Matt Milner has some interesting things you should consider though in that issue. Thanks Matt for your input!
Kent Tegels chimes in about his impressions of LINQ. Kent has a great set of points (and concerns) with the new framework. I specially agree with his fourth point.
Thanks Kent for your input!
Interesting observation:
Has anyone else noticed that some of the features defined by the C-omega language (download) are being split between the 2.0 and 3.0 version of the language? Don’t get me wrong, I think it’s awesome that the language is getting all of these awesome features. I just find it a bit interesting that they waited this long to release all of the goodness…
Here’s an excerpt from the article link above:
C? includes a number of constructs from the SQL language as keywords. Operators for performing selection with projection, filtering, ordering, grouping, and joins are all built into C?
If you look at the LINQ...
I’ve only played with this for a few seconds and all I can say is that it’s pretty sweet…check it out!!
What is it? it’s a pretty sweet implementation of Avalon and Indigo…can you imagine writing applications like this one?
This is awesome! Read about C# 3.0 and Visual Basic 9.0 and their sweet features.
C# 3.0 is going to be sweet…
Yes! During a PDC keynote speech, ScottGu releaved the Atlas bits to developers! If you’re as anxious to play with the technology as I am, you can learn more about it here.
I can’t wait to start playing with it!
Yet again, ScottGu posts on how you can take advantage of custom item templates in VS2005. As Scott puts it, This feature enables developers to define common templates that they can re-use over and over when adding new pages/classes/controls into web projects or class libraries, and avoid repetitively typing standard content or code.
All I have to say is “sweetness”…
Eran Sandler posted some great information on Runtime Callable Wrappers (RCWs) for COM interop. A good read for those COM oriented folks…
Bertrand Le Roys posted his experience with Dmitri Robsman’s ASP.NET photo album handler. The photo album is implemented as an HttpHandler and’s totally free to use and update.
Check it out if you have the time.
Someone asked about the support of anonymous classes within the .NET Framework yesterday at our monthly user group meeting. At the time, I didn’t realize that I said that the .NET Framework does not support anonymous classes. I apologize for this incorrect statement!! The framework does support anonymous classes ONLY in J#. Why? Well, anonymous classes is a feature of the Java language.
If you want to know more about how anonymous classes work, check out my earlier post.
Richard Turner posts information about the support for “RPC” and “Messaging” programming models within Indigo. A quick read with good information.
Ok, well first and foremost, I would like to apologize for my delay of this post. Lately work has been sucking my brain dry!! When I get home, I just want to stare at a wall and pretend the pain is gone. Don’t get me wrong, I love what I’m doing right now, but I get so deep into it that it even haunts my dreams!!
What is this haunting? Well, it’s Enterprise Services. I’ll get to the reason in just a bit. The code I posted a while back asked a simple question, what does the code output?………Bueller? Bueller? Bueller?...any one?...
Today I passed my fouth exam, Analyzing Requirements and Defining Microsoft .NET Solutions Architectures (70–300) for becoming MCSD.NET certified. The test was not hard, nor easy…it was right up the middle with a TON of reading!! I recommend if you’re a slow reader, to start practicing on skimming useless business content for the tech-meat you crave when designing applications. Doing so will make you better prepared for the test’s long case studies.
Oh yeah, just a head’s up. Biztalk Server is the answer to all your problems!