Tuesday, 27 August 2013

DOTNET MVC 4 Basic Interview Questions and Answers for Developers

DOTNET MVC 4 Basic Interview Questions and Answers for Freshers and Experienced Developers

Below is the list of dotnet MVC 4 basic interview questions and answers. These MVC interview questions and answers are meant for freshers as well as for experienced developers. So, If you going for an interview on MVC, I suggest you to must give a look at following MVC interview questions. These MVC interview questions are based on basic introduction to MVC, why we need MVC, components of MVC, MVC namespaces, lifecycle of MVC application and a lot more. So lets have a look on following basic dotnet MVC interview questions and answers.

1. What is MVC?

MVC is a framework methodology that divides an application’s implementation into three component roles: models, views, and controllers.

Main components of an MVC application?

1. M - Model
2. V - View
3. C - Controller

“Models” in a MVC based application are the components of the application that are responsible for maintaining state. Often this state is persisted inside a database (for example: we might have a Product class that is used to represent order data from the Products table inside SQL).

“Views” in a MVC based application are the components responsible for displaying the application’s user interface. Typically this UI is created off of the model data (for example: we might create an Product “Edit” view that surfaces textboxes, dropdowns and checkboxes based on the current state of a Product object).

“Controllers” in a MVC based application are the components responsible for handling end user interaction, manipulating the model, and ultimately choosing a view to render to display UI. In a MVC application the view is only about displaying information – it is the controller that handles and responds to user input and interaction.

2- What does Model, View and Controller represent in an MVC application?

Model: Model represents the application data domain. In short the applications business logic is contained with in the model.

View: Views represent the user interface, with which the end users interact. In short the all the user interface logic is contained with in the UI.

Controller: Controller is the component that responds to user actions. Based on the user actions, the respective controller, work with the model, and selects a view to render that displays the user interface. The user input logic is contained with in the controller.

3- In which assembly is the MVC framework defined?

System.Web.Mvc

4- What is the greatest advantage of using asp.net mvc over asp.net webforms?

It is difficult to unit test UI with webforms, where views in mvc can be very easily unit tested.

5- Which approach provides better support for test driven development - ASP.NET MVC or ASP.NET Webforms?

ASP.NET MVC

6- What is Razor View Engine?

Razor view engine is a new view engine created with ASP.Net MVC model using specially designed Razor parser to render the HTML out of dynamic server side code. It allows us to write Compact, Expressive, Clean and Fluid code with new syntax to include server side code in to HTML.

7- What are the advantages of ASP.NET MVC?

Advantages of ASP.NET MVC:

1. Extensive support for TDD. With asp.net MVC, views can also be very easily unit tested.
2. Complex applications can be easily managed
3. Separation of concerns. Different aspects of the application can be divided into Model, View and Controller.
4. ASP.NET MVC views are light weight, as they don't use viewstate.

8- Is it possible to unit test an MVC application without running the controllers in an ASP.NET process?

Yes, all the features in an asp.net MVC application are interface based and hence mocking is much easier. So, we don't have to run the controllers in an ASP.NET process for unit testing.

9- What is namespace of ASP.NET MVC?

ASP.NET MVC namespaces and classes are located in the System.Web.Mvc assembly.

System.Web.Mvc namespace 

Contains classes and interfaces that support the MVC pattern for ASP.NET Web applications. This namespace includes classes that represent controllers, controller factories, action results, views, partial views, and model binders.

System.Web.Mvc.Ajax namespace 

Contains classes that support Ajax scripts in an ASP.NET MVC application. The namespace includes support for Ajax scripts and Ajax option settings.

System.Web.Mvc.Async namespace 

Contains classes and interfaces that support asynchronous actions in an ASP.NET MVC application.

System.Web.Mvc.Html namespace 

Contains classes that help render HTML controls in an MVC application. The namespace includes classes that support forms, input controls, links, partial views, and validation.

10- Is it possible to share a view across multiple controllers?

Yes, put the view into the shared folder. This will automatically make the view available across multiple controllers.

11- What is the role of a controller in an MVC application?

The controller responds to user interactions, with the application, by selecting the action method to execute and selecting the view to render.

12- Where are the routing rules defined in an asp.net MVC application?

In Application_Start event in Global.asax

13- Name a few different return types of a controller action method?

The following are just a few return types of a controller action method. In general an action method can return an instance of a any class that derives from ActionResult class.

1. ViewResult
2. JavaScriptResult
3. RedirectResult
4. ContentResult
5. JsonResult

14- What is the ‘page lifecycle’ of an ASP.NET MVC?

Following process are performed by ASP.Net MVC page:

1) App initialization
2) Routing
3) Instantiate and execute controller
4) Locate and invoke controller action
5) Instantiate and render view

15- What is the significance of NonActionAttribute?

In general, all public methods of a controller class are treated as action methods. If you want prevent this default behavior, just decorate the public method with NonActionAttribute.

16- What is the significance of ASP.NET routing?

ASP.NET MVC uses ASP.NET routing, to map incoming browser requests to controller action methods. ASP.NET Routing makes use of route table. Route table is created when your web application first starts. The route table is present in the Global.asax file.

17- How route table is created in ASP.NET MVC?

When an MVC application first starts, the Application_Start() method is called. This method, in turn, calls the RegisterRoutes() method. The RegisterRoutes() method creates the route table.

18- What are the 3 segments of the default route, that is present in an ASP.NET MVC application?

1st Segment - Controller Name
2nd Segment - Action Method Name
3rd Segment - Parameter that is passed to the action method

Example: http://google.com/search/label/MVC

Controller Name = search
Action Method Name = label
Parameter Id = MVC

19- ASP.NET MVC application, makes use of settings at 2 places for routing to work correctly. What are these 2 places?

1. Web.Config File : ASP.NET routing has to be enabled here.
2. Global.asax File : The Route table is created in the application Start event handler, of the Global.asax file.

20- What is the adavantage of using ASP.NET routing?

In an ASP.NET web application that does not make use of routing, an incoming browser request should map to a physical file. If the file does not exist, we get page not found error.

An ASP.NET web application that does make use of routing, makes use of URLs that do not have to map to specific files in a Web site. Because the URL does not have to map to a file, you can use URLs that are descriptive of the user's action and therefore are more easily understood by users.

21- What are the 3 things that are needed to specify a route?

1. URL Pattern - You can include placeholders in a URL pattern so that variable data can be passed to the request handler without requiring a query string.
2. Handler - The handler can be a physical file such as an .aspx file or a controller class.
3. Name for the Route - Name is optional.

22- Is the following route definition a valid route definition?

{controller}{action}/{id}
No, the above definition is not a valid route definition, because there is no literal value or delimiter between the placeholders. Therefore, routing cannot determine where to separate the value for the controller placeholder from the value for the action placeholder.

23- What is the use of the following default route?

{resource}.axd/{*pathInfo}
This route definition, prevent requests for the Web resource files such as WebResource.axd or ScriptResource.axd from being passed to a controller.

24- What is the difference between adding routes, to a webforms application and to an mvc application?

To add routes to a webforms application, we use MapPageRoute() method of the RouteCollection class, where as to add routes to an MVC application we use MapRoute() method.

25- How do you handle variable number of segments in a route definition?

Use a route with a catch-all parameter. An example is shown below. * is referred to as catch-all parameter.
controller/{action}/{*parametervalues}

26- What are the 2 ways of adding constraints to a route?

1. Use regular expressions
2. Use an object that implements IRouteConstraint interface

27- Give 2 examples for scenarios when routing is not applied?

1. A Physical File is Found that Matches the URL Pattern - This default behaviour can be overriden by setting the RouteExistingFiles property of the RouteCollection object to true.
2. Routing Is Explicitly Disabled for a URL Pattern - Use the RouteCollection.Ignore() method to prevent routing from handling certain requests.

28- What is the use of action filters in an MVC application?

Action Filters allow us to add pre-action and post-action behavior to controller action methods.

29- If I have multiple filters implemented, what is the order in which these filters get executed?

1. Authorization filters
2. Action filters
3. Response filters
4. Exception filters

30- What are the different types of filters, in an asp.net mvc application?

1. Authorization filters
2. Action filters
3. Result filters
4. Exception filters

31- Give an example for Authorization filters in an asp.net mvc application?

1. RequireHttpsAttribute
2. AuthorizeAttribute

32- Which filter executes first in an asp.net mvc application?

Authorization filter

33- What are the levels at which filters can be applied in an asp.net mvc application?

1. Action Method
2. Controller
3. Application

34- Is it possible to create a custom filter?

Yes

35- What filters are executed in the end?

Exception Filters

36- Is it possible to cancel filter execution?

Yes

37- What type of filter does OutputCacheAttribute class represents?

Result Filter

38- What are the 2 popular asp.net mvc view engines?

1. Razor
2. .aspx

39- What is difference between Viewbag and Viewdata in ASP.NET MVC?

The basic difference between ViewData and ViewBag is that in ViewData instead creating dynamic properties we use properties of Model to transport the Model data in View and in ViewBag we can create dynamic properties without using Model data.

40- What symbol would you use to denote, the start of a code block in razor views?

@

41- What symbol would you use to denote, the start of a code block in aspx views?

<%= %>

In razor syntax, what is the escape sequence character for @ symbol?
The escape sequence character for @ symbol, is another @ symbol

42- When using razor views, do you have to take any special steps to protect your asp.net mvc application from cross site scripting (XSS) attacks?

No, by default content emitted using a @ block is automatically HTML encoded to protect from cross site scripting (XSS) attacks.

43- When using aspx view engine, to have a consistent look and feel, across all pages of the application, we can make use of asp.net master pages. What is asp.net master pages equivalent, when using razor views?

To have a consistent look and feel when using razor views, we can make use of layout pages. Layout pages, reside in the shared folder, and are named as _Layout.cshtml

44- What are sections?

Layout pages, can define sections, which can then be overriden by specific views making use of the layout. Defining and overriding sections is optional.

45- What are the file extensions for razor views?

1. .cshtml - If the programming lanugaue is C#
2. .vbhtml - If the programming lanugaue is VB

46- How do you specify comments using razor syntax?

Razor syntax makes use of @* to indicate the begining of a comment and *@ to indicate the end. 

47- What is Routing?

A route is a URL pattern that is mapped to a handler. The handler can be a physical file, such as an .aspx file in a Web Forms application. Routing module is responsible for mapping incoming browser requests to particular MVC controller actions.

48- Is it possible to combine ASP.NET webforms and ASP.MVC and develop a single web application?

Yes, it is possible to combine ASP.NET webforms and ASP.MVC and develop a single web application.

49. How do you avoid XSS Vulnerabilities in ASP.NET MVC?

Use the syntax in ASP.NET MVC instead of using .net framework 4.0.

Can Developers do Programming or Coding without Googling?

Can Developers do Programming or Coding without Googling?

Can you imagine development without using google search? At least I can't!! I keep on opening google.com while development because I need it every time. It is very difficult to do programming or coding without googling as per me. Also, its not only my story, all the programmers / coders sitting around me, cannot do anything without google. Once internet was shut in my company for an hour accidentally, we all developers were looking at each other helplessly and waiting for internet to resume.

Once there were days when I was doing my Computer Science Engineering. I learned C/C++/Java during my B.E.(Bachelors in Engineering). All I learned from books and never used internet. When our tutor used to give us problems, we try to solve them our own without seeking any help from internet. Those were our logic building days.  

But now the picture has changed. When you enter in the profession, start doing job, you see the things with different angle. Below are some points which I have figured out why we need to google every time while programming?

1. Frequent Changes in Programming Languages

Programming languages have become so advanced and new things are coming everyday, every week. As a software developer, you must keep yourself updated with these changes. In race of learning new things, we keep on forgetting basic things, basic language syntax etc. and we need to google every time.

2. Tight Deadlines

When you are working on a project, you have some tight deadline in your mind given by the management. So, when you stuck at any point, you don't want to invest any time in thinking the solution and just google your problem to save your time. Every problem is solved by google search that we all know. So by just typing the problem on google search, you get the ready-made solution in front of your eyes and just you have to copy paste the solution. Most of the answers to my problems are given by stackoverflow and codeproject.

3. Laziness

We know that ready-made solution is there on internet which can be easily accessed by just typing on google search, then why to waste our energy on pondering over the problem. This lazy thinking makes us to depend totally on google. Due to this laziness, we never try to practice the code and remember the syntax and depend totally on google.

My Suggestion:

I am trying to give you the suggestion not to depend on google so much, but I think I need to follow this suggestion much more than you :). If we practice some code daily, try to remember the syntax which we daily use, then I think we can decrease our dependency on google search. I know its hard but I think only this is the way...

Never Switch to Small IT Company from Large One!!

Never Switch to Small IT Company from Large One!!

This article is dedicated to all my software engineer friends. I will try to figure out pros and cons of large and small IT companies. I will try to compare work environment, job satisfaction and frustration, salary packages, job security etc. in small and large companies.

I am a six years experienced software engineer from India and will talk about Indian IT companies. I have worked with one of the largest IT companies (service based) of the India and also with the small companies. As per my experience, one should stay in the large company as compared to the smaller one although the packages offered in large companies are comparatively less. I will share my own experience. I will term large company (my previous company) as L and smaller one as S without naming them public.

I was never satisfied with my job while working with L as my salary was very low although I had got onsite opportunity but only for one month. When I got offer from the small company S, it offered me the great package that I could not deny and moved to it. Although I was getting much more money in my monthly salary as compared to my previous company L, my life became hell. 

Let me tell you what smaller companies do to get the projects and how bad the management is there?

1. Misguide the client about Team Size 

If there are 8 members in the team for a project in company L, company S will put only 4-5 members in the team for the same project and bill the client for 8 team members. In this way, the guys in the team have to do double work in the project as client will assume there are 8 members in the team and he is paying for 8 members and will want his work done as per the efforts of 8 guys but behind the scene, there are only 4-5 guys.

2. Misguide the client about Team Efficiency and Skill Sets

Smaller companies share exaggerated CVs of the team members to the client in order to get the projects. When client gets attracted by those CVs and approves the project, those poor guys have to learn the technology in which they have never done any kind of work (but was written in their CVs which was shared with the client) and also meet the deadline otherwise they are dead.

3. Work on weekends and late nights

As per above two points, its obvious that if one software engineer is doing work of two guys and also new in that technology, he is going to bear sleepless nights and is forced to work on Saturdays and Sundays to meet the deadline.

4. No appreciation, no awards

Once the project is delivered, you will be shown the errors and bugs reported in your delivery and will never get appreciated for what you have done right.

5. No job satisfaction, no job security in a small company

Management can kick your ass at any time when they feel that you are worthless now for them. And if there is a project failure due to any reason, developer is always the victim. They need you to devote your 24 hours to the project and forget all about your family and health.

Lets come to me again. What happened in my case? My S company took a project from a client with impossible deadlines. Deadlines were too short to deliver the project on time. The project was in WPF and a team was formed of four .NET guys who had never worked on WPF. The guys were from ASP.NET. Now we did not know WPF and we had to meet the deadlines too. Our manager dictated us that you all should learn WPF as soon as possible and deliver the project on time otherwise there may happen anything to your job and then don't blame me for the consequences. Even the client knew that deadlines were not practical, but company charged him double and made we developers to work like donkeys. We were under a lot of mental pressure. We used to work late nights, Saturdays and Sundays. 

Even we had spent 9-10 nights in the office. We work late night and when we come late in morning, HR used to mark us half day. That 1.5 months, we had lived like hell. I got totally depressed. 

But my days changed and I got a call from a very good company. I gave interview there and got selected and finally KICKED OFF that S company. HR tried to stop me from leaving and tempted me with huge hike but I just refused to talk to him anything. Now finally, I am at good place and thank my god every day and night for taking me out of that hell. 

At the end of story, I will only suggest you never to switch to the small company in any case. Never get tempted by huge packages they offer. Always maintain healthy relationship between your job and life.

Well, these were my personal remarks, your opinions may be different from me and I am not generalizing my thinking. If you have some words to add, please share them in comments below.

BTW, Thanks for reading.....

Monday, 12 August 2013

Cloud Computing vs Grid Computing: Similarities and Differences between Cloud Computing and Grid Computing

Cloud Computing vs Grid Computing: Similarities and Differences between Cloud Computing and Grid Computing

In this article on cloud computing "Cloud Computing vs Grid Computing", we will discuss cloud computing service types and the similarities and differences between cloud and grid computing. We look at why cloud computing may be advantageous over grid computing, what issues to consider in both, and some security concerns. We use Amazon Web Services as an example.

To get cloud computing to work, you need three things: thin clients (or clients with a thick-thin switch), grid computing, and utility computing. Grid computing links disparate computers to form one large infrastructure, harnessing unused resources. Utility computing is paying for what you use on shared servers like you pay for a public utility (such as electricity, gas, and so on).

With grid computing, you can provision computing resources as a utility that can be turned on or off. Cloud computing goes one step further with on-demand resource provisioning. This eliminates over-provisioning when used with utility pricing. It also removes the need to over-provision in order to meet the demands of millions of users.

Infrastructure as a Service and more

A consumer can get service from a full computer infrastructure through the Internet. This type of service is called Infrastructure as a Service (IaaS). Internet-based services such as storage and databases are part of the IaaS. Other types of services on the Internet are Platform as a Service (PaaS) and Software as a Service (SaaS). PaaS offers full or partial application development that users can access, while SaaS provides a complete turnkey application, such as Enterprise Resource Management through the Internet.

To get an idea of how Infrastructure as a Service (IaaS) is used in real life, consider The New York Times that processed terabytes of archival data using hundreds of Amazon's EC2 instances within 36 hours. If The New York Times had not used EC2, it would have taken it days or months to process the data.

The IaaS divides into two types of usage: public and private. Amazon EC2 uses public server pools in the infrastructure cloud. A more private cloud service uses groups of public or private server pools from an internal corporate data center. You can use both types to develop software within the environment of the corporate data center, and, with EC2, temporarily extend resources at low cost—say for testing purposes. The mix may provide a faster way of developing applications and services with shorter development and testing cycles.

Amazon Web services

With EC2, customers create their own Amazon Machine Images (AMIs) containing an operating system, applications, and data, and they control how many instances of each AMI run at any given time. Customers pay for the instance-hours (and bandwidth) they use, adding computing resources at peak times and removing them when they are no longer needed. The EC2, Simple Storage Service (S3), and other Amazon offerings scale up to deliver services over the Internet in massive capacities to millions of users.

Amazon provides five different types of servers ranging from simple-core x86 servers to eight-core x86_64 servers. You do not have to know which servers are in use to deliver service instances. You can place the instances in different geographical locations or availability zones. Amazon allows elastic IP addresses that can be dynamically allocated to instances.

Cloud computing

With cloud computing, companies can scale up to massive capacities in an instant without having to invest in new infrastructure, train new personnel, or license new software. Cloud computing is of particular benefit to small and medium-sized businesses who wish to completely outsource their data-center infrastructure, or large companies who wish to get peak load capacity without incurring the higher cost of building larger data centers internally. In both instances, service consumers use what they need on the Internet and pay only for what they use.

The service consumer no longer has to be at a PC, use an application from the PC, or purchase a specific version that's configured for smartphones, PDAs, and other devices. The consumer does not own the infrastructure, software, or platform in the cloud. He has lower upfront costs, capital expenses, and operating expenses. He does not care about how servers and networks are maintained in the cloud. The consumer can access multiple servers anywhere on the globe without knowing which ones and where they are located.

Grid computing

Cloud computing evolves from grid computing and provides on-demand resource provisioning. Grid computing may or may not be in the cloud depending on what type of users are using it. If the users are systems administrators and integrators, they care how things are maintained in the cloud. They upgrade, install, and virtualize servers and applications. If the users are consumers, they do not care how things are run in the system.

Grid computing requires the use of software that can divide and farm out pieces of a program as one large system image to several thousand computers. One concern about grid is that if one piece of the software on a node fails, other pieces of the software on other nodes may fail. This is alleviated if that component has a failover component on another node, but problems can still arise if components rely on other pieces of software to accomplish one or more grid computing tasks. Large system images and associated hardware to operate and maintain them can contribute to large capital and operating expenses.

Similarities and Differences between Cloud Computing and Grid Computing

Cloud computing and grid computing are scalable. Scalability is accomplished through load balancing of application instances running separately on a variety of operating systems and connected through Web services. CPU and network bandwidth is allocated and de-allocated on demand. The system's storage capacity goes up and down depending on the number of users, instances, and the amount of data transferred at a given time.

Both computing types involve multitenancy and multitask, meaning that many customers can perform different tasks, accessing a single or multiple application instances. Sharing resources among a large pool of users assists in reducing infrastructure costs and peak load capacity. Cloud and grid computing provide service-level agreements (SLAs) for guaranteed uptime availability of, say, 99 percent. If the service slides below the level of the guaranteed uptime service, the consumer will get service credit for receiving data late.

The Amazon S3 provides a Web services interface for the storage and retrieval of data in the cloud. Setting a maximum limits the number of objects you can store in S3. You can store an object as small as 1 byte and as large as 5 GB or even several terabytes. S3 uses the concept of buckets as containers for each storage location of your objects. The data is stored securely using the same data storage infrastructure that Amazon uses for its e-commerce Web sites.

While the storage computing in the grid is well suited for data-intensive storage, it is not economically suited for storing objects as small as 1 byte. In a data grid, the amounts of distributed data must be large for maximum benefit.

A computational grid focuses on computationally intensive operations. Amazon Web Services in cloud computing offers two types of instances: standard and high-CPU.

Issues to consider

Four issues stand out with cloud and grid computing: threshold policy, interoperability issues, hidden costs, and unexpected behavior.

Threshold policy

Let's suppose I had a program that did credit card validation in the cloud, and we hit the crunch for the December buying season. Higher demand would be detected and more instances would be created to fill that demand. As we moved out of the buying crunch, the need would be diminished and the instances of that resource would be de-allocated and put to other use.

To test if the program works, develop, or improve and implement, a threshold policy in a pilot study before moving the program to the production environment. Check how the policy detects sudden increases in the demand and results in the creation of additional instances to fill in the demand. Also check to determine how unused resources are to be de-allocated and turned over to other work.

Interoperability issues

If a company outsources or creates applications with one cloud computing vendor, the company may find it is difficult to change to another computing vendor that has proprietary APIs and different formats for importing and exporting data. This creates problems of achieving interoperability of applications between these two cloud computing vendors. You may need to reformat data or change the logic in applications. Although industry cloud-computing standards do not exist for APIs or data import and export, IBM and Amazon Web Services have worked together to make interoperability happen.

Hidden costs

Cloud computing does not tell you what hidden costs are. For instance, companies could incur higher network charges from their service providers for storage and database applications containing terabytes of data in the cloud. This outweighs costs they could save on new infrastructure, training new personnel, or licensing new software. In another instance of incurring network costs, companies who are far from the location of cloud providers could experience latency, particularly when there is heavy traffic.

Unexpected behavior

Let's suppose your credit card validation application works well at your company's internal data center. It is important to test the application in the cloud with a pilot study to check for unexpected behavior. Examples of tests include how the application validates credit cards, and how, in the scenario of the December buying crunch, it allocates resources and releases unused resources, turning them over to other work. If the tests show unexpected results of credit card validation or releasing unused resources, you will need to fix the problem before running the application in the cloud.

Security issues

In February 2008, Amazon's S3 and EC2 suffered a three-hour outage. Even though an SLA provides data recovery and service credits for this type of outage, consumers missed sales opportunities and executives were cut off from critical business information they needed during the outage.

Instead of waiting for an outage to occur, consumers should do security testing on their own—checking how well a vendor can recover data. The test is very simple. No tools are needed. All you have to do is to ask for old data you have stored and check how long it takes for the vendor to recover. If it takes too long to recover, ask the vendor why and how much service credit you would get in different scenarios. Verify if the checksums match the original data.

An area of security testing you should do is to test a trusted algorithm to encrypt the data on your local computer, and then try to access data on a remote server in the cloud using the decryption keys. If you can't read the data once you have accessed it, the decryption keys are corrupted, or the vendor is using its own encryption algorithm. You may need to address the algorithm with the vendor.

Another issue is the potential for problems with data in the cloud. To protect the data, you may want to manage your own private keys. Check with the vendor on the private key management. Amazon will give you the certificate if you sign up for it.

Software development in cloud

To develop software using high-end databases, the most likely choice is to use cloud server pools at the internal data corporate center and extend resources temporarily with Amazon Web services for testing purposes. This allows project managers to better control costs, manage security, and allocate resources to clouds a project is assigned to. The project managers could also assign individual hardware resources to different cloud types: Web development cloud, testing cloud, and production cloud. The cost associated with each cloud type may differ from one another. The cost per hour or usage with the development cloud is most likely lower than the production cloud, as additional features, such as SLA and security, are allocated to the production cloud.

The managers can limit projects to certain clouds. For instance, services from portions of the production cloud can be used for the production configuration. Services from the development cloud can be used for development purpose only. To optimize assets at varying stages of the project of software development, the managers can get cost-accounting data by tracking usage by project and user. If the costs are found to be high, managers can use Amazon EC2 to temporarily extend resources at a very low cost provided that security and data recovery issues have been resolved.

Environmentally friendly cloud computing

One incentive for cloud computing is that it may be more environmentally friendly. First, reducing the number of hardware components needed to run applications on the company's internal data center and replacing them with cloud computing systems reduces energy for running and cooling hardware. By consolidating these systems in remote centers, they can be handled more efficiently as a group.

Second, techniques for cloud computing promote telecommuting techniques, such as remote printing and file transfers, potentially reducing the need for office space, buying new furniture, disposing of old furniture, having your office cleaned with chemicals and trash disposed, and so on. They also reduce the need for driving to work and the resulting carbon dioxide emissions.

Conclusion

This article helps you plan ahead for working with cloud by knowing how cloud computing compares to grid computing, how you can resolve issues in cloud and grid computing, and what security issues exist with data recovery and managing private keys in a pay-on-demand environment. Potential consumers' demands for increased capacities over the Internet present a challenge for the developers and other members of a project team. Being aware of and resolving the issues of Web application design and potential security issues can make your team's experiences trouble-free. 

Future of Cloud Computing: Why to Switch to Cloud Computing Today?

Future of Cloud Computing: Why to Switch to Cloud Computing Today?

Future of cloud computing is very bright. In future, Cloud computing is going to become the major player of the information critical and sensitive business. In future, cloud computing will become must, so try migrating to cloud computing today. 

The future of cloud computing is bright for the companies that implement the technology now. While these are some trends that are expected in the future, the future is not limited to these trends. Remain abreast of the latest developments to help your company maintain a competitive advantage. This will make your company more profitable and productive when it can complete tasks faster and more efficiently than the competition.

Here are reasons why cloud computing will become the backbone of the business in future in the coming years:

Technology to Ensure Uptime

Companies need uptime guarantees. With low-power processors, data centers will become more affordable, allowing companies to acquire seven to ten data centers around the world in different time zones and thereby allowing them to guarantee 99.9 percent uptime. This will keep companies from losing money and falling prey to their competitors. In the future, this concern will be near obsolete.

Disaster Recovery and Remote Access

Cloud computing enables and enhances remote access and faster disaster recovery. When companies have an emergency information security strategy with security penetration tests, companies can maintain their competitive edge within their respective industries.

With cloud computing, some companies that didn’t recognize a breach may recover within minutes instead of hours. Losing proprietary data can cripple a company and even cause doors to close. Every company should migrate to cloud computing for this reason.

Cloud Computing is becoming more Robust

Cloud computing is becoming more about “fit and function” than about the “hype” surrounding the new technology. Most companies can benefit from cloud computing, but some companies have suffered failed projects during the migration phase because the technology is still in the developmental stages. Typically, migrations fail because of inaccurate or missing data.

Data accuracy must be ensured to avoid catastrophe or business interruption. Service providers must ensure that the migration of all data occurs without mishap. Technicians can still make configuration mistakes that compromise the safety of company data. In the future, migrations will be seamless, and technology will be more robust.

The Ability to Validate Identities through Trusts

In the future, cloud security systems will be able to validate identities through a “centralized trust.” Identity-based security is thought to be more secure than current forms of security. More people will begin to trust cloud computing when this happens.

Centralized Data is the Future in Cloud Computing

Centralized data is expected in abundance in the future of cloud computing. This allows companies to create huge databases. Patient care can be improved with centralized data in huge databases. Better stock market decisions are also possible. Centralized data is a way of the future.

More Capability

Mobile devices that rely on the cloud will become more powerful and thinner because all applications will be web-based. All mobile devices will store data that resides in the cloud, and designers can add more capability and lower costs of the phone. One example of this concept is Apple’s iCloud.

Hybrid Cloud Computing Increases Efficiency

Hybrid cloud computing is expected to help businesses become more efficient by optimizing business process performance. Businesses are excited about hybrid cloud computing because it enhances internal infrastructure and applications. The ability to scale the strengths of local networks and cloud computing is coveted by designers.

Proactive Application Monitoring

Proactive application monitoring technology is currently available, but predictive technology and software will soon make this more robust and accurate. Companies will be able to foresee disaster and avert it, mitigating damage to their systems. This will prevent downtime and make the company safer.

Mobile Optimization for Cloud Services

Mobile commerce is on the rise. Cloud computing applications require fewer resources and are recommended for mobile devices. Accessibility is increased because fewer resources are required. This is why cloud computing is recommended for business and personal applications.

Commodity Hardware

By 2020, low-cost hardware will make it easier to configure advanced data centers capable of complex algorithms at fast speeds. This will increase uptimes and improve user satisfaction.

Low-Power Processors

Low power processors are expected to lower the cost of operation in large data centers. Users can expect to reduce electricity bills significantly. Low-power ARM chips will make this possible in the upcoming year. With 64-bit capability, uptake should be accelerated. These low-power ARM chips will be used in conjunction with RISC chips and enterprise software to yield an economical and environmentally-friendly solution.

Faster Interconnects

Cloud computing is still in its infancy stage. By 2020, cloud computing is expected to be a permanent solution in many organizations. Data centers will be automated and will support scalable software architecture.

Cloud Computing Will Help Businesses Optimize Their Investments

Cloud computing can help companies optimize investments and scale operations. In the future, new low-power processors and other chip technology will help businesses operate to their full IT capacity. With more innovation, greater revenue potential is possible. Companies can re-invest in their products and services with higher profit margins. Scaling investments will also lead to greater operational agility.

Efficient business models are also possible with cloud computing. With greater efficiency, companies can bring innovative and superior products to market faster than competitors.

Better Overall Security and Assumed Reliability

Currently, designers are working hard to ensure people that cloud computing is the way of the future. It will be the preferred method of hosting applications, platforms, and services. By 2020, it will no longer be a topic of discussion, and experts will be more concerned with how companies can use big data to solve complex problems with cloud computing than with convincing people of its usefulness.

Data center physical security is just as important as data encryption. While minimum encryption regulations may be increased from the current 256-bit SSL, physical access to data center facilities may require biometric scans in addition to electronic pass. These facilities will also be protected by advanced alarm systems.

In addition to physical security, firewall and VPN technology will be improved to protect data transfer. New firewall policies, although not fully defined, will limit VPN traffic to specific IP addresses and ports. With upgraded firmware, breaches will be less likely to occur.

Cloud Computing Present Challenges

Cloud computing is seen by many as the next wave of information technology for individuals, companies and governments. The abundant supply of information technology capabilities at a low cost offers many enticing opportunities. In addition to reducing operational costs, cloud technologies have become the basis for radical business innovation and new business models, and for significant improvements in the effectiveness of anyone using information technology – which, these days, increasingly means most of the world. Like any new technology advancement, cloud computing also creates disruptive possibilities and potential risks.

Many organizations are operating large cloud data centers packed with hundreds of thousands of server computers, and their technologists are looking for ways to differentiate their services from their competitors while reducing complexity.  Today, many of them use technologies that originated in the personal computing era to power their data centers. It’s a one-size-fits-all approach that’s out of sync with the demands of the cloud era.  In addition, these organizations still face critical issues like system utilization and management complexity. 

But a lot of solutions have been developed to cope the challenges which cloud computing is facing today to give it a bright future.

Sunday, 11 August 2013

ReportBuilder: A Strong Reporting Tool For Delphi Applications: Features and Advantages

ReportBuilder: A Strong Reporting Tool For Delphi Applications: Features and Advantages

There are a lot of reporting tools in delphi like Report Smith, Quick Reports, FastReports, Rave Reports, ReportBuilder and others. In this article we will focus on the main features and advantages of using ReportBuilder in your delphi application. 

ReportBuilder components from Digital Metaphors provide an ideal platform for building world-class reporting applications. ReportBuilder provides us with a powerful, intuitive set of components that provide sophistication in the design of reports, and the ability for non-programming professionals to produce outstanding quality reports. 

ReportBuilder easily allows for getting up to speed quickly: integrated report previewer, data base access, charting, report explorer, an end-user report designer for those needing reporting solutions today, ReportBuilder provides a complete reporting solution.

Good Technical Support

Any complex software requires support, and Digital Metaphors' support is top rate. The response time is quick, and this helps reduce programmer frustration. This is key in any third-party tools used by programmers.

Digital Metaphors produces high-quality reporting components and provides outstanding support for their product. The newsgroups provide a wealth of information and collaboration between the vendor and other developers. The company 

has always been extremely responsive to any support issues. Digital Metaphors staff answers any questions extremely quickly (same day) on their newsgroups.

Flexibility of ReportBuilder

Report Builder provides a level of flexibility unmatched by any other reporting tool ever created. This flexibility is due to the large number of report components, the ability to group components using regions, the ability to create relationships between stretching components such as memos, richtext and subreports, and the flexibility of nesting full-fledged reports within one another. With ReportBuilder, there is no limit to the complexity which you can resolve.

Support for multiple nested drill-down subreports

This feature can be used to create a highly sophisticated ‘tree view’ of the data: an initial summary report is displayed and additional information can be accessed simply by clicking on an item in the Print Preview window. The page is then re-rendered with more detail information shown. You can also utilize this technology to make the Print Preview window ‘clickable’ so that you can create solutions of your own, such as launching an independent report when an item in the report is clicked. The potential uses of the ‘hot’ Print Preview window are literally endless.

Less Cost of Deployment

The ReportBuilder Server components are deployable at a very reasonable cost. ReportBuilder is available in Server, Enterprise, Professional and Standard editions.

Support for Charting

Support for charting and exporting to various formats is excellent in ReportBuilder.

Good Database Support

ReportBuilder provides very good support for all databases. With ReportBuilder, the same report runs correctly under all the databases like Oracle, MS SQL, Firebird, InterBase etc.

Data can be accessed easily from their Data Access Development Environment (DADE), or directly through datasets, text files, or class structure allowing reports to access their data in a natural way. (No need to create datasets just for reports!).

Easy To Use Interface

ReportBuilder end user interface is very powerful and easy-to-use. Wizards are available within the system for creating reports. 

ReportBuilder previewer is fully integrated. With ReportBuilder's flexibility, the report order can be customized for an advisor’s preferences (e.g. the page order can easily be customized). And output can easily be sent to multiple formats (PDF, printer, and/or previewer) at the same time. Additionally, ReportBuilder allows for saving reports so that a copy of the report can view later. 

Good Documentation and Samples Reports

ReportBuilder provides good documentation, sample reports and examples, help files, and the reporting components. 

The examples are extremely good (pointing out each of the capabilities of the system), written (.PDF) documentation is good, the (Delphi) help files are well designed, and the engine appears extremely easy to integrate. ReportBuilder also offers a few other features such as integrated support for charting, a built-in macroing language (RAP), drill-down capability, and available source code. The product price also includes royalty-free distribution of the engine and the designer.

Conclusion

ReportBuilder provides a complete solution for Delphi programmers. From getting started, to full integration into complex applications. ReportBuilder provides an excellent reporting option for any Delphi programmer!

Thursday, 8 August 2013

Unicode Support in Delphi: UnicodeString and AnsiString in Delphi

Unicode Support in Delphi: UnicodeString and AnsiString in Delphi 

Recently I was migrating an old Delphi 7 application to newest Delphi XE4 application. The main road block I faced with unicode strings (UnicodeString and AnsiString). Delphi started to support unicode string from Delphi 2009 version. So there are some points regarding unicode characters (UnicodeString and AnsiString) you need to keep in mind while migrating your delphi application older than Delphi 2009 to the newer version. Let me first tell you what unicode is and why do we need this in modern applications?

What is Unicode?

Unicode is a character encoding scheme that allows virtually all alphabets to be encoded into a single character set. Unicode "enabled" applications can use characters and symbols of all of the worlds written languages for storage, retrieval, and display by digital computers.

Unicode is the name of an international character set, encompassing the symbols of all written alphabets of the world, of today and of the past, plus a few more. Unicode includes also technical symbols, punctuations, and many other characters used in writing text, even if not part of any alphabet. 

Why to use Unicode?

Using unicode, Delphi developers become able to serve a global market with their applications -- even if they don’t do anything special to localize or internationalize their applications. Windows itself supports many different localized versions, and Delphi applications need to be able to adapt and work on machines running any of the large number of locales that Windows supports, including the Japanese, Chinese, Greek, or Russian versions of Windows. 

Users of your software may be entering non-ANSI text into your application or using non-ANSI based path names. ANSI-based applications won’t always work as desired in those scenarios. Windows applications built with a fully Unicode-enabled Delphi will be able to handle and work in those situations. Even if you don’t translate your application into any other spoken languages, your application still needs to be able to work properly -- no matter what the end user’s locale is.

UnicodeString and AnsiString in Delphi 

The default string in Delphi 2009 is the new UnicodeString type. By default, the UnicodeString type will have an affinity for UTF-16, the same encoding used by Windows. This is a change from previous versions which had AnsiString as the default type. 

UnicodeString is assignment compatible with all other string types; however, assignments between AnsiStrings and UnicodeStrings will do type conversions as appropriate. Thus, an assignment of a UnicodeString type to an AnsiString type could result in data-loss. That is, if a UnicodeString contains high-order byte data, a conversion of that string to AnsiString will result in a loss of that high-order byte data.

The important thing to note here is that this new UnicodeString behaves pretty much like strings always have (with the notable exception of their ability to hold Unicode data, of course). You can still add any string data to them, you can index them, you can concatenate them with the ‘+’ sign, etc.

For example, instances of a UnicodeString will still be able to index characters. Consider the following code:

 var
   MyChar: Char;
   MyString: string;
 begin
   MyString := ‘This is a string’;
   MyChar := MyString[1];
 end;

The variable MyChar will still hold the character found at the first index position, i.e. ‘T’. This functionality of this code hasn’t changed at all. Similarly, if we are handling Unicode data:

 var
   MyChar: Char;
   MyString: string;
 begin
   MyString := ‘世界您好‘;
   MyChar := MyString[1];
 end;

The variable MyChar will still hold the character found at the first index position, i.e. ‘世’.