Posts

Open source / Free tools and frameworks (for .NET)

Image
It's been a while now since my last post. In 2009-10, I was out of the country for 7 months on consulting assignments. Got an opportunity to learn exciting technologies and work on tight deadlines, but it drained me quite a bit too! 2010 has been a roller-coaster so far with more emphasis on personal commitments, but now things are in a steady state and I am back to blogging. As you can see, my blog has undergone few changes - new template, comment moderation, links to websites, etc. One feature I could not figure out is "highlighting of author's comments", I tried the approach given here , but it did not work for me. It would be awesome if you can leave me a tip. Ok, now let's start off with the post. In my current assignment, I am delighted to work with a couple of seasoned .NET technical architects. One of them (will link him once I get his profile) shared the above mind-map of open source and free tools and frameworks for .NET applications in general. The mind

WPF - Navigation

Image
Premise Over the past few weeks, I was scrambling to develop a WPF 4.0 application along with a UI designer who specializes in Expression Blend. Though I have worked on WPF 3.5 projects previously, I was really flummoxed while implementing fundamental portions like navigation, modal pop-up’s, “Loading” animation, session management, etc. in WPF. I am not saying that WPF 4.0 is vastly different from WPF 3.5, but I realized that I have never closely worked with XAML and WPF specifics like dependency properties, resource dictionaries, routed events, etc. Anyway, since I had very limited time, I mostly chose the easiest ways to implement specific areas of the application. In this post, I will describe the simplest method to implement navigation in WPF. Disclaimer You might have come across WPF architectural frameworks such as PRISM, MVVM, etc. I have some experience with PRISM, but for my current application, I needed a "very very basic” navigation mechanism. So I woul

WCF - Large Data Transfer - Best Practices

Image
Transferring large volume of data over the wire is indeed an architectural challenge for any application. The word “large” is relative and the range could be from MB's to GB's. There are several options for large data transfer viz. FTP (out-of-band), Streaming, Chunking, etc. Above image lists the viable options for Large Data Transfer with their pros and cons and possible usage scenario. Options mapped to scenarios: 1) Intranet scenario: Context: Assume the application is a line-of-business Windows based thick client. It is deployed within the organization intranet and interoperability is low priority. Further, assume that the application consumes some intranet services which handle medium to high payloads (several MB’s to few GB’s). For example, the application might consume an in-built WCF service for uploading large data to a central database. Last assumption is that the payload data is saved in the database as a single entity (as an image). Recommendation: FTP is not prefe

ClickOnce - Deployment and Security aspects

What is ClickOnce? ClickOnce is a deployment technology used for WPF, Windows and Console applications. A ClickOnce application can be configured to download updates automatically or from a remote location like web page, network share or even from a CD. Further, a ClickOnce application can run in offline mode as well. Unlike Windows Installer, ClickOnce provides several advanced features viz. update from web, custom permission sets, etc. Enabling or configuring ClickOnce can be done easily via the Security page of the Project Designer, while publishing can be done through the Publish page of the Project Designer. The core ClickOnce deployment architecture is based on two XML manifest files: an application manifest and a deployment manifest. The application manifest describes the application itself. This includes the assemblies, the dependencies and files that make up the application, the required permissions, and the location where updates will be available. The deployment manifest des

.NET is dead. Long live .NET!!!!

The title is derived from the historic phrase " The King is dead. Long live the King! " signalling the immediate succession of a monarch. Yeah! .NET frameworks 1.0 and 1.1 are on their path towards extinction. The mainstream support by Microsoft has ended for .NET 1.0 and would end in October 2008 for .NET 1.1. Not to worry, a new bunch of leaders, read .NET 2.0, .NET 3.0 and .NET 3.5 have come to the fore now. The focus of this article would be to provide a brief history of various .NET frameworks and related technologies. Major (not all) technology releases in chronological order: 2002 .NET Framework 1.0 Visual Studio .NET 2002 (Rainier) C# 2003 .NET Framework 1.1 Visual Studio .NET 2003 (Everett) 2005 SQL Server 2005 Visual Studio 2005 (Whidbey) Team Foundation Server 2005 2006 .NET Framework 2.0 C# 2.0 ASP.NET AJAX 1.0 (initially ATLAS) ASP.NET AJAX Control Toolkit .NET Framework 3.0 (WinFX) 2007 .NET Framework 3.5 Visual Studio 2008 (Orcas) Team Foundation Server 2008 AS

WCF Durable Services

The advent of .Net 3.5 has made two of its core tenets: WCF and WF interact with each other and interdependent to a certain extent. One notable product of this association is WCF Durable Services. What is it? A Durable Service (new in WCF 3.5) is an implementation of a long running WF service, which persists the state of the service and its message contents on a per client basis. The state can be persisted "out-of-process" and the client can resume the execution at the last saved point. The persisting and depersisting activities (also called dehydrating and rehydrating) are done immediately prior to and after a service method is called. The persistence store is fully configurable (via config file) and could be SQL Server, file system or any custom store. A Durable Service inherently supports durability and reliability. Why is it required? The most apt use of a Durable Service would be in business scenarios with heavy data dependent tasks that require per-client persistence a

Credit Card WOW's!

Is a credit card a woe or a wow? Read on and be surprised by the power of credit cards! Personally, I own credit cards and have cultivated innovative ways of utilizing them based on my experiences. Below is my list of tips to maximize the benefits of your credit card(s) in India: 1) Repayment (Don’t pay interest): Pay your FULL credit card bill each month. This way, you can completely avoid the interest charges (as high as 36% per year!). Yes, if you pay the entire amount billed in your credit card statement, you do not pay any interest to the company. As a credit card holder, your primary responsibility is to maintain manageable debt and interest rates. The interest rate does not reduce to zero, until you repay the full amount at some point. Incase you are unable to pay the full amount due to financial constraints, refer points 2 and 3 below. 2) Balance transfer (Pay in parts, keep it dormant): You can transfer the balance from one credit card to another credit card (of yours, not oth

.NET Reference Source project launched!

Moving away from tradition, Microsoft has launched the .NET Reference Source project. Yeah, Microsoft has gone "open-source". Basically, this new feature would allow developers and enthusiasts to view / debug the .NET Framework source code in Visual Studio 2008 IDE. What's in it for me? Guidance: The source code would reveal the patterns and practices followed (and preached) by the Microsoft team. This would help architects and developers to follow (or customize) these best practices for their solutions. Defect identification: The source of an application defect can be traced inside the .NET Framework source code (and not just upto the user code, previously). System defects can be reported to Microsoft and alternative code flows can be used temporarily. Community feedback: The biggest advantage of "open-source" concept is the feedback received from the community. Microsoft could incorporate developer feedback in their further releases and make the .NET bran