I am Vidya Vrat Agarwal, .NET Architect/Developer, Author, Microsoft MVP, C# Corner MVP, Speaker, Trainer and Microsoft .NET Purist. TOGAF Certified Architect, Certified Scrum Master (CSM), Certified MCT, MCPD, MCTS, MCSD.NET, MCAD.NET, MCSD and lifetime member of the Computer Society of India (CSI). Currently working as .NET Consultant in USA. I started working on Microsoft .NET with its 1st beta release. I am passionate about .NET technology and love to contribute to the .NET community. I can be reached at firstname.lastname@example.org or twitter @dotnetauthor
.NET Client Profile is supported by .NET Versions 3.5 and 4.0. It is designed for client applications like Console Applications, Windows Forms, WPF Applications and so on. As we all know there are many types of applications and hence what is required by one application may not be necessarily required by another type of application. For example, System.Web is only used by ASP.NET / Web apps, this is of no use for Windows Forms app. The Client Profile version of .NET Framework is a lightweight subset of the Framework. This enables quicker deployment and small installation packages.
Let’s see how Microsoft made the .NET Client Profile
Microsoft removed some of the features from the .NET Framework to make the footprints smaller and optimized. Microsoft chose to remove ASP.NET, MSBuild, Advanced WCF features and support for Oracle databases to reduce the framework into a smaller and optimized footprint. Web Applications don’t support the Client Profile version of the framework. Web applications are server-side and so full .NET Framework installation is recommended, unlike client applications. Microsoft has removed the Client Profile from the latest version of .NET Framework 4.5 and hence with .NET 4.5 there is no Client Profile as shown in the image below.
Why .NET 4.5 doesn’t have a Client Profile
Now if you think from a deployment’s point of view, you would want your installer to be as optimized and small as possible, so it takes the minimum required on the client machine and this can be done by the Client Profile flavor of.NET 3.5 and 4.0. .NET 4.5 is already optimized and tuned for quicker deployment and takes a small amount of disk space for all type of applications. Hence, no more .NET 4.5 Client Profile.
Today’s IT industry is all about foreign clients, anyways you are dealing with them now and then, but working in their own land with them is a different experience altogether. This article will help you learn about working in USA and many other related things.
Note- Please don’t write any comment or ask me for any Visa Sponsoring, how much money you can make particularly and what you can do to fly to USA etc.
Ways to Enter USA
There are various ways to enter USA, but as a “work” professional following are visa types which allow you to enter USA and either live for some time or live for long term and earn in US$.
Who Sponsors It
How Long Can you Stay
Validity for Years
Transferable to other employer
6-12 months in one visit
Employer or Self as an individual
H1B visa allows you to change your employers once you are in USA, so if you don’t like CompanyA then you can transfer your H1B staus to CompanyB and continue to live and earn in USA.
L1 Visa holders can’t do this as L1 is intracompany transfer visa, means an India office of CompanyA is sending you to its US office for work.
B1 visa holders are usually those who travel for KT (Knowledge Transfers), conferences and client meetings etc.
What skills are required?
Well, my core skill are has always been Microsoft so I can share those with you, but skills can be easily discovered via some job site portals.
Soft Skills – Good communication, listening skills, ability to present your ideas on whiteboard, team player, ability to collaborate with others within and outside team.
Cultural skills – Ability to bear culture shock, ability to communicate with local people and understand their accent and way of living, accept that you are far-far from your home land, ability to live alone for months with no one to talk (at-least until you make some friends).
Show me the money; honey
This is something everyone might be interested in; but salary range varies from job profile, experience and skills you have. Salary is also driven by nature of your company and your Visa type, for example,
B1/B2 visa travelers are paid approx. US$ 40-100 per day + Home Country Salary as is.
L1 visa travelers are paid in the range of $55K – 75K per year + No India Salary at all.
H1B visa holders are paid more than L1 and ranges from $55K – $140K per year or even more + No India Salary at all.
Expanses and Deductions from Salary
USA is an expansive country and you pay for everything and it’s pretty expansive. Let’s see some basic deductions and expanses per month
US$ Per Month
$700 – 1500 (Based on 1 bedroom, 2 bedroom and location)
Water + Garbage
$75 – $110
$50 – $115 (bill is on higher side in winters)
$50 – $120 (higher side is for two lines unlimited calling with in USA)
$29 – $80 (based on speed you want)
$ 250 – $2000 (based on number of family members, their age [especially if you have kids then you have more expanses] & your life style)
$50 – $500 (depending upon your travel pattern and type of vehicle you own)
Deductions from your Salary per month. Amount will be based on your Salary
Federal Income Tax (in general it’s Income Tax, In USA you can’t show investments etc. to have some rebate. Like India has limit for 1.5 Lakh.)
Social Security Tax (tax deducted by government to pay people how have retired)
Health Insurance Premium – Optional (it is usually offered at discounted rate by employers)
Dental Insurance – Optional (it is usually offered at discounted rate by employers)
Vison Insurance – Optional (it is usually offered at discounted rate by employers)
State Tax (some states like New Jersey, New York and many others have extra deductions as State Tax)
401K – Optional (Like PF in India)
In USA medical is very expansive, a Dr’s visit can cost anywhere between $100 – 100,000. So it’s better to analyze your and your family’s health trend and take necessary insurance plans. Health and Dental are a must according to me.
How to apply for work permit (Visa) for USA
Well, easiest way is that your current employer send you on a project. But that is not the case in many scenarios and with some employers. Then you can file your H1B by yourself. H1B is lottery based and every year in April 65000 H1B visa are granted to selected professionals.
If you want to apply yourself then find a company (search on job sites there are many) who can file H1B for you. They will charge you approx. $5K – $6K to submit your H1B application. As H1B is totally lottery based so your application may or many note be picked in lottery. If your application is not picked then some employer may return some of the money and they may or may not return your money. So consider it a GAMBLE.
Do I have Job Assurance?
Well, even if you have got visa and travelled to USA; many times there might not be a job for you and that may last for months. I know some candidates who are on their own and have no job. Besides, to live in USA you need medical insurance etc. which is very expansive and other expanses you have for your living, food etc.
Work Life Balance
US work culture is officially 40Hrs a week, so in your timesheet you fill 8hrs per day. If you have a decent manager then you have a good life as many of them are. People here have a culture to work from home (not always unless you are a remote worker officially) on instance based scenarios, respect of family and personal needs, kids school meetings etc.
But all these freedom comes with great responsibility; and people are not supposed to abuse that. If you do so then you will be restricted and you may have to take holiday to fulfill your family or personal commitment.
What if I am not able to go to USA
Personally, I came to USA at very late stage of my career. So work on your skills, client relations, and many other things and be happy. Everyone has a different path to follow and destiny chooses people time to time. So don’t be disappointed that you are not selected, or couldn’t got to USA etc. Rather think what you can do to go to USA.
Save money, make some sacrifices, don’t buy expansive mobile phone, don’t eat outside, and don’t buy extra clothes, shoes, accessories and save money to apply your H1B next year.
Also, keep looking the pattern your company has, do they have client in USA, do people travel to USA from your company etc.
What happens when I return from USA to my home country
Well, in terms of your job and career; this certainly has a boost. I have experienced that personally. Besides that your way to seeing things and applying skills will change a bit.
Besides, many companies prefer candidates who has travelled and lived outside as this allows them to present themselves better to a potential client and showcase skills their team has in general.
Today’s world is about distributed teams across the globe; a team member sitting in Indian Silicon Valley or a software company of financial capital of India might be reporting to a manager sitting in Microsoft Headquarters in Redmond WA. (a suburb of Seattle WA, USA). This is almost like you travelled how of the world. Hence, long-distance communication has become prominent over the last couple of years.
But I am Technically Strong; so how does it matter to me:
Well, if you are really interested to move up on the career ladder then communication is the key. For instance, if you want to be promoted to be a Tech/Team Lead; then Good Communication skills will help in the longer run.
Good communication demonstrates good leadership skills and so helps you to pave the road to new roles and responsibilities. Would like to send a software architect to a client or listen to him on phone when he can barely communicate; would you like to work with a team/tech lead or onsite coordinator who can barely communicate what client wants? I am sure NOT.
Why English has become so important?
Do I really have to answer it? If you are reading this article of mine, then you are on the same boat like me. I.e. software development field. English is a global language to communicate with anyone whom you don’t know how to connect with. Besides, if you are planning to travel, work abroad, deal with higher management in your company and pave your road in a highly competitive society then good command over English is like “Cherry on the Cake”.
Many deserving candidates are rejected every year for USA visa (H1B, L1B even study abroad) in their interview because they can hardly communicate well and can’t impress the consulate person who is interviewing the candidate?
Consider; even technical interviews; how do you express that you are good candidate and know the technology; that time is gone when you can cram the questions and spit those over to the interviewer; trend of interview has changed. For instance, now people don’t really ask difference between “Abstract class and Interfaces” instead they will ask you a scenario where you chose to implement an Interface instead of an Abstract class or vice versa. Even, based on your project description they drag you into a totally un-imagined situation and ask for your views. Such just in time situation, scenarios are hard to cram or even prepare for; so you end up sharing your thoughts or thought process during interview; do you feel little sweating in your palms or forehead J.
So what’s the technique to have good English communication skills?
Thumb rule- as it implies to those candidates whose mother tongue or native language is NOT English, just like me.
Don’t panic or afraid of English Communication; rather work on it. I can share how I (a small town’s boy of Hindi medium from northern India) made it possible.
Rule#1 – Focus on Learning English grammar to strengthen the fundamentals; if there is a need to improvise on English grammar then work on it for some time and remaining can be learned by listening and speaking with others. Here is a good E-Book to strengthen the fundamentals from basics to extreme expert level.
Rule#2 – Don’t focus on Accent (American, British etc.) immediately; instead focus on grammar for correct usage or words and accurate sentence formation. Accent will come automatically later when you work with people across the globe and have developed good grasp of language.
Rule#3 – Your skills building I.e. Learning must be using English only;For instance; I see some people prefer to learn technology in their native language; I don’t understand how learning .NET or any other topic will help you better in your native language; because most of the terms are English only; C#, CLR, Framework, Language, Compile, Code, Debug and so on. So why to worry so much for some of the plumbing/gluing words in the middle to make sentences.
For example, if I had to learn what is .NET then what is it you won’t understand in this “.NET is a platform and framework which allows you to build applications using many .NET Complaint programming languages and even deploy and run those on many non-Microsoft Platforms Oss”.
I am totally against of reading novels etc. to build English vocabulary; rather start a book of your choice MVC, .NET, C#, ASP .NET, WCF etc. cover to cover; yes, cover to cover read right from About the Author to About the Technical Reviewer to Acknowledgement, Dedication etc. to the chapters of your choice. I guarantee 1st few sections has a lot to teach you about general purpose English communication. So your time is better invested into building your skills with books of your areas instead of reading a 1000 pages fiction novel like Harry Potter especially for this cause.
However; if you wish to read a book other than your technical area then reach out to mea I can guide you for some good books which might be helpful in various ways.
Rule#4 – Listening is very important;when I was in college I heard people saying that listening to English songs will help you to learn English; well to be honest I never found time to double up my efforts to listen to English songs and then learn my study topics in English. BTW, I also don’t recommend listening to English music and trying to read English material at the same time; it could turn out to be pretty messy especially at the beginner level.
So listen to some of your favorite speakers for the topic of your choice; Listening causes great learning especially in terms of usage of words, sentence formation, accent, pitch, pace, sound quality etc. My YouTube channel MyPassionForDotNet has couple of videos from 10 minutes to 2+ hour long sessions.
In free time even listen to the people in your office, market, shops, conference calls, elevators, parking etc.
Rule#5 – No slang language; Say “Yes”, many times I have seen people saying “yeah” “bro”, “You know after each line”, “cool” and many more terms. Well, I suggest always say “Yes”; believe me this has an impact on your way of building skills. When you are good with English communication then occasionally usage of yeah is OK. Basically; this puts you into a habit of strictly respecting the core of the language and also teaching your tongue what to utter; which is very important.
Rule#6 – Hang out with right people, if you have someone who can help you to polish your communication skills then find such people if possible. Well, I was not able to find any because I grew with people like me J but time has changed. I am sure you might have someone around you.
Rule#7 – Think big, Start small; if you are in a discussion then start whatever you can using English and see how far you can go. Anyways; in native land we speak in Mix-mode (some English and some native language) so you focus on speaking the English part as precisely as possible.
Rule#8 – Go slow; I have observed that many people think that Good English Communication is all about speaking fast; actually it’s a myth; I have earned large amount of my professional experience working out-side India with people from various English speaking continents; one thing I found common in all of them is that they speak slow; soft and clear.
Rule#9 – Pronunciation, when speaking no matter what language you are using; way to utter a word is very important; it become very important when you speak in English. Here is a great pronunciation tool to help you learn how a particular word is pronounced.
Some examples; I would like you to try and see what you thought was and actually how these must be pronounced. E.g. Scythe, calcium, pronunciation.
Rule#10 – Come out of native way of pronunciation; our native place (town, city, country) has huge impact on our way to learn pronouncing a word; many times we continue to speak the same way; but the associated cost with this approach; if you have been speaking wrong is that it takes a while to practice speaking it right.
For example, Most of the Indian people even Drs pronounce Calcium as “Cal-Shi-um” but actually there is no “Sh” sound in it. It’s just a very small example of how our native culture have impact on our way of speaking. Many people have tendency of adding sound of other letters when speaking something. Try again how most of the people say “Pronunciation” and compare that with the tool I referred in Rule# 9
Such issues can be fixed with caution, awareness and practice. There is nothing a human mind can’t conquer or achieve.
So let’s summarize the rules:
Rule #1- Learn grammar for better English communication.
Rule #2 – Don’t focus on Accent immediately
Rule #3 – Learn Technology in English only; strictly (books, audio, video etc.)
Rule #4 – Listening results in great learning.
Rule #5 – No slang, use words which reflects respect for the language.
Rule #6- Right company, connect with people who speak good English.
Rule #7 – Think big, Start small.
Rule #8- Speak slow but steady and you will win the race.
Rule #9 – Pronounce right; this is impressive in its own way.
Rule #10 – Go global; to some extent; come out of native tongue; way of pronunciation.
In today’s software development world; we are solving complex business scenarios and developing large business applications. Hence, proper designing is the major factor which contributes to the scalability and performance of any .NET application.
Efficient Resource Management
Resources are very critical for the existence and survival of any application. Examples of resources include objects, files, connections, handles, streams etc. Hence proper handling and cleanup of such resources is critical for the better performance of system.
Here are points to consider:
Should properly handle the object creation and cleanup if needed.
In .NET some objects offer a Close() method to do proper handling of resources. Some of those are db connection, Streams etc.
.NET provides proper structured blocks which can be used in your code to enforce the cleanup if situation arises. For example, finally blocks or using statements can be used to ensure that resources are closed or released properly and in a timely fashion.
Considerations for Crossings the Application Boundary
Applications live and run in their own territory which is defined by the Machine, Process or Application Domains they are hosted in or deployed on. I.e. if two applications communicate with each other across machine, process r app domain there is significant impact on performance of the application.
Cross application domain. Since in .NET a process is optimized to have multiple application domains which can then host application inside those app domains. This is the most efficient boundary to cross because it is within the context of a single process.
Cross process. Crossing a process boundary significantly impacts performance. You should do so only when absolutely necessary. For example, you might determine that an Enterprise Services server application is required for security and fault tolerance reasons.
Cross machine. Crossing a machine boundary is the most expensive boundary to cross, due to network latency and marshaling overhead. Before introducing a remote server into your design, you need to consider the relative tradeoffs including performance, security, and administration.
Single Large Assemblies or Multiple Smaller Assemblies
In .NET assembly is the unit of deployment; an application comes to an existence in the form of an assembly only. Any application you have built after compilation produces an assembly only. All the .dlls your project refers to are .NET Assemblies only.
When working on designing and architecting a solution it is critical to consider that different functionalities, classes and interfaces etc. should be part of one single chunky assembly or should be divided across multiple smaller assemblies.
Here are points to consider
To help reduce your application’s working set (in simple terms set of memory pages required to host the application in the process) , you should prefer single larger assemblies rather than multiple smaller assemblies. If you have several assemblies that are always loaded together, you should combine them and create a single assembly.
Reasons to avoid multiple smaller assemblies:
Since you have multiple assemblies consider the cost required in loading metadata for multiple smaller assemblies.
JIT compile time will be much more as per count of assemblies.
Before you begin coding, it very important to understand what type of output and behavior is expected. These questions can be answered by reviewing your Deployment and Test needs as well. In this article I will talk about guidelines for choosing right type of WCF project templates while creating WCF Service(s).
Any application’s life begins with choosing a Project Template. Right type of Project Template has big impact on how your application will shape up, output type etc.
WCF Services Projects are no different than other applications except being biggest player in SOA world.
Different Templates for WCF
Most commonly used type in industry is either WCF Service Library or WCF Service Application, as shown in the image below.
The difference between two depends on your Test and Deployment needs.
In 1947, a team of engineers working on the Mark II Aiken Relay Calculator at Harvard University had a problem in one of the circuits of the long glass-enclosed computer. A member of the programming team, Grace Hopper, recorded the story in her log book: “It was over in another building, and the windows had no screens on them and we were working on it at night, of course, and all the bugs in the world came in. And one night she (Mark II) conked out and we went to look for the bug and found an actual large moth, about four inches in wing span, in one of the relays beaten to death, and we took it out and put it in the log book and pasted Scotch tape over it.”
According to Hopper, from then on, when anything went wrong with a computer, they said it had bugs in it. The term “bug” had been used by engineers to describe flaws in machines, but Hopper popularized “bug” and “debug” as early computer-programmer language. She was an originator of electronic computer automatic programming and a computer pioneer while working for the Navy, where she was a Rear Admiral. As a lecturer, she often told the story of the computer bug. The Mark II was an electromechanical computer built at Harvard and financed by the US Navy.
SOA is a well-known term today, when we think of SOA; WCF comes in mind. Whereas WCF is a Microsoft technology to build SOA based software solutions. This article will help you understand what exactly “SOA” is as per real architectural way, why architects suggest SOA based application architecture and how SOA can be implemented etc.
What is SOA
SOA (Service Oriented Architecture) is an Architectural Design Pattern / Approach, under which distributed and decoupled applications can interact with each other. SOA is NOT a Technology or a Language.
SOA provides the infrastructure to the idea of how two different business entities communicate and work together. E.g. your bank offering Stock services, a travel site with feature to book a flight, a hotel, a car or even a holiday package etc., weather updates and currency rates etc. All such activities take place due to B2B integration; and SOA is the oxygen for such type of business activities.
Before a service can be consumed, a request message needs to be sent to the service (the provider, or callee) by its client (the consumer, or caller). A request message contains information about the operation the service is being asked to perform, and any additional data that the specific operation needs to have before executing. For example, a service that shows you a currency exchange rate needs to have two currency types and how much money you want to convert. E.g. 100 USD to INR
In today’s world we heavily rely on software systems for example a bank’s system communicates to various other software & database systems.
This usually cause Software applications to face following challenges:
Applications are becoming more and more distributed.
Business needs are changing very often.
Collaboration with other systems is becoming key to success of application. E.g. B2B scenario.
Operation costs need to be reduced.
Scalable, secure and reliable systems are needed by business.
SOA resolves these challenges by defining standards for interaction between decoupled systems and technologies based on policies and contracts.
SOA is intended to provide loosely coupled interaction between applications. Benefits offered by SOA are as follows:
Agility. Enables your business to adapt changes quickly.
Productivity. Can implement complex applications using SOA more easily than with other architectural styles.
Reusability. Able to reuse your services across systems instead of rewriting the same modules again and again in every system or specific to an individual system.
Reduced cost. Software Architects think of Build vs. Buy vs. Reuse, SOA based approach allows to either buy or reuse this feature/functionality; hence in most of the cases cost is saved by reusing the existing services, a lot of commonly used services are available for free.
Communicating with SOA based Service
SOA based services communicate with outside world via EndPoint(s). Hence, EndPoint is required to communicate with a Service.
An EndPoint is the access point to the service.
Accessing internal assets can be done only through the EndPoint.
The EndPoint controls who can access the service, what operations they can perform, etc.
Services may expose multiple EndPoint for various reasons (technology, topology, etc.).
Properties of SOA Architecture
Service-Oriented Architecture is based on four tenets:
Services handle data, not objects
Objects are known to have direct dependency on a particular technology, while XML data is not technology-specific. Hence, services communicate by exchanging data as long as they use the same standards by which the service operates.
Services are autonomous
In order to utilize a Service, client does not need to know the implementation technology and various other internal/implementation details. What all a client requires is the service’s address (I.e. EndPoint) and the information to send the data to.
Services have explicit boundaries
The service is responsible for exposing its information. Everything inside the service’s boundary is only accessible through the service EndPoint. The service’s boundaries are explicit, meaning that the service specifies precisely which messages it can receive and what the messages need to contain; messages that are not compliant with these specifications will be rejected with an error message.
Services expose contract and policy
The contract of the service defines the data which client needs to use when calling a service. Service contract also define the response that the service sends back to the client as result of call made to service.
The service’s policy defines additional information about the data that is being sent. For example, a policy can state that the data needs to be encrypted etc.
Services are autonomous. Services have explicit boundaries. Services can always be moved to some other location.
Services depend on data. There is no dependency on the technology that creates the data.
Service autonomy simplifies testing
All major development frameworks (Microsoft.NET, Java) embraced SOA.
Development tools like Microsoft Visual Studio provide an excellent environment for building SOA applications using WCF, ASP .NET WebAPI or ASP .NET WebServices.
Microsoft released the CTP2 of Visual Studio 2014 today July 8th 2014.
In my previous News item I mentioned that biggest challenge in trying Visual Studio 2014 was Side-by-Side installation. This issue is claimed to be resolved in this new CTP2 release which can be downloaded from here , whereas I would suggest that you try it with your own responsibility and things might break.
What is CTP anyways?
CTPs are previews for the next major release of Visual Studio. These Visual Studio CTPs are intended to promote continuous feedback between early adopters and the Visual Studio development team.
CTPs have Limitations
CTPs are provided for testing and feedback purposes only. CTPs are unsupported, English-only releases. They are not subject to final validation and are not intended for use on production computers, or to create production code.
Some New COOL Features Added in CTP2
Save and Apply Custom IDE Layouts. You can now save and apply custom layouts for tool windows in the IDE. The Save Window Layout and Apply Window Layout commands are under the Window Menu and you can also rename, reorder, and delete layouts from Manage Window Layouts.
Light Bulb Editor Adornment. How many times have you found yourself stuck in a complex syntax issue or compilation error which doesn’t seem to go away? I have always wished that there was a legitimate way to have some options displayed as solution to the problem. Microsoft Introduced, Light Bulbs which is an extensible editor adornment to identify and help you fix issues in your code. To use them, place the caret on a line with an issue or hover over an issue and you’ll see a light bulb that lists actions you can take to resolve the problem and even a preview of proposed solutions.
Editor Touch Support. All the devices these days are supporting touch. Many software receive direct benefit from the support for touch. Visual Studio Code Editor seem to be an exception to be fully benefited with touch, as development required typing. But a Touch support will certainly enables the developers to do some usual things like scrolling, pinch-to-zoom, tap-and-hold for context menus, double-tap for word selection, and line selection by tapping in the margin etc. All such gestures now acknowledged by Visual Studio 2014 code editor. Needless to mention you have to have a Laptop with Touch Support.
ALL CAPS. Remember menu names in Capital letters (All CAPS) was kind of hard to read. SO Microsoft has reverted it to be Title Case (Tools, File, View) as it has been used by various Visual Studio releases. Microsoft Says..Last week with theRC for Visual Studio 2013 Update 3we added an option to sentence case menus; in this VS “14” CTP we changed Menu Bar styling to Title Case for everyone to help us get feedback on the change.
So Are you Installing?
I wanted to verify few things and so I chose to install and try the CTP2 bits of Visual Studio 2014. My current laptop settings are as follows:
Vidya Vrat Agarwal, Software Architect, Author, C# Corner MVP, Speaker, Trainer and Microsoft .NET Purist. Certified Scrum Master (CSM), MCT, MCPD, MCTS, MCSD.NET, MCAD.NET, MCSD and lifetime member of the Computer Society of India (CSI). Currently working as Sr. Technical Architect in a US based software company. I started working on Microsoft .NET with its 1st beta release.I am passionate about .NET technology and love to contribute to the .NET community. I can be reached at email@example.com or twitter @dotnetauthor