SSO - Trying to Understand the Best Practice

I have started doing some preliminary planning/design work for a new web-based project. This project is extremely important for our organization since it will be the foundation for a portal that we will build in the future. In addition, this application will not only going to be used by our employees but also by some of our customers and partners. Our customers/partners will also have the option to integrate our application into their portals. That means the application will be used in many ways from both inside and outside of our domain. Hence, the need for Single Sign On (SSO).

I have been trying to do a lot of research on this subject. I have been sifting through MSDN, blogs and articles trying to find best practices. I must admit that it has not been easy. Frankly, I had expected to discover a lot more information in MSDN. In addition, I had hoped to find some tools or API or something to effectively utilize Enterprise Single Sign-On, Active Directory and possibly WCF. I guess, my research will continue, and I will have to come up with something that works for us.

An Architect's Dream vs. Reality

As I gradually open my eyes, I realize that I have been transported to an unknown place. It's somewhat dark. I look around; but no one was in sight. Distant glowing lights in the form of a grid-like pattern give a faint visibility. It seems like a virtual world, as if taken from a science fiction movie. Despite some initial apprehension, I am beginning to feel at ease and starting to realize my true purpose of being here. I know now what I'm supposed to do.

Read More

ASP .NET MVC Framework

Microsoft is getting very close to releasing the new ASP .NET MVC framework. (Click here for more info). When I first took a look at the preview, the first thing that popped in my head was “it’s about time”. I must admit that I haven’t spent a lot of time with this new framework. So, my knowledge is somewhat limited; however, I can’t stop thinking about the following:
1)      Why stop at ASP .NET? Why not create a common MVC framework for both the Windows and Web development?
2)      Can WPF coexist with MVC framework?
3)      How do we continuously evaluate and utilize the best of all the options that are constantly being incorporated into .NET and Visual Studio?
In any case, I would be curious to see how the new MVC framework evolves within the coming months.

MSDN Event - LINQ, WCF & Silverlight

I have recently attended one MSDN event that covered 3 topics - LINQ, WCF and Silverlight. I was looking forward to this event because I had hoped to gain something about WCF and LINQ.  During the presentation, the speaker ended up spending a lot of time on LINQ and Silverlight; whereas, he pretty much zoomed through WCF. That was very disappointing considering my interest on Silverlight (or Microsoft's Flash) is non-existent.

In any case, I know I will be delving deeper into WCF (and possibly LINQ) in the upcoming months.

My Steps Towards BizTalk

I have gotten heavily involved with BizTalk since I have started my current employment a few months ago. It certainly has been a challenge to start with zero knowledge of BizTalk, and get involved into designing a fairly complex messaging architecture.

Read More

Code Generation from XSD

Whenever, I have created XML schemas, I didn’t want to go through the pain of creating classes from the XSDs. Maybe, I am lazy; but if something can automatically generate codes and in turn reduces my work, I am all for it.

 

In the beginning, I have used xsd.exe to generate codes from XML schemas. It comes standard with Visual Studio. This command line utility served its purpose despite some issues with complex schemas. Then I had come across XSDObjectGen. I found this downloadable tool in MSDN, and it definitely was a huge improvement from xsd.exe. This tool handled complex schemas fairly well. There were some issues every now and then; but those issues were manageable. However, something was still missing. I wasn’t particularly thrilled with the structure of the generated code; but I lived with it.

 

Finally, I came across CodeXS. I have been impressed with whatever I have tested so far. It generates codes from fairly complex schemas without any problem. I even like the structure of the code that CodeXS generates. Most importantly, it’s a web-based tool (you can also download the sourec code from the site after registration). So, no need to download, install and re-install if the tool gets upgraded. It’s been good so far.

 

I will be using CodeXS going forward; but I’ll definitely notify the creator(s) of CodeXS if I find any bugs in the tool.

Every End Is A New Beginning

It's been a while since I blogged. Last few months have been a transition period for me. I've quit my previous job a few weeks ago, and moved on with something new. So, I've been busy trying to understand the inner workings of BizTalk and come up with a good design for EDI. I am finding a few gotchas within BizTalk and VS2005. I'll surely be blogging about those soon.

Singleton - Traditional way vs. .NET way

Whenever we want to implement a Singleton Pattern, we can always find examples by picking up a book on Design Patterns or by searching through the internet. Most of these implementations are very similar, and have been in use for some time. I have shown one such implementation that is traditionally being practiced in a multi-threaded environment.

Singleton the Traditional way:

public sealed class Singleton
{
      private static volatile Singleton instance = null;
      private static object syncRoot = new Object();

      private Singleton() { }  // Private constructor – cannot be instantiated

      public static Singleton Instance()
      {
             if (instance == null)  // Double check locking pattern
             {
                  lock (syncRoot)
                  {
                       if (instance == null)
                       {
                           instance = new Singleton();
                       }
                  }
             }
             return instance;
      }
}

Microsoft, on the other hand, has dramatically simplified the implementation of Singleton Pattern with enriched features in .NET. Please see below:

Singleton the .NET way:

public sealed class Singleton
{
      // Private constructor – cannot be instantiated
      private Singleton() { }
 
      // .NET will initialize static property only during first call
      // Framework guarantees thread safety on static type initialization
      // Readonly keyword prevents Instance from being 
      // modified after initialization

      public static readonly Singleton Instance = new Singleton();
}

I got one thing to say – “.Net Rocks”!!!!

Haven't blogged in a while

It's been a while since I've blogged. I've just been so busy. I'm planning to rant about a few things soon.

Few Observation with Integrated Development in V.S. 2005

Since the time Integrated Development became reliable in Visual Studio, it evolved into a necessity in application development. Coding today without Integrated Development especially where 2 or more developers are involved is almost unthinkable.

 

Read More

Have you heard of DDD?

Many people have heard about TDD (Test Driven Development); but have you heard of DDD? It’s called Defect Driven Development. Where the heck did this terminology come from?

 

It all started at one of my recent clients. Some of us started wondering about the highly aggressive application development schedule set by the management. We are also wondering if we even have enough time to complete all our work during the development phase. A colleague and I started discussing that we might be able to complete our development with “minor” defects. Some of these defects might just be stubbed out methods with “not so well written code”. Consequently, when the defects are found during application/product testing, the developers will fix those “minor” defects. Hence we have an emergence of a new concept called DDD (Defect Driven Development). My colleague threw the term DDD while we were discussing; so, the credit goes to him. My recommendation to him is to write a book about it; he could make millions!!

Continuous Testing in an Agile Environment

I went to a Forum on 10/4/2006. It was conducted by an organization called C-SPIN, and the presenter covered a topic about “Continuous Testing in an Agile Environment”. The presenter seems to have observed a tremendous success in her organization (Macrovision) by applying some type of Agile environment.

 

Read More

Why the Fascination with Wizards?

In order to provide increased productivity, more and more code generation tools are now hitting the market. Many IDEs are also getting equipped with Wizards and plug-ins in order to make life easier for developers (or so called developers). We have Wizards that allow us to magically produce codes needed to create a database driven application by simply clicking a few buttons. However, whenever we sift through the codes produced by these Wizards, we often wonder “where is the methodology, where is the pattern, and above all… where is the logical separation of code”.

 

In a quest to increase productivity or to make developers out of non-developers, IDE makers are creating tools to generate codes that are against many of the good practices and principals. We constantly preach about using good coding patterns; however, if the Wizards are incapable of creating good code, then what are they good for? Don’t get me wrong; I like the Wizards to create a quick little application for personal use or for some mom-and-pop shops. However, Wizards for semi-large applications and/or Enterprise level applications is like…… c’mon do I even need to mention it????

 

In any case, Wizards have their place; but not for the type of work I prefer to do. So, it just boggles my mind when people get so excited about Wizards and drag-and-drops. Makes me wonder… “Why the fascination”.

Finally Blogging

Finally... I have joined the world of blogging. Blogging is definitely a way to share ideas and learn from one another. Hopefully, I can provide some insights on various technologies from my personal experiences. I am sure I will learn a great deal from all the visitors.

 

All I can say… let it begin.