Sunday, November 24, 2013

How we can get the installed voices using c#?

This sample code will get the installed voices using C# SpeechSynthesizer and will load in to a combo box.

using (SpeechSynthesizer synth = new SpeechSynthesizer())
    foreach (InstalledVoice voice in synth.GetInstalledVoices())
        VoiceInfo info = voice.VoiceInfo;
        cmbVoices.Items.Add(info.Description + ", " + info.Gender + ", " + info.Age);
    if (cmbVoices.Items.Count > 0)
        cmbVoices.SelectedIndex = 0;

Tuesday, November 12, 2013

What is White framework?

What is White framework?

White framework is an open-source framework which provides a handful of features to automate UI applications. By using White framework we can simulate a user effectively.  For example, if we want to perform some stereo type actions too many times like Launch an application, Click on a button, select a value, etc.. it might be awkward. If there is no decision making required then it has much worse situation. In these kinds of situations, we can avoid a human being from doing this. Instead we can have automation tool to simulate the human being.

White framework is basically a Test Automation tool, but we can use this to do the automation also. In simple words we can launch an application, can find buttons and other controls, can simulate mouse moves and clicks, activate controls, etc… That means everything which can be possible using Windows APIs.

White framework is developed using .NET 3 runtime. This uses windows UI automation library and Windows messages. If a developer uses white framework he does not worry about the PInvoke related activities. We can say White framework is a wrapper above the UI automation library and Windows messages.

White framework can be used to automate applications which are developed using Win32, WinForms, WPF, Silverlight and SWT (Java) platforms.

White framework Architecture 

Helpful Links

Source code can be found here:

Documentation can be found here:

Sunday, May 12, 2013

Basics Of Attributes in .Net Framework

The Attributes are the declarative informations used to instruct the .Net Runtime. The attributes can work with types, fields, methods and properties. These informations are stored with the metadata file. By using the Attributes the developer can control the CLR. So we will get a dynamic behaviour from the CLR.

Eg:- Serializable is an Attribute.

Usage of Attributes in VB.Net(Sample):

<Serializable()> _
Public Class Employee
Public Name As String
Public Designation As String
End Class

Usage of Attributes in C#.Net(Sample):

public class Employee
public string Name;
public string Designation;

Note: All the attributes are classes that derived from System.Attribute class.

.Net framework has a lot of attributes that can be used for controlling XML serialization, Web services, COM interoperability etc.. And .Net provides the oppertunity to create custom attributes.

Different Methods to Load Assembly Dynamically in .Net

  1. Assembly.LoadFrom : Loads an assembly given its file name or path. Loads the assembly from the specified path, this will not search for the assembly in other directories. If an assembly with the same identity is already loaded, LoadFrom returns the loaded assembly even if a different path was specified.

  2. Assembly.LoadFile : Loads the contents of an assembly file on the specified path.

  3. Assembly.ReflectionOnlyLoad :

  4. Assembly.Load : This method takes the name of the assembly, and the runtime searches for the assembly in different locations. These locations include local directory and global assembly cache.

  5. Assembly.LoadWithPartialName :

This is an incomplete article. I will be back with more details.

Friday, May 10, 2013

Add blog to Google search

You can add your blog to google search by submitting your URL to Here you need to give /atom.xml
Once it is listed by google, you need to continuously update the blog with good articles. Also need to add relevant tags. This will make the blog to be listed in the searches in the toplist.

Wednesday, April 24, 2013

How to send Email from SQL Server with attached csv file

Please see the below sample code which will send email which will have an csv attachement.

Exec [msdb].[dbo].[sp_send_dbmail] 
@profile_name = '',
@recipients = 'emailid',
@body = ' Hello Sir,Please find the attached details...',
@body_format ='HTML',
@subject = 'Subject',
   @attach_query_result_as_file = 1, 
   @query_result_header = 1,
   @query_result_no_padding = 1,
   @query = 'SET NOCOUNT ON; SELECT EmployeeName, Address FROM  EmployeeDetails',
   @query_result_separator = ' ',
   @exclude_query_output = 1,
   @query_attachment_filename = 'EmployeeDetails.csv'

Wednesday, September 30, 2009

Web Farm and ASP.NET

This is an abstract of the Web Farming in ASP.NET. Just like “Capsule”. Before discussing about Web Farm, we need to get some basic knowledge about Server Farming.

What is a Cluster Computer or Server Farm?

Cluster Computer (Server Farm) is virtually a SINGLE computer system, but logically it includes multiple computers. That means, there are multiple computers, but it works as a single unit. These computers are usually connected by Local Area Network. The Load Balancing logic decides how/which computer in the Cluster to do the task.

Load Balancer

Load Balancer can be Software or a dedicated Hardware, but its function is same to forward the request to actual Server. The Load Balancer will decide which server should be used for getting optimal performance. The decision will be based on the configured scheduling algorithm. Example for scheduling algorithm: - Round Robin, Random, Weighted Round Robin etc..

What is Web Farm?

A major use of Server Farm is for hosting web sites. In this case we will call the server farm as Web Farm. By using web farm for hosting web site we can make sure the availability and performance of the web site.

How it works?

The web farm is a collection of web servers, but all are hosted with same websites. If a user requests an HTML page in the website (Eg:-, this will come to the Load Balancer. Then it will forward this request to anyone of the web server. That means all the requests to the website are routed through the Load Balancer. So we cannot say the user will be served by the same web server for all his requests.

Web Farm & ASP.NET

Simply a website is stateless. That means it will forget all about the previous page request. For example, User A requests home.html, then Aboutus.html. Here the web site cannot identify both requests are from the same user. Each request will be treated as an independent request.

Microsoft ASP.NET has an advance feature, it provides Session State Management. That means it keeps memory of the page requests. So it can identify the requests from the same user.

So the problem arises in the Web Farm.

Assume, we are browsing a shopping web site for purchasing a Laptop. The Products.html page contains all the models of Laptop and “Purchase” button against each Laptop. While clicking on the “Purchase” button the users will be redirected to CreditCarddetails.html page and collects the details. Here the website keeps the Product selected in the first page in his memory for later processing. If this happens in a web farm, there will be a problem. For instance, the first request will be to Webserver1 and second will be to Webserver2. So Webserver2 will not get the information collected in the first request.

Solutions For this Problem

There are too many solutions for this problem. These are the commonly used solutions

1. Use SQL Server or State Server for keeping state information.
Here the state information will be kept in a shared Database or a shared service. So all the web servers can access this and can recollect its memory even though the previous request was to another web server.

2. Persistence/Stickiness.
This is usually done through client side page redirecting. The first request will be through the load balancer, while processing the first request the URL will be replaced with new URL. This new URL is the URL of an individual web server not the Load Balancer. The main problem is, the underlying web servers are visible to the network.
landscape paintings nature art landscape art sky art illustration art artwork art human art beautiful art landscape prints nature prints sky prints illustration prints artwork prints human prints beautiful prints beautiful special promotions nature special promotions sky special promotions illustration special promotions artwork special promotions beautiful canvas prints beautiful painting canvas prints beautiful framed prints beautiful painting framed prints beautiful posters beautiful painting posters