ASP.NET Core is a modular platform from Microsoft that was designed purposely to simplify rapid development of Web applications. According to Statista, ASP.NET Core is firmly in the top 6 most-used frameworks favored by the developer community. So, what is it about this framework that makes it so appealing for the next project, and how would one go about starting a brand new project?
We will speak about:
- Five arguments for choosing ASP.NET Core
- What types of apps are best suited for ASP.NET Core?
- Requirements specification documents include for your new project?
- How much does it cost to develop ASP.NET Core applications?
- How to cut costs when developing ASP.NET Core application
Why is ASP.NET the most optimal way of executing your next software project?
First time the ASP.NET Core was released to the world was in 2016. It became the next step in the evolution of the popular ASP.NET server platform, its next version with even more enhanced functionality and improved architecture. This framework came with a number of tools, libraries, and expanded functionality crafted specifically to simplify the development and deployment of software into the cloud and local network environments. According to a recent study conducted by JetBrains in 2020, ASP.NET Core is the most popular platform amongst developers that are favoring C# as a main development language. As of August 2021, approximately 18.1% developers in the entire world are actively utilizing this very framework for software development. In comparison, only 15.7% of developers are using ASP.NET. And for people in the industry these kinds of numbers are not unexpected, given the capabilities of the ASP.NET Core.
Five arguments for choosing ASP.NET Core for your next project
- Open Source Code. The openness of the source code adds easiness and flexibility when working with the framework. This allows engineers to review and modify existing code as well as quickly add new components and libraries as needed. This speeds up the development timeline immensely.
- High execution Speed. According to Microsoft, this is one of the main advantages that ASP.NET Core brings to the table. This platform outperforms not only ASP.NET, but a plethora of other popular web frameworks. This is also confirmed in a real-world testing performed by an independent third party TechPower: amongst 439 web, full-stack, and micro-frameworks tested, ASP.NET Core is proudly sitting in the 2nd position overall.
- Modularity. Because of the modular nature of its architecture, ASP.NET Core gives engineers an ability to load each individual component as a separate module while adding custom functionality to it. This flexibility greatly increases the speed of project execution, thereby improving “time to market” or ROI. This is yet another point in the reason for the popularity of this framework.
- Multi-platform. ASP.NET Core has been designed to run on Windows, although web apps based on ASP.NET Core can be hosted on Linux as well. The development environment for this framework is, of course, Visual Studio which allows teams to effectively code the software from any operating system where VS runs.
- Simplicity. MVC, or Model-View-Controller architecture allows software layers to be coded and modified independently from each other. This, as well as code reusability inherently present in MVC, simplifies not only programming, but also review, testing, acceptance, and deployment processes.
Deployment flexibility is something specifically worth pointing out. It can be either host-system dependent or be automated entirely. In the first case, .NET is deployed ahead of time on the target computer, which will help conserve resources on the host. In the second case, though, all of the necessary components will be bundled-in which allows software to run in the environment devoid of .NET. This versatility gives unprecedented control on the deployment stage of the project.
What types of apps are best suited for ASP.NET Core?
ASP.Net Core is universal by its very nature. You can build web applications, web services, Internet of Things (IoT) apps, mobile backends, and hybrid mobile apps. This is what makes it unique amongst other languages and frameworks designed to execute specifically on server environments.
Types of applications that can be developed on ASP.NET Core:
- Mobile. These apps are used on smartphones and tablets, and can be of 2 distinct subtypes:
- Web-based – dynamic web pages that run through a mobile web browser and do not require installation;
- Hybrid – like a native mobile app they are installed on device, but internally they basically run web application inside of application container.
- Web apps. These applications are deployed to a web-server to be executed by users via internet browser over HTTP & HTTPS protocol. These can be as simple as collection of html web-pages or it can be applications that live and execute on local or remote networks
- Web Services. Services that interact with the client through a unique address (URL) while accessing other services, apps, and components via SOAP, XML, and HTTP(S) protocols.
- Internet of Things (IoT) apps. They run on IoT devices and can be created to be specific to almost every industry and vertical, including healthcare, industrial automation, smart homes and buildings, automotive, and wearable technology.
It is common to see ASP.NET Core to be used for the application development of the first two types, although other types are also used on occasion. Regardless of the type of software being developed, though, the development process must begin with the careful examination of your project and putting together a comprehensive requirements specification
What should the requirements specification documents include for your new project?
The initial stage of the project begins with two initial steps: collecting business analysis and building technical specification documentation. Both steps are equally important and co-dependant, and they will determine just how effective every stage of the development, testing, and implementation will be.
Analyzing the business need
The very first step to your new shiny app is initiated by the client stating exactly what the use case for the application is. The conversation, or more often a set of conversations are directed by the implementation team that includes an experienced business analyst (BA). These conversations are designed to uncover all of the nuances of using the software and all of the edge-cases that may seem obvious to the client but not apparent to the outsider. At this point, the implementation team discusses potential pre-boxed solutions, analyzes the life-cycle of the future application, as well as estimates the technical skills of the proposed end user in the field.
Putting together a business requirements documentation (BRD)
Immediately after, or in parallel with the analysis step, the implementation team works on documenting its findings, carefully describing the “form and function” of the proposed application. BRD can take many forms and formats, based on the methodology of these kinds of projects in the consulting organization, but it almost always includes
- User profiles that outline where and how each user role will interact with the application;
- Collection of user stories that describe different business situations when application will be utilized by different users;
- Customer journey map that diagrams the steps that a customer take to interact with the client’s company;
- Technical requirements of the app;
Technical requirements portion of the documentation is a subject of its own. Again, based on methodology this part of the document can take many forms, but it must include the following elements:
- A detailed specifications of the technical environments (operating systems, devices) as well as physical environments (where the application will be used in a physical world); environmental description also includes time zones, currency, language, regional requirements; environmental section can also contain very project-specific specifications, like operating temperature of equipment, distance from the object and many others.
- Minimal, median, and maximum load that the application should be able to scale up and down to (scalability) as well as fault tolerances
- Structure of the application, data formats, integration with other services and applications, application configuration options
- Security based on access credentials, possibly different levels of data access based on user roles, and application administration
- Functional interfaces: desktop functionality, widget outputs, notification look and function, others
Business analysis and development of the BRD allow the implementation team to put together a picture of a possible solution and identify the way forward. Now it should be more obvious which approach and what methods will lead to the most optimal solution in the least amount of time and effort. Only after that the project can advance to the next stages: design, development, testing, and implementation.
How much does it cost to develop ASP.NET Core applications?
Basically cost will be driven by the business requirements and needs. Obviously more complex domains and systems require more effort to implement. A good approach to addressing ROI in this case is to split implementation into phases. Each phase would end up with a usable software and focused on covering one or more business flows. Phases and plans may change over time as app gets used in the real world which may lead to changes in priorities.
Costs of development for web applications
As we already mentioned in our previous post, we at FiduciaSoft describe the web application in broad terms based on the functional size and complexity.
- Medium size web application – between $50K and $100K USD, with 2 to 4 team members, duration from 4 to 6 months
- Complex web application that integrate into a 3rd party services – from $130K with 4+ team members, duration over 6 months
There are other factors that will affect the development costs. Such factors could be the format of the engagement with the development team (in house developers vs remote vs outsourcing), Minimum Viable Product (MVP) development, and other facets of the project.
How to cut costs when developing ASP.NET Core application
Can the application idea be checked for viability?
Any business or consumer application starts with the idea. And any idea, no matter how ingenious it seems, needs a reality check. Based on statistical research by Failory, in 35% cases startups fail because the product does not fit the marketplace. To avoid sinking huge costs into an application that fails to find its customer, an MVP approach is used to develop a version of the app with a minimum functionality while still demonstrating the main idea of the application or service. MVP approach gives business a feedback loop from the customers, providing invaluable information about validity of the concept. Utilizing this concept, a company can choose to terminate the project early if it becomes obvious that service does not have a chance of finding the sufficient pool of clients or choose to pivot and implement the more advantageous, more favorable functionality.
Can cost savings be found within the development team itself?
One of the ways to shave down the development budget is to choose a different style of engagement with your engineering team. Here are a few types of engagement that are being practiced in the industry:
- Freelancers and remote contractors. This approach is most advantageous for small to medium size “one and done” projects. Benefits include a relatively low cost per person. Drawbacks, though, include difficulties with code control, team management, additional management headcount, lack of warranty.
- Building a permanent in-house development team. Benefits include ability to implement code standards, superior project control and fast code changes, ability to continue developing project after project with minimum downtime in between. Negatives are also there, and they include the need to consult outside technical experts, long process of selecting each hire, additional costs on office space, employment benefits, computers, development software, infrastructure, and of course the constant need to start the next project once this one is complete.
- Outsourcing. This might be a happy medium, that gives a relatively fast start to your project. Benefits include vast selection of professionals with the necessary skills, business analysis services and relatively inexpensive MVP development, contract-based engagement with clear deliverables and exact pricing. Drawbacks: higher price than with freelancers.
Development costs can be cut by selecting an outsourcing partner in the country with more reasonable IT rates. For example, US and Canada have some of the highest rates averaging $140 USD / hour, while Ukraine or Belarus have rates between $80 and $100 USD.
ASP.NET Core is one of the most widely used platforms for application development. It offers reliability, ease of development, and includes a wide variety of powerful tools for profiling, analysis, development, testing, integration, and deployment of all types of applications. If you want to rapidly develop a software with a modest development budget, you may want to look at the outsourcing partner with a reasonable upfront costs and experience in this area of development. With this approach, your development partner can help on all stages of the project, from marketing research, requirements documentation, testing your idea through MVP, developing, testing and deploying your application in the target environment. All at a reasonable cost and within the agreed timeline.