C#’s LINQ is a great example of functional design in an OO language. -
Unity Application Block
Windows Identity Foundation Simplifies User Access for Developers
Design Guidelines for Developing Class Libraries
General Naming Conventions
Names of Namespaces
Names of Assemblies and DLLs
Recommended Tags for Documentation Comments (C# Programming Guide)
Windows Communication Foundation (WCF)

Asynchronous Programming Design Patterns
Dependency Injection

If we are considering to use .NET, does it restrict us to a certain programming language?

No. We can use C#, ASP, Visual Basic, IronRuby, IronPython or any languages that the Microsoft Common Language Run (CLR) and / or the Dynamic Language Runtime support.

Is there any open-source implementation for .NET?

Yes. .NET is not inherently tied to a particular platform. Microsoft CLR is the most common, but Mono is an open-source implementation that runs on Mac and Linux. The mono project also provides us with mod_mono (Apache), monotouch (iPhone) and monodroid (Android) as alternate platforms on which to run our C# code.

Mono is usually behind the C# developments coming out from Microsoft because the Mono team has to catch up. The Mono website lists the areas of compatibilities. The amount of difference is large.

If you want to use bleeding-edge feature, we should use Microsoft .NET stack.

What is NuGet?

NuGet is a Visual Studio extension that makes it easy to install and update third-party libraries and tools. See or

How to install NuGet?

Before install NuGet, open Visual Studio, go to the Tools menu and then Extension Manager. If NuGet Package Manager is already installed, uninstall it. Close Visual Studio.

Then go to, download, run the installer (a .vsix file), and start Visual Studio

How to use NuGet?

In Visual Studio, right click on the project -> Manage NuGet Packages

You will be able to search online through myriad of open-source libraries to use in your projects.

To install new package:

For the project that you want to add a reference to, right click on references and click on Manage Nuget packages. Click on online and search in the box for the package you want to install. Click install.

To update packages:

For the project you want to update the reference for, right click on references and click on Manage Nuget packages. Click on updates. Any package that shows an update available you can click on Update to update it.

What open-source IDE can we use if we are not using Windows platform?

If you’re not on Windows, then you might opt for Mono Develop.

Routing (Global.asax):

    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Message", action = "Index", id = UrlParameter.Optional } // Parameter defaults

This is the initial entry point of the web site. With some simple pattern matching of URL strings, we can transpose a request to an instance of a controller and an action method upon that controller. Additional parameters related directly to those required by the method. For example, {controller}/{action}/{id} will work for /messages/edit/1

Controllers (MessageController.cs):

public class MessageController : Controller {
    public ActionResult Index() {
        return View(new Message { Text = "Hello C# ASP.NET MVC World!" });

The MessageController is an IController class instantiated by ASP.NET engine per request when the above route is matched.

View Models (Message.cs):

public class Message {
    public string Text { get; set; }

Although passing data to a view via a dictionary (the ViewBag) is possible, it is generally considered a better practice to package up the data that is required by a particular view into a View Model, used as a transfer object between the model and template.

What is the meaning of the above code? What is a View Model?

Views (index.cshtml):

@model Message
<h2>Dot Net Dev</h2>

The templating engine used is Razor. The @ symbol is used to denote the beginning of code. If followed by a view model variable, it will be outputted to the HTML.


public MessageModule(): base("/")
    Get["/"] = x =>
        dynamic model = new Message { Text = "Hello Nancy World!" };
        return View["message_index.cshtml", model];

The route pattern is defined and matched to a method in the same line, using C# lambda (inline anonymous function) assigned to a dictionary in the message module. This means that when a GET request comes in for /, the function body gets executed and it create a Message model, assign it to a dynamic variable and return it with the view's name.

What is an Assembly?

Assemblies are groups of namespaces.

What is the naming convention for Assembly?

In general, assembly naming follows the same basic pattern as namespaces, with the exception that assemblies are groups of namespaces, and so may contains many different namespaces.

Ideally, the name of the assembly is the prefix for all namespaces contains within it, but this is not a rule of thumb, and may not be appropriate for all assemblies.

What is IIS Express?

Installing this component means you do not have to install the full IIS on your machine but you will get the same functionality.

What is NUnit?

This is the unit testing tool. This will be installed automatically by NuGet when you open the solution and build the code for the first time. If not, you can install it using NuGet.

What is StyleCop?

StyleCop is a Visual Studio plugin that is used to make sure that coding standards are applied consistently throughout the code base. See

The solution-level Settings.StyleCop file contains the set of rules used by the project, and can be edited with the StyleCop setting editor.

What is Resharper?

Resharper is a developer productivity tool that can be used to help achieve standards compliances with the 'Cleanup Code' feature. This plugin cost $199 per user license. It contains a Unit Test Running control that is very helpful. When you open a Unit Test class there is an icon in the code window that will let you run or debug the entire class or specific tests. It also opens a UI that shows your results. See

Developers have mixed opinions about this product. Some think it is bloated and slows down Visual Studio. Other think the time saving features more than make up for any bloat.

Code analysis, refactoring, code templating, code locating, and unit test runner contained in this tool are indispensable.

What is

This is a free utility that install links into Visual Studio. It allows you to right click on a class and run the test. It will open a GUI showing the results. It also allows you to jump into the debugger. This utility also includes a code coverage tool.

What is Moq?

This is a library for mocking (if you are familiar with unit testing)

What is Visual Ankh?

This is an open-source subversion plugin for Visual Studio. See

What is the Entity Framework?

The storage decision will be hidden behind the Entity Framework, and either Oracle or SQL Server, or a combination of the two, can be used as the database.

Entity Framework is a free Object-Relational Mapping framework from Microsoft. Entity Framework functions out-of-the-box for SQL Server. To work with Oracle, we will need an Entity Framework connector. The most functional connector is a commercial product by DevArt called "DotConnect for Oracle".

What is Unity?

A free open-source dependency injection framework from Microsoft. See

What is Log4net?

Log4net is an open source logging framework from Apache. It is an industry standard logging framework with broad community support. The framework is flexible and extensible, and support dynamic logging configuration, a necessity for SaaS systems.

What is CruiseControl.NET?

It is an open-source continuous integration tool that works natively with .NET and the Microsoft MSBuild framework.

What is Windows Communication Foundation (WCF)?

Need update. See

What is Windows Identity Foundation?

Can be used for single-sign-on. Need update. See

What is SAML?

Can be used to augment security functionality. Not sure. See

What is NCover?

An open source code coverage framework. See

What is DotCover?

A commercial framework by JetBrains that is part of the Resharper developer productivity tool.

How to install dotConnect for oracle?


Miscellaneous Stuffs:

MS Visual Studio

  • MS Visual Studio
  • XML
  • MVC3
  • jQuery UI
  • Knockout.js (MVVM)
  • Unity Application Block (dependency injection)
  • InRule
  • NUnit
  • Mog
  • Resharper
  • NuGet
  • StyleCop
  • FxCop
  • Log4Net
  • Window Identify Foundation (ADFS)
  • Microsoft Entity Framework
  • Model First

Page Request -> Event Controller -> Form Service -> Form Processor -> Model Processor -> Data Layer -> Form Tables

The Data Layer use Entity Framework to retrieve Form Data.

Event Controller invoke rendering logic


Download Microsoft .NET Framework 4 (Standalone Installer)


Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License