I m now a MCPD...

Posted by DreamBig | 4:43 AM

Just last week I completed the MCPD Certification for Web Application Developer.

It was gr8 learning....

If anybody need help feel free to ask...


Read More...

Microsoft .NET Terminologies at a Glance

Posted by DreamBig | 9:57 PM

This article defines many important terminologies that are related to Microsoft .NET so as to enable the reader to have a ready guide to the technical terms. Terminologies related to Microsoft .NET Framework, ASP.NET, ADO.NET, XML, Biztalk Server, etc. are covered. This will also help readers prepare themselves to go into interviews confidently.

Overview

My objective in designing this article is to put an end to the arduous struggle of an IT professional seeking an understandable resource for the core terminologies of Microsoft.NET. Let me save you valuable time and energy by providing you with an article that gives you many of the important terminologies in Microsoft .NET and its related technologies. This article discusses most of the important terminologies related to Microsoft .NET Framework, ASP.NET, ADO.NET, Remoting and Web Services. The terminologies are not organized in an alphabetical order, rather they are organized in the order of the categories that they belong to.

The Common Language Specification

This is a subset of the Common Type System (CTS) and defines a set of conventions that are targeted at language interoperability of all the languages that run within the .NET environment.

The Common Type System

The Common Type System (CTS) is a standard that defines the necessary rules for type interoperability for the languages targeting the .NET environment. The common type system supports the following types.

· Value Types

· Reference Types

.NET Framework Class Library

The .NET Framework Class Library (FCL) is a set of managed classes that are responsible for providing access to the system services in the managed environment of Microsoft.NET.



The Common Language Runtime

The CLR is a runtime execution engine of .NET that provides an environment to execute programs that are targeted at the .NET platform. It provides memory allocation, security, code verification, type verification, exception handling and garbage collection in the managed environment.

Common Language Infrastructure

The Common Language Infrastructure or the CLI provides support for language interoperability in the .NET managed environment. It is comprised of the following features.

· A File Format (PE)

· Metadata

· MSIL

· Base Class Library

Assembly

An assembly is a group of resources and types, along with the metadata about those resources and types, deployed as a single unit.

Just In Time Compiler

The Just In Time Compiler or the JIT is responsible for compiling units of code and caching them at runtime as and when they are needed. Since the compilation occurs at runtime, it is known as a Just In Time Compilation.

MSIL

A program compiled in the .NET managed environment generates an intermediate code to support platform independence. This is called the MSIL or Microsoft Intermediate Language.

Strong Name

A Strong Name is a unique identifier given to an assembly using cryptography and a digital signature that is used to identify a particular assembly. An assembly is provided a strong name using the utility called sn.exe.

A strong name consists of the following.

· Name of the Assembly

· Digital Signature

· Version Number

· Culture Information

Global Assembly Cache

The Global Assembly Cache is a system wide storage of shared assemblies. Assemblies can be stored or moved to and from the Global Assembly Cache using a tool called GacUtil.

Managed Code

A managed code is one that provides restricted access to the system’s resources and can be executed only in a managed environment that is provided in Microsoft .NET by the Common Language Runtime.

Un-Managed Code

An Un-Managed code is one that executes outside of the Common Language Runtime environment and can perform unsafe operations.

Managed Data

Managed Data refers to the objects that are created by the Common Language Runtime environment and can be garbage collected implicitly by the Garbage Collector.

Shared Assembly

A Shared Assembly is one that can be referred by more that one application. All shared assemblies should contain a strong name and should be located in the Global Assembly Cache (GAC).

Private Assembly

A Private Assembly is one that is private to one application. In other words, it can be accessed by the containing application only.

Satellite Assembly

When you wish to localize the application, it can be written in culture-neutral code and can distribute the localized modules in separate assemblies called satellite assemblies.

Assembly Manifest

The Assembly Manifest contains the information about an assembly. This includes the version number of the assembly, the list of the files that comprise the assembly, etc. An assembly manifest is contained in the dll file or the exe file itself.

Resource

A resource refers to an addressable unit of data that is available for use by an application. It consists of one or more of the following.

· Texts

· Files

· Documents

· Images

· The .NET tool called resgen.exe is used to create resource files from the resource information that is stored in text or XML files.

Localization

Localization is the practice of designing and developing software that will properly use all of the conventions defined for a specific locale. An assembly that is used to provide localization feature in ASP.NET applications is referred to as a Satellite Assembly.

Native Image Generator

This is a .NET tool that is used to compile a managed assembly to the native code and then store that in the local assembly cache. The name of this tool is Ngen.exe.

Value Type

A value type is one that contains the value rather than the reference and is stored in the stack memory. Examples of value types are integers, floats, doubles, structures, etc.

Reference Type

A reference type contains a reference to the actual object in memory and is stored in the managed heap. Objects of classes are good examples of reference types.

Boxing

Boxing refers to the conversion of a value type to a reference type. Value types are stored in the stack and reference types are stored in the managed heap.

Un-Boxing

This refers to the conversion of a reference type to a value type.

Garbage Collection

Garbage Collection is a technique introduced in Microsoft .NET that manages memory cleanup implicitly. This implicit reclaiming of memory in the .NET managed environment is handled by the Common Language Runtime.

Dispose Method

The Dispose method can be used in an unsealed class to cleanup resources explicitly. It should be noted that both the Dispose and the Finalize methods should make a call to their parents' respective methods after they have disposed or finalized their own members. A class that needs to have this method implemented should implement the IDisposable interface.

Finalize Method

The finalize method is a protected member of the Object class and is implicitly called at the runtime to cleanup unmanaged resources before the object is destroyed.

Code Verification

This is a feature that enforces type safety or type security by checking the code prior to its execution in the run time environment. Therefore, it does not allow malicious code to get executed in the managed environment.

Authentication and Authorization

This is a security measure that is used to specify the user’s identity and authorization in ASP.NET. The process of authorization determines whether an authenticated user has access to a specific resource. Authentication and Authorization details of an ASP.NET application are specified in the web.config file. There can be three types of authentication in ASP.NET.

· Forms Authentication

· Windows Authentication

· Passport Authentication

Web.Config File

The web.config file is the configuration file for an ASP.NET web application. Typically, the following information is stored in a web.config file.

· Database Connection Strings

· Security

· Session States

· Impersonation

· Error handling

Machine.Config File

The machine.config file contains the configuration settings for the entire application and is located in the Config sub-folder of the Microsoft .NET installation directory.

ASP.NET

ASP.NET is a language neutral, interoperable, server-side technology that allows creation, execution and deployment of scalable Web Applications and Services.

Caching

Caching is a feature that stores the data in the memory for serving the incoming requests from the memory itself. Caching in ASP.NET can be of three types.

· Page Output Caching

· Page Fragment Caching

· Data Caching

Singleton Pattern

A singleton pattern states that we can have a singleton class that can be instantiated only once in the application domain and provides a global point of access to it.

Application Domain

An application domain refers to the logical and physical boundary created around every .NET application. An application domain is created by the Common Language Runtime and supports execution of multiple .NET applications in the same process by isolating them in different application domains.

View State

This is a client-side state management technique that continues the state of server controls by maintaining the state of pages across postbacks. The view state is an encoded hashed string and is stored in a hidden field called __VIEWSTATE.

Session State

A session is the period of a connection between a server and a client. The Session State allows storage of objects in a user’s session. A session can be stored in one of the following ways.

· InProc

· State Server

· SQL Server

Application State

This is a state management technique that allows objects to be stored and then globally accessed or shared by multiple modules of the application. In ASP.NET, application state is maintained by the class HttpApplicationState.

Interface Definition Language (IDL)

The Interface definition Language (IDL) defines a protocol between the server and the client so that they can communicate in heterogeneous environments.

Universal Description, Discovery and Integration (UDDI)

Universal Description, Discovery and Integration is a platform independent, XML based, distributed directory that allows the enterprises to list themselves over the internet. The UDDI business registration contains the following features.

· Green Pages

· White Pages

· Yellow Pages

Web Service Description Language (WSDL)

The Web Service Description Language (WSDL) defines XML based contract services for describing the network services as a collection of communication end points. A WSDL document contains the following.

· Messages

· Operation

· Types

· Service

· Port and its type

Simple Object Oriented Protocol (SOAP)

This is an XML-based protocol that is used to exchange structured data and type information in a distributed environment.

Web Services

A web service is SOAP based, platform–independent software component that exposes itself through open communication channels of the web applications running on potentially different platforms.

Remoting

Remoting allows two processes, a Server and a Client, to inter-communicate in the same system, the same network or across networks. In Remoting, a server and client communicate using a Channel.

Service Oriented Architecture

Service Oriented Architecture is an architecture that provides a seamless Enterprise Information Integration between loosely coupled distributed applications or services over the network.

Service

A service is an implementation of a well-defined, self-contained, independent business functionality that accepts one or more requests and returns one or more responses through a well-defined, standard interface.

Smart Client Architecture

The Smart Client Architecture is a deployable, multi-platform architecture that allows local application to connect to a server based application using web services. It provides an adaptive and rich user interactive experience by using local resources. A Smart Client application can work in both connected and disconnected modes.

ADO.NET

ADO.NET is an object oriented data access technology that enables you to access data from a managed environment. It is essentially a collection of some classes used to communicate between an application and a database.

Connection Pool

A Connection Pool is a pool of available or ready-to-use connections. When a new connection is requested it is served from the connection pool if one exists. If not, a new connection is created. Connection Pooling improves the performance of applications to a large extent.

DataProvider

A DataProvider encapsulates the protocols that ADO.NET uses to interact with different types of databases.

DataSet

The DataSet is an in–memory, disconnected, XML compliant representation of the data. Data in a DataSet can be changed, unlike a DataReader which is read only.

DataReader

A DataReader is a connected, forward only, read only stream of data that is retrieved from the database.

DataAdapter

The DataAdapter is a bridge between the DataSet and the underlying database. It provides a set of methods and properties to move data between a database and its in-memory representation, the DataSet.

DataView

A DataView is a class that provides a customized view of the DataSet. It is typically used to sort or filter the rows.

Command

The Command object is used to send the SQL Statements to the database. Commands are used to insert data, retrieve data and execute stored procedures in the database.

Connection

The Connection object establishes a connection to the database using the user name, password and the database name as parameters.

Transactions

A transaction is a block of statements that guarantees that all or none of the statements in the block are executed. In ADO.NET, a transaction can be started by using the BeginTransaction() method on the currently active Connection. To commit the transaction, the method CommitTransaction() is used. In order to abandon the transaction, the method Rollback() is executed.

Serialization

This refers to the storage of an object into a persistent storage medium in a stream of bytes. The opposite is de-serialization and is used to retrieve a serialized object from a storage medium.

Reflection

This is a feature that allows us to inspect the metadata of an assembly at runtime. Reflection can be used to retrieve metadata information, such as the following.

· Classes

· Methods

· Properties

· Events

Biztalk Server

This is a set of Microsoft Server Applications that allow integration, automation and management of different server applications.

Exchange Server

This is a set of Microsoft Server Applications that are responsible for integrating messaging and data storage technologies.

Commerce Server

This is Microsoft’s Business Server that is used for managing and developing business web sites.

Array

An array is a collection of homogenous objects. It is a group of elements of the same type that share a common name. The size of an array is fixed and cannot be changed at runtime.

ArrayList

An ArrayList is a collection of heterogeneous elements- elements of different types. Unlike an array, its size can be changed dynamically.

HashTable

A HashTable is a collection of heterogeneous objects that can be referred using either an index or a key. Elements of an ArrayList can be referred to using an index only.

COM+

COM+ or COM Plus is a distributed, transactional, component-based technology that can be used in a multi-tiered architecture and provides support for Object Pooling.

Delegate

A delegate is a managed function pointer that refers to a method. A multi-cast delegate is one that points to and can eventually fire off different methods. A delegate is used to implement event handling in Microsoft .NET.

Event Handler

An event handler is a method that is executed in response to an event.

Exception

An exception is an event that is generated as a result of a runtime error. An exception is handled using the exception blocks. An exception that cannot be handled is referred to as a fatal exception and causes the flow of execution of the current program to terminate unexpectedly.

Try/Catch Block

A try/catch block is used in exception handling and provides a mechanism to trap runtime errors that can occur on execution of the application. A try block contains the code that can generate a runtime error. The catch block contains statements that are executed once the appropriate exception has occurred. A try block can contain one or more catch blocks or a finally block.

Finally Block

A finally block is one that is executed irrespective of whether an exception occurs or not. Typically, it is used in Exception Handling mechanism to release resources.

Namespace

A namespace refers to a logical grouping of types or identifiers used in a program.

References

An Insight into ADO.NET

Remoting in .NET

Understanding Assemblies

Caching in ASP.NET

Microsoft .NET Architecture

Service Oriented Architecture

Conclusion

Microsoft .NET is a vast technology and it is rather impossible to discuss all the terminologies in a single article. This article has highlighted the most important ones that are commonly faced in an interview. Please post your comments and suggestions. Happy reading!


Read More...

I am now MCP & MCTS

Posted by DreamBig | 4:46 AM

I cleared my MCP & MCTS exam last month. Learned a lot of new things.
The main benefit I got are :

Understanding the different new concepts that usually do not come in practice.
but if you know you will like to use it in regular programming.

While reading the MS self paced book i got clear view of


· Developing applications that use system types and collections.
· Implementing service processes, threading, and application domains in a .NET Framework application.
· Embedding configuration, diagnostic, management, and installation features into a .NET Framework application.
· Implementing serialization and input/output functionality in a .NET Framework application.
· Improving the security of .NET Framework applications by using the .NET Framework security features.
· Implementing interoperability, reflection, and mailing functionality in a .NET Framework application.
· Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application.

Read More...

6 Useful Visual Studio Tweaks You Need To Know

Posted by DreamBig | 3:22 AM

Here is a list of 6 Visual Studio tweaks you can do to make your development experience much better:

Show shortcut keys in screen tips:

Go to Tools->Customize and choose the Toolbars Tab. This screen pops up-

image

check the “Show Shortcut Keys in Screen Tips” Checkbox.



Now, when you put your mouse on a toolbar button, a tooltip with the operation shortcut appears. This is very useful since you can see what the keyboard shortcuts are and you don’t have to remember all of them by heart (read about 10 Visual Studio Shortcuts You Must Know). This is how it looks:

image

Show line numbers:

If you want to see your code with line numbers, go to Tools->Options->TextEditor->C# and check the “Line Numbers” checkbox.



image

Put conditions on breakpoints:

There is a possibility to tell the debugger not to stop on a breakpoint every time. You can add a condition to the breakpoint and the debugger will stop there only when this condition is met. This is very useful when debugging a code that is continuously called (by a timer, …). All you need to do is right click on a specific breakpoint, choose Condition and the following window appears:

image

As you can see there are two radio button options:

  • Is true: You can write any code that would compile inside an If statement and the debugger will stop only when this code returns true.
  • Has changed: The debugger will stop only when the specified variable has changed.

Locate in solution explorer:

When your solution contains many projects with many files, it may be difficult to locate the edited file in the solution explorer. By default, there is no selected item in the solution explorer. To change that default behavior, go to Tools->Options->Projects and Solutions and check the “Track Active Item in Solution explorer” checkbox.

Open XAML instead of designer:

When opening windows forms file- the designer is opened, when opening XAML (WPF) file- the designer and the XML editor are opened with half and half layout. In Visual Studio 2005, you may find the WPF designer very annoying (it may be very slow and it doesn’t function properly) and you want only the XML editor to open when a XAML file is loaded. What do you do? right click on the file in the solution explorer, choose the “Open with” menu item. Choose XML Editor option and click on the Set As Default button:

image

Show output window when build starts:

In order to have the output window opened every time a build starts, go to Tools->Options->Projects and Solutions and check the “Show Output window when build starts” checkbox:

image

That’s it, I hope you found this list interesting and helpful. Do you know more Visual Studio tweaks? That would be great if you could add your comments and extend this list for the usage of us all… What do you say?


Read More...

Upgrade yourself from the world of coding

Posted by DreamBig | 1:51 AM

How does one build a successful technical career?

THE other day, I met a bright young engineer in MindTree and asked him what his ambition was. He was very clear. "I want to be an architect". My next question to him was, what does he read? He looked surprised and then replied that he does not read much outside what appears on a computer screen. My next question to him was whom all does he admire in MindTree among the three best architects? He named the predictable three. Then I told him what the fundamental gap was between him and the best three. It was about the ability to make intelligent conversation about any subject under the sun - a capability borne out of serious reading habits.

The next thing I asked him

to do was to poll these three on what were the six books they had read last. The result was amazing. The three named eighteen books in all - of which at least six were common. Ninety percent of the books had nothing to do with information technology. The exercise proves a key point - to be a great nerd, one has to have inteerests outside writing code. However, many engineers think that the path to a great technical career is about technical skills alone.

Long back, Bell Labs conducted an interesting study - closely watching the common characteristics among a group of technical professionals who rose to the top. The exercise revealed nine key factors outside just technical competence that differentiated brilliant technical folks from the masses. The study was conducted by Robert Kelly of Carnegie Mellon and Janet Caplan of Williams College. As I see the Indian industry today, I think the study done at Bell Labs remains relevant in every detail.

The Bell Labs engineers who did extremely well for themselves - as they progressed in their career, showed the following qualities that differentiated them from their peers: taking initiative, cognitive ability, networking, leadership, teamwork, followership, perspective, organisation savvy and show-and-tell capability. Let us look at each of these and see what lies underneath.

1) Taking initiative

This is about accepting responsibility above and beyond your stated job. It is about volunteering for additional activities and promoting new ideas. None of these will jump out as apparent as a young engineer gets in to her first job. She will tend to think that her career progress is really dependent only on the ability to write code. The concept of initiative begins by looking for technical and other opportunities in the organisation and volunteering for them. The idea of volunteering is little understood - both by organisations and individuals. In the days to come, it will gain increasing prominence in our professional lives.

Initiative is also about two other things - dealing constructively with criticism and planning for the future. The latter is a function of many things - a good starting point is to start mappinng the environment, learning to understand how the future is unfolding and then stepping back to ask, how am I preparing myself?

2) Cognitive abilities

The concept of cognitive development is about understanding the interplay of technology and trends in how they are getting deployed. It is also about recognising the business eco-system in which technology works. It is about situational understanding and consequence thinking. The importance of consequence thinking is very critical. It asks us to look beyond the immediate deliverable of a task and it is about asking who will be impacted by my work, what is the end state? People in our industry just think in terms of modules and seldom ask where is it going, who is my customer and more importantly - who is my customer's customer? Cognition is a key faculty that determines how much we are able to read patterns, make sense of things. Refining cognitive skills helps us to go beyond stated needs of our customers to explore unstated needs.

3) Networking

We tend to think of networking in a social sense. As one grows higher in life, we are often as powerful as is our network. Building a professional network requires us to step out of the comfort zone to look at whom can I learn from. Quite often, and more as one progresses in life, the learning has to come from unusual sources. At MindTree, we expose our people to social workers, architects, graphic designers, teachers, people who lead government organisations, leaders from client organisations. The interesting thing about benefiting from a network is that it works like a savings bank. I need to deposit in to it before I withdraw. We all have heard about how important internal and external knowledge communities are. Again, in MindTree, we encourage people to belong to 26 different knowledge communities that run on a non-project based agenda and are vehicles of learning. These create networking opportunities and open many doors.

4) Leadership

Next to networking is development of leadership skills. Many technical people associate it with "management" and shy away from developing key leadership skills like communication, negotiation, influencing, inter-personal skills, business knowledge, building spokespersonship and so on. Take for instance negotiating as a skill. Imagine that you are an individual professional contributor. Why should you learn to negotiate? Tomorrow, your organisation becomes member of a standard body and you have to represent the organisation as a technical expert. You will find yourself needing to negotiate with powerful lobbies that represent a competing viewpoint or a rival standard. Unless you have honed your capability alongside your hacking skills, you will be at a complete loss. Yet, you do not discover your negotiating capability one fine morning. You need to work on it from an early stage. Negotiating for internal resources is becoming another critical need. You can choose to remain an individual professional contributor but from time to time, you have to create mind share in the organisation where resources are limited and claimants are many. Establishing thought leadership is another key requirement of growth and independent of whether I want to be a technical person or grow to be a manager, I need to develop as a leader who can influence others.

5 ) Teamwork

Our educational system does not teach us teamwork. If you ever tried to solve your test paper "collaboratively" - it was called copying. You and I spent all our school and college life fiercely competing to get the engineering school and seat of our choice. Then comes the workplace and you suddenly realise that it is not individual brilliance but collective competence that determines excellence. Collaboration is the most important part of our work life. Along with collaboration come issues of forming, norming, storming, performing stages of team life. Capability to create interdependencies, capability to encourage dialogue and dissension, knowledge sharing become critical to professional existence. All this is anti-thesis of what we learn in the formative years of life. Add to it, our social upbringing - our resource-starved system tells us to find ways and means to ensure self-preservation ahead of teamwork. In Japan, the country comes first, the company (read team) comes next and I come last. In India, it is the other way round.

6) Followership

The best leaders are also great followers. We can be great leaders if we learn and imbibe the values of followership. Everywhere you go - there are courses that teach leadership.

Nowhere you will find a business school teaching you followership. Yet, when solving complex problems in life, we have to embrace what is called "situational leadership". I have to be comfortable being led by others, I must learn to trust leadership. Many people have issues reporting to a test lead as a developer, or being led by a business analyst or a user interface designer. In different parts of a project life cycle, people of varied competence must lead. I must be comfortable when some one else is under the strobe light. I must have the greatness to be led by people younger than I, people with a different background or a point of view. That is how I learn.

7 ) Perspective

This is the hardest to explain. It begins with appreciating why I am doing what I am doing. Quite often, I find people having a very narrow view of their tasks; many do not see the criticality of their task vis-à-vis a larger goal. So, a tester in a project sees his job as testing code or a module designer's worldview begins and ends with the module. He does not appreciate the importance of writing meaningful documentation because he thinks it is not his job or does not realise that five years from now, another person will have to maintain it.

I always tell people about the story of two people who were laying bricks. A passer by asked the first one as to what he was doing. He replied, "I am laying bricks".
He asked the second one. He replied, "I am building a temple". This story explains what perspective is and how the resultant attitude and approach to work can be vastly different.

8) Organisational savvy

As technical people grow up, they often feel unconnected to the larger organisation. Some people develop a knack of exploring it, finding spots of influence, tracking changes, creating networks and in the process they learn how to make the organization work for them. The organisation is not outside of me. If I know it well, I can get it to work for me when I want. Think of the difference between one project manager and another or one technical lead from another.
One person always gets the resources she needs - the other one struggles. One person knows who is getting freed from which client engagement and ahead of time blocks the person. One person reacts to an organisational change and finds himself allocated to a new project as a fait accompli - another person is able to be there ahead of the opportunity. Larger the organisation, higher is the need to develop organisation savvy. It begins with questioning ones knowledge about the larger business dynamic, knowing who does what, tracking the work of other groups, knowing leaders outside of my own sphere and a host of other things. Importantly, it is also about tracking what the competitors of the organization are doing and keeping abreast of directional changes.

9) Show and tell

This is the bane of most Indian software engineers. We all come from a mindset that says; if you know how to write code, why bother about honing communication skills? Recently, we asked a cross section of international clients on what they think is the number one area of improvement for Indian engineers? They replied in unison, it is communication. Show and tell is about oral and written communication. Some engineers look down upon the need for communication skills and associate it with people who make up for poor programming prowess. It is the greatest misconception. Think of the best chief technology officers of companies like Microsoft, Oracle, IBM Global Services or Sun. Their number one job is evangelizing.

If they cannot forcefully present their technologies, nothing else will matter. So, every engineer must pay attention to improving the ability to present in front of people, develop the ability to ask questions and handle objections. In a sense, if you cannot sell the technology you create, it has no value. So, building salespersonship is a key requirement for technical excellence.

The foregoing points are not relevant if you have already filed your first patent at the age of eighteen.

Everyone else, please take note.

Read More...