Today, technology use is in the midst of a shift toward multi-device experiences powered by services in the cloud. Usage patterns are increasingly dependent on local hardware capabilities such as touch, sensors, and mobility, combined with the power of web connectivity and back-end services such as data storage, media streaming, and social connectivity. The devices-services nexus spans both business and consumer scenarios. In the consumer space, mobile computing initially created a wave of devices focused on consumption, which continues to grow as hardware capabilities and technologies advance. Within the enterprise, the twin phenomena of the consumerization of IT and bring-your-own-device (BYOD) have created a dynamic in which consumer experiences are driving the future of business computing and line-of-business (LOB) applications.
The next generation of the device- and service-dependent applications is not emerging in isolation. These applications have to work in an extremely well-integrated fashion with existing applications, unlocking their value to new audiences and new modes of interaction.
.Net Framework best for Enterprise Web App
The Microsoft.NET Framework was built to enable developers to create compelling applications on the Microsoft platform and, by all accounts, it has been a huge success in the market. Today, millions of developers across companies of all sizes and segments rely on .NET to create applications. It provides the core services required to build consumer applications; small business applications; and large, mission-critical applications, all with unprecedented quality, performance, and productivity.
.NET was also built with these now-emerging patterns in mind. At Forum 2000, Bill Gates said that the goal for .NET was “to move beyond today’s world of stand-alone websites to an Internet of interchangeable components where devices and services can be assembled into cohesive, user-driven experiences.” The original vision for .NET is remarkably well aligned with today’s developer landscape, including cross-device, service-powered experiences that are changing how the industry thinks about software development.
Enabling multi-device experiences empowered by services was a key attribute for .NET from the beginning. .NET has kept evolving since then, providing a first-class development experience for the new needs of applications:
- On the server side: .NET provides a common platform for developers to target services that run on-premises or in the cloud. Its close integration with Windows Server and Windows Azure allows applications to be gradually extended to the cloud, taking the best of each platform and enabling hybrid applications that sit between the two worlds. The fast delivery cadence in the .NET Framework libraries also provide continuous innovation that addresses the new needs of cloud-based applications in areas such as lightweight services, real-time communications, mobile web applications, and authentication.
- On the client side: .NET provides a consistent, first-class development experience across all Microsoft devices: desktop experiences, Windows Phone apps, and Windows Store apps (as shown in Figure 3-3). It allows .NET developers to keep developing foundational applications on the desktop and add exciting new experiences, all while using their existing skills and reusing code between devices. For scenarios where the reach goes beyond Microsoft devices, HTML5 browser-based solutions are the norm. .NET, in conjunction with Visual Studio, provides a modern solution for creating standard-based web applications that run across various devices. For developers looking to create more tailored, native experiences on any device, Visual Studio industry partners provide solutions that enable reusing C# skills and code with non-Windows devices.
There are too many combinations of approaches, technologies, architectures, and patterns to apply in business applications. AnsiByte here is trying to position a number of approaches based on mainstream application priorities, but it should not be taken as rigid, prescriptive guidance precisely because of a large number of contexts in business applications. There may be logical exceptions to this guidance, like small and medium-sized business applications that are not very data-driven but should be more domain driven due to ever-changing domain rules. Or vice versa—collateral subsystems or bounded contexts that are clearly following a data-driven approach though they might be a part of a large mission-critical application.
Our main goal here is to position Microsoft technologies in different approaches driven by application and business priorities. How you categorize your application completely depends on your application context and the specific domain. The main purpose of this segmentation is simply to provide a way to envision and organize different approaches and technology positions. Custom application development is oftentimes more of an art than a science—that’s why there’s no prescriptive truth to follow. The approaches, techniques, and technologies to use depend on the application context, the real domain to solve, and on the developer team context and skill set.