Prime Considerations for Enterprise Level Software Solutions

This blog post is focused towards some of the prime considerations and strategies to take into account while designing, developing, deploying and maintaining any enterprise level software solution. Here are few prime considerations :

1. Modification & Up-gradation Strategy :  If your solution is in the development phase, or if it is a very big project. There might be chances of modifications at different stages. With due course of time, you would like to have more and more features in your solution. Sometimes, changes could be very small, but even though if the solution has not been designed  to adapt to small changes then this could have ripple effect on you complete project life cycle and ultimately  can lead to very high cost. So, earlier you provision you application to adapt changes, better it will be.Various software patterns like MEF, Repository patterns, Factory patterns etc. can help you in achieving separation of concerns (SOC) so that interdependence of modules can be avoided to the extent possible. By minimizing the interdependence you can modify your module without worrying its effect on other modules.

If you are upgrading your existing solution, always duly check its backward compatibility, if every part of your solution is not getting upgraded for every user. If you solution is going under major revision, then make sure all of your users are mandated to use revised solution only.

2. Reliability Strategy : High availability and reliability is one major consideration for any enterprise level solution. High availability should be considered at every level. From software to hardware. By providing redundancy at different levels, high availability can be achieved. For example, using fail over clusters for databases, mirroring and raid levels for hardware etc. could be few things you might want to consider.

3. Performance Strategy : No will like your solution, if your solution is not up to mark on performance scales. You must create all your performance indices before hand, so that you can track and benchmark your solution performance over different phase of development, deployment and maintenance. You need to identify and outline potential performance bottlenecks and then work on that. Performance could be improved at different levels from hardware level to application level.  If it is database application, there are numerous ways to track and improve database performance. At application level, you might want to incorporate various features such as caching etc.

4. Security Strategy : Security is a prime concern of enterprise level solution. The solution you are developing might be backbone of your company , and you cannot overlook security aspects. For some companies, there could be mandatory auditing process. So have your security measures in place before you run into a bigger problem.

5. Backup and Restore Strategy :  As per Murphy’s law “If something can go wrong, it will be”. So, don’t be overconfident that nothing will happen to your system, or application and hardware. One day, all of your servers might go boom, and you will end up in a very gloomy phase, if you do not have regular backups with you. So plan your backups well, as per your need. For critical applications, plan disaster recovery mode too.Now, what the backups will do, if you don’t have proper backup restoration strategies chalked out. Proper restore strategies will help you in minimizing the solution downtime.

6. Deployment Strategy :  Efficient deployment mechanisms can avoid sleepless nights for every project stakeholder. It would be great if you have continuous deployment & delivery model  in place. For example, automatic builds, automated tests, quality assurance tests and automated deployment could help you in achieving a smoother deployment process.

7. Exception Handling Strategy: Exceptions are important part of any software solution. Have a proper exception handling mechanism, so that users might not get annoyed by extra-technical stack traces thrown at them. Exceptions at users end should be handled gracefully. Unhandled exceptions should be logged properly and should be sent back to the development team, so that they can take care of that.

Here, I have mentioned only a  few of the major considerations for enterprise level software solutions. Plan and design your solution well, and it will pay off in a long run.

Advertisements
Tagged with:
Posted in Technical

Bing Map Integration with ASP.NET MVC4 application

Bing maps provides a great way to create map based applications. In this screencast , I have demonstrated the bing map integration in a ASP.NET MVC4 application.

You can create your bing map account using this link. Once you have your bing map credentials ready, you can view this screencast. Here , I have tried to plot few locations on to the bing map as pushpins. We have a controller action, which populates a list of locations (each location comprises of latitude and longitude value). In the view, we have called the controller action using $.getJson method. Finally, each of the locations returned from the controller action will be plotted on the bing map.

Tagged with: , , , ,
Posted in ASP.NET MVC, Technical

ASP.NET MVC4(HTML5) vs Silverlight5 for LOB Applications

ASP.NET MVC vs Silverlight or rather I should say “HTML5 vs Silverlight”, is already a heated topic of discussion. Every developer and architect has his/her own views. So, I thought to share mine too.

I will talk only in context of LOB applications here, as for public facing applications the decision is quite tilted towards HTML5 because you cannot expect every one else to have silverlight plugin (or for that matter any plugin). Although plugins provide great features but they come with a cost of insecurity & adoption issues by common users. So, I will try to focus on Line of Business applications here in this post.

For LOB apps development, selection between silverlight and HTML5 (with any framework such as ASP.NET MVC) is more like a strategic planning. Silverlight 5 provides rich user experience and if you already have silverlight experts inside your company then Silverlight could be a better choice. Having said this, there is one more clause associated with the validity of previous line, that is controlled environment. If application is target with a smaller user group of a particular LOB app inside your company then its easy to maintain plugin deployment for all users, but if your LOB app targets a very large number of users then plugin deployment could be a daunting task especially if you don’t have centralized application deployment mechanism.
There is one more very important point to consider is about the fate of silverlight. For a long long time, Microsoft has been quite silent about its development activities on silverlight framework. However, the following link has given some ray of hope to all silverlight developer across the world.

http://www.zdnet.com/a-new-year-a-new-microsoft-roadmap-stepping-up-the-delivery-pace-7000009402/

According to this, We might see SL6 by 2013 or 2014. But it is not sure until there is some official announcements made by Microsoft. But anyway, if you want to develop your application in SL5 and you &  your users  are satisfied with LOB app features, and you have SL developers with you for maintenance then You can definetly go ahead with SL development as Silverlight will be supported by Microsoft at least till 2021-22.

Now, if Silverlight can do all the job , why to even think of HTML5 ?

Well, HTML5 comes up with great abilities and the two most important benefits according to me are “No Plugins Required” & “Cross Platform execution”. So, if users inside your company are using various operating systems (WIN/Mac/Linux) , HTML5 is the option left for you. You will not have to deal with plugin deployment and maintenance anymore. With the increasing trend of smartphones, tablets and other mobile devices , value of HTML5 increase many fold. And If your app targets a variety of users, HTML5 can be a great help.

Next point is the ability of HTML5 in creating LOB apps. And In this regard ASP.NET MVC4 can definitely help. However, it is not mandated to exploit HTML5 with ASP.NET MVC4, you can use other frameworks too such as Knockout JS with MVVM for databinding. However, ASP.NET MVC4 provides great advantage if you are developing a larger LOB application. With ASP.NET MVC4 you can leverage the benefits of HTML5 and at the same time MVC framework helps to manage bigger projects down the line. You can also customize your applications quite easily  as per different user devices (desktop, mobile, tablets) using ASP.NET MVC4 mobile layout mechanisms.

So, If you are in a technology selection phase and creating a pool of developers for HTML5+ASP.NET MVC4 development. You can go ahead with HTML5 + ASP.NET MVC4.

Another aspect is to mix both HTML5 and SL5 technologies together. If you want to leverage benefits of both technologies and this is also an option available to you. If you already have SL developers with you and few features of you LOB app can only be developed with SL framework, then you can easily make those SL components and hook them up with your HTML5 app.

So, in conclusion, both technologies have their own benefits and decision should be dependent upon your environment and context.

 

 

 

 

 

 

Tagged with: , , ,
Posted in ASP.NET MVC, Silverlight, Technical

Use Dotnet.HighCharts for ASP.NET MVC4

If you are working on ASP.NET MVC4 and want to have rich charts and trends for your application, DotNet.HighCharts is a great option. You don’t have to manually write all necessary Javascript,JQuery and other stuffs. You can directly code using C# and DotNet.HighChart will convert it for you. All you have to pass the chart as a model data to the view by the controller.

Here I will demonstrate a simple example to create an area chart using ASP.NET MVC4 and DotNet.HighChart.

You can download the librad samples from http://dotnethighcharts.codeplex.com/.

step 1. Create a MVC application project using ASP.NET MVC4 web application template.Select “Basic” as project template and “Razor” View Engine.

Step 2. Install DotNet.HighCharts using Nuget. Go to package manager console and use the following command:

Install-Package DotNet.HighCharts

Step 3: Create a new Controller “HomeController” . we will be using default Empty MVC controller template to create the controller.

Step 4: Add a view “Index”. Leave all the default settings, as shown below.

step 5: Add reference to javascript files (Jquery 1.5 and highChart.js) to your index view.

<script src="~/Scripts/jquery-1.5.1.min.js"></script>
<script src="~/Scripts/Highcharts-2.2.1/js/highcharts.js"></script>

Note: if you add higher versions of jquery (Such as 1.8 ) ,  there might be some issue, and the chart might not be visible.So, you have to manually add jquery 1.5 for best result with Highcharts-2.2.1

Step 5:  use the following code for creating a chart model inside HomeController.cs

   public ActionResult Index()
        {
            //Create Series 1
            var series1 = new Series();
            series1.Name = "Area Series 1";
            Point[] series1Points =
                {
                    new Point() {X = 0.0, Y = 0.0},
                    new Point() {X = 10.0, Y = 0.0},
                    new Point() {X = 10.0, Y = 10.0},
                    new Point() {X = 0.0, Y = 10.0}
                };
          series1.Data = new Data(series1Points);

            //Create Series 2
           var series2 = new Series();
            series2.Name = "Area Series 1";
            Point[] series2Points =
                {
                    new Point() {X = 5.0, Y = 5.0},
                    new Point() {X = 15.0, Y =5.0},
                    new Point() {X = 15.0, Y = 15.0},
                    new Point() {X = 5.0, Y = 15.0}
                };
          series2.Data = new Data(series2Points);

            //Create List of Series and Add both series to the collection
            var chartSeries = new List<Series>();
            chartSeries.Add(series1);
            chartSeries.Add(series2);

            //Create chart Model
            var chart1 = new Highcharts("Chart1");
            chart1
                .InitChart(new Chart(){DefaultSeriesType = ChartTypes.Area})
                .SetTitle(new Title() {Text = "Chart1"})
                .SetSeries(chartSeries.ToArray());

            //pass Chart1Model using ViewBag
            ViewBag.Chart1Model = chart1;

            return View();
        }

Here I am adding two series using SeriesArray and passed into the .SetSeries. You can set the default series chart type by using DefaultSeriestype or you can set it to individual series also.

You can pass the chart model using ViewBag,ViewData or directory through View Constructor. I am using ViewBag here.

Step 6: Add the following code to the “index” view

@((DotNet.Highcharts.Highcharts)ViewBag.Chart1Model)

to display the chart on your view.

The result is shown below:

08-05-2013-HighChartResult

You can use HighCharts to create great trends. You can tweak it as per your need.

Tagged with: , , , ,
Posted in ASP.NET MVC, C#, Technical

Asynchronous WCF service invoke with C# 5.0 Async And Await

In most of the scenarios, We would like to invoke the WCF service asynchronously, especially if service takes a long execution time. If we are consuming the WCF service from WPF or Silverlight Application (or any other application) , We would not like to block the main thread by invoking the WCF service in a synchronous manner.

Traditionally, in a Async programming we have to separate the code for service invocation and result collection.Also, there is a overhead of context synchronization if your service call is on worker thread and UI running on Main thread (As in WPF applications). Although there are alternatives to fix the issues, C# 5.0 provides a clean alternative.

C# 5.0 Async and Await feature provides a cleaner way to provide asynchronous effect while code resembles more or less like an synchronous call. The heavy lifting and context synchronization overhead will be taken care by the C# 5.0 compiler.

In this example I will demonstrate, how to invoke a WCF service using C#5.0 Async and Await feature.

Tagged with: , , , , , ,
Posted in C#

Screencast series on Workflow foundation 4.0 – Part 2 ( Arguments and variables)

This is second screencast in the series (Workflow foundation 4.0).In this screencast i will demonstrate , how to use arguments and variables in workflows,how to pass the variables or arguments to/from the workflow.

Part 1 is available on this link :

Part2:

 

 

Tagged with: , ,
Posted in Technical, Workflow Foundation
About Me


Software Architect, Developer & Pluralsight Author

Software Architect, Developer & Pluralsight Author, Twitter Handle :

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 117 other followers

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my current or previous employer's view in anyway.
Live Feed