Click here to download PDF.
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 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. This creates two different patterns that every application developer must now face:
Established application patterns: These are applications developed using technology patterns such as client/server or web applications optimized for desktop browsers. They act as foundational applications and are heavily centered in existing business processes.
Emerging application patterns: Patterns such as multi-devices and the cloud are emerging as technology enablers for new applications. They complement the established patterns by extending the applications to be centered on the end user.
This extension of established patterns to meet the end user is a key opportunity for developers to drive new innovation and differentiation vs. competitors. Retail, communications, finances, logistics, customer services every company is a software company in todays business world. Each companys ability to fulfill customer needs and compete effectively is only as good as their ability to deliver software innovation.
However, extending existing applications to embrace these new needs is a challenging transformation process. Current development technologies are deeply rooted in the established pattern and are difficult to integrate with the emerging patterns needed for modern software. Existing tools do not provide an obvious path from the existing client/server world to the emerging device/cloud world.
This document focuses on .NET development, and specifically on business applications. It covers how to use.NET to develop for the established patterns that shape existing applications and also how to embrace the emerging patterns that are enabling the modern business applications of the future.
The .NET Framework and the future of development
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 todays 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 todays 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 provides 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 devicesdesktop experiences, Windows Phone apps, and Windows Store apps. 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 in any device, Visual Studio industry partners (VSIP) provide solutions that enable reusing C# skills and code with non-Windows devices.
This document addresses all these .NET development options, so you can make the right decision for your current skills and application requirements as you move your applications forward. It is structured to address the two application patterns:
Emerging application patterns focuses on how to build applications using the emerging patterns that are shaping the new applications across devices and services.
Established application patterns covers the technologies available for creating foundational business applications, as well as recommendations on how to modernize them.
Emerging application patterns
As introduced before, emerging application patterns are shaping the applications of the future. Customers and employees now demand applications that deliver a more personal experience. They want to stay continuously connected to the services they need.
This section is structured in the two main components that need to be addressed when developing this new breed of applications:
Creating experiences across heterogeneous devices.
Creating standard, lightweight services that extend through the cloud.
The ability to deliver new experiences tailored for devices is the key attribute for the emerging application patterns. Choosing the technology to create those applications can be difficult and involves many factors, including:
Your previous skills and technology preference.
The ability to create tailored experiences that integrate with local hardware capabilities.
The diversity of devices your application will target.
The technology used by your existing applications that need to be migrated or extended to devices. The two alternatives commonly established in the industry are based on very different approaches:
Native applications, which can get the most from every device, but require unique skills and code for each platform.
Web applications, which can be created with a common set of skills and code, but cannot provide a tailored experience for each device.
A native application is an application that runs on the client device and takes full advantage of that devices specific features in order to provide the most compelling experience for customers. As explained before, the Windows platform extends this concept to technologies beyond C++, which greatly expands the potential to reuse your code and skills to target new form factors.
The following list explains the differences between these technologies and when they are appropriate to use:
.NET/XAML: Appropriate if you are already familiar with .NET and XAML, or when extending existing
.NET/XAML applications. It also allows you to share .NET Framework code and libraries between Windows Store apps, Windows Phone apps, Windows desktop apps, and other Microsoft platforms by using portable class libraries.
C++: Appropriate if you are already familiar with C++. It lets you optimize and achieve the best performance for graphics-intensive apps or games. This option also allows you to share C++ code between Windows, Windows Phone, and other platforms, as well as target Direct3D for low-level graphics access.
Microsoft provides best-of-breed tools and technologies for creating browser-based HTML5 applications that run across any device. Because Windows also supports HTML5 as a native technology, you can target multiple devices with HTML5 web apps, then reuse and optimize that code for a native Windows Store app. Heres a list of Microsoft web technologies that are available:
ASP.NET MVC with HTML5 support: Use for flexible modern and mobile web apps, cross-browser compatibility, mobile web clients that can run on any modern device, and to take advantage of the ASP.NET MVC mobile features (such as using different pages and rendering based on detection of the current browser user agent).
HTML5 client for LightSwitch projects: Use if your web application or module is mostly data-driven (CRUD). The LightSwitch HTML5 client is the easiest way to create data-centric, cross-browser, and mobile web applications that can run on any modern device, take advantage of automatic HTML rendering, and adapt to different form factors.
ASP.NET Web Pages: ASP.NET Web Pages and the Razor syntax provide a fast, approachable, and lightweight way to combine server code with HTML to create dynamic web content.
The process of targeting multiple devices starts on the back end. Applications need to expose services that can be consumed on any device and scaled for the Internet. The following technologies cover the different approaches you can take to build services:
ASP.NET Web API: It is the preferred technology for flexible service development with REST approaches, OData, or JSON requirements. Try to use Web API as your first choice when evaluating what technology to use. Use any of the other technologies if Web API does not meet your needs.
Windows Communication Foundation (WCF): Use it when you need SOAP interoperability or you want to use a non-HTTP transport. WCF can use any protocol (such as HTTP, TCP, or named pipes), data formats (such as SOAP, binary, JSON, or others), and hosting processes. This technology works best for RPC-style (task/command-oriented) services and for enterprise inter-application communications.
WCF Data Services: Use when your services are data/resource-oriented, as in small or medium data- driven applications. It only supports OData. It is straightforward to use, but offers less flexibility and control than using ASP.NET Web API.
Workflow Services: Use if your service logic is internally Windows Workflow Foundation (WF). Externally, this is really a WCF service.
ASP.NET SignalR: Use for real-time functionality on the client side. This approach enables your server- side code to push content to connected clients in real time and at high scale, even to millions of users.
Modern business applications typically support many Internet users (such as end customers and partners), so maintaining your back-end services within your companys internal datacenters may not make sense. For this reason, services are likely to be deployed in the cloud. Services also benefit from the core capabilities of the cloud, such as elasticity and a quick and cost-efficient production setup.
In a diverse ecosystem where business applications live in different environments (both in the cloud and on- premises), there are many new needs to meet. Because you are also extending foundational applications that are currently on-premises, you need a link between private datacenters and the cloud, and you need to link those worlds in a secure way.
The Microsoft cloud platform offers symmetrical architecture, technologies, and products to support the cloud and on-premises infrastructuresand provides common services to manage applications that span across the two infrastructures in hybrid environments. This platform enables you to migrate and build your applications easily and gradually. Windows Azure supports multiple execution models that you can choose depending on your needs:
Infrastructure Services (Infrastructure as a Service/IaaS): Use it when you need a traditional and flexible approach, where you are responsible for the internal Virtual machine infrastructure, software maintenance, and administration (operating system, services, etc.). It supports traditional installations of software, like full SQL Server.
Websites (web hosting): Use it as an easy way to get started by simply deploying web applications on a managed IIS web site environment, and no infrastructure administration work is needed. It provides a low-cost, initially scalable, and broadly useful platform.
Cloud Services or Platform as a Service (PaaS): It follows the same idea of the websites, but with a much more scalable and flexible platform suited for higher quality-of-service requirements and greater control. It also handles most of the work required for reliability and administration as PaaS.
When extending your application to the cloud, you will also be able to use additional services provided by Windows Azure:
Windows Azure SQL Database for rich and relational database usage and a high parity with SQL Server on-premises, making it easy to move on-premises SQL Server databases to the cloud or to synchronize the different environments.
Windows Azure Tables based on simple unstructured data with a No-SQL approach, suitable for very highly scalable data source requirements.
Windows Azure Blobs, designed to store unstructured binary data, like video, files, or backup data or other binary information.
Windows Azure Virtual Network to connect your own on-premises local network to a defined set of Windows Azure Virtual Machines (VMs)?a similar approach to VPNs, but oriented to servers and sub-networks.
If your Windows Azure application is running in multiple datacenters, you can use Windows Azure Traffic Manager to intelligently route requests from users across multiple instances of the application.
Windows Azure Connect lets you configure IPsec-protected connections (1:1 relationships) between certain computers or VMs in your organizations network and roles running in Windows Azure.
SQL Reporting for functions similar to SQL Reporting Services, when you need a platform to create reports.
Hadoop on Windows Azure, which enables Big Data to be hosted as PaaS within Windows Azure.
Queues, suitable for asynchronous communication between different applications or processes, accessing the same persistent queues.
Service Bus supports persistent messaging too, but it is suitable for more advanced scenarios like event-driven applications and integrations, publish/subscription patterns, and to easily access on- premises datacenters from the cloud through the relay feature in Service Bus (which is also useful for peer-to-peer applications with firewalls in between).
indows Azure Cache is an in-memory distributed cache. It can be used as an external service or sharing a deployment between your own virtual machines.
Windows Azure CDN is an Internet cache capable of caching HTTP-accessed data, like video, files, etc.
Windows Azure Active Directory (AD) integrates your on-premises identity-management services for a single sign-on across your cloud applications.
Windows Azure AD Access Control provides an easy way to authenticate users who need to access your web applications and services without having to factor complex authentication logic into your code.
High-Performance Computing (HPC): It allows you to run many VMs simultaneously, all working in parallel on certain tasks. Windows Azure provides the HPC Scheduler in order to distribute the work across these instances. This component can work with HPC applications built to use the industry- standard Message Passing Interface (MPI). The goal is to make it easier to build HPC applications running in the cloud.
Media: Windows Azure Media Services provides a set of cloud components for media ingest, encoding, content protection, ad insertion, streaming, etc. that greatly simplify the process of creating and running applications using video and other media.
Established application patterns
Building modern business applications is not only about creating new mobile applications. The new experiences demanded by users have to be extremely well integrated with the business processes so they can unlock the value already provided by the core applications of any enterprise.
This section will cover the technologies commonly used for those established patterns, as well as the recommended approaches for extending these applications to embrace the concepts of modern business applications. It is structured by the two main categories of applications found in any company: small and medium applications or large, mission-critical applications.
Small and medium business applications
Business applications usually follow an established approach when supporting controlled environments such as employees and company departments. This section focuses on small- and medium-sized business applications that have a relatively short, evolving lifespan. These applications also primarily support data-centric or data- driven scenarios, often referred to as CRUD (Create, Read, Update, and Delete) scenarios. In many cases, the applications also have collaboration and document-management requirements, and they also need to integrate with collaboration products such as Microsoft SharePoint, business marketing products such as Microsoft Dynamics CRM and Microsoft Dynamics ERP, or custom front-end applications, on top of SAP. However, in many cases, this category represents standalone departmental applications that cover very specific custom scenarios.
Data-centric business applications on the web
The majority of these applications cover CRUD operations, including master-detail scenarios. Smaller subsets of these applications need to implement business logic, but not extensively. Business web applications generally arent large applications with complex domains and a high volume of business rules; instead, they are usually straightforward, simple, and heavily data-driven. The most important priorities for these applications are productivity, cost, and value. Their goal is to achieve short development lifecycles at the lowest cost possible, while providing value to the business in an agile manner.
The key technologies to consider for these applications are:
HTML5 client for LightSwitch projects: This is the easiest way to create data-centric, cross-browser, mobile web clients that can run on any modern device, take advantage of automatic HTML rendering, and adapt to different form factors.
ASP.NET Web Forms with HTML5 support: For developers who are familiar with Web Forms, this approach provides an easy way to start development while maintaining full control over the code.
ASP.NET Web Pages: ASP.NET Web Pages and the Razor syntax provide a fast, approachable, and lightweight way to combine server code with HTML to create dynamic web content.
ASP.NET MVC with HTML5 support: This is the most flexible and powerful option, with full HTML rendering control, strong unit testing support, and faking capabilities.
Data-centric business applications on the desktop
You might prefer to build desktop applications more than web applications because your application involves heavy-duty data entry; because you have complex offline scenarios that involve local storage, COM interoperability, and automation; or perhaps because your end users prefer desktop applications based on their work needs and skillsets.
Here are the key technologies for data-centric desktop applications:
.NET Windows Presentation Foundation (WPF): This is the preferred technology for Windows-based desktop applications that require UI complexity, styles customization, and graphics-intensive scenarios for the desktop. WPF also takes advantage of XAML views. And WPF development skills are similar to Windows Store development skills, so migration from WPF to Windows Store apps is easier than migration from Windows Forms.
.NET Windows Forms: This was the first available UI technology in the .NET Framework for building desktop applications. It is still a good fit for many business desktop applications. Windows Forms is easier to use and lighter than WPF for simple scenarios where you dont need UI styles customization.
Desktop client for LightSwitch projects: If you have already adopted the LightSwitch middle-tier and HTML5 solutions, you can use the desktop experience that LightSwitch supports out of the box.
Apps for Microsoft Office and Microsoft SharePoint
The unified app model applies to the following types of applications:
Apps for Office (applies to Office 2013, Office 365, Project Professional 2013, Word 2013, Excel 2013, PowerPoint 2013, Outlook 2013, Outlook Web App, Excel Web App, and Exchange Server 2013)
Apps for SharePoint Server 2013 and SharePoint Online in Office 365
Here are the key tools and technologies you can use to develop apps for Office and SharePoint:
Napa Office 365 Development Tools (lightweight IDE, coding in the browser): This is the easiest way to get started developing apps for Office and SharePoint without Visual Studio.
Office Developer Tools for Visual Studio (full power): Use these when you need full power and flexibility to build your Office and SharePoint applications. The tools are available to Visual Studio Professional, Premium, and Ultimate customers.
LightSwitch for Visual Studio: This tool supports apps for SharePoint on premises and in the cloud. Use this tool when creating data-driven (CRUD) apps either consuming SharePoint resources (lists and services) or non-SharePoint services and data sources. This is the easiest way to create flexible forms and data-centric applications integrated with SharePoint.
Modernizing desktop business applications
Experiences running on the desktop should also be built considering the new customers expectations. .NET provides multiple innovations for desktop applications to better address these expectations, as well as capabilities that allow your application to be extended to new platforms without changes in the architecture and you can even reuse code. Building your desktop applications with these recommendations in mind will extend their lifespans and make it easier for you to extend to new devicesor even migrate the entire application in the future.
Use the Model-View-ViewModel design pattern (MVVM): Microsoft client platforms (including WPF) make it easy to build applications using the MVVM pattern. With this pattern you will get a strong separation of display from state and behavior, which will help you to create clean and maintainable code that can be easily shared between multiple devices.
Use portable class libraries for the client logic: .NET portable libraries allow binaries to be shared between multiple platforms such as the desktop, Windows Store apps, Windows Phone apps, and others. Implementing your client logic with .NET portable libraries will greatly simplify the creation of multiple experiences on multiple platforms.
Modernize your user experience: Concepts that are demanded by todays users can be implemented with the latest innovations on .NET for the desktop. Design principles such as fast and fluid, authentically digital, or do more with less can be applied to your existing desktop application by employing a modern UI for your XAML design, carefully using animations, and implementing .NET asynchronous programming extensively.
Move the business logic to the server: Two-tier applications (client/server) are significantly harder to extend to new devices. The recommended approach is to clearly separate the business logic into services that can be reused later on other devices and form factors.
Extend to the cloud: Once separated from the client, Windows Azure provides multiple solutions to move the business logic to the cloud. Transforming that logic into cloud services greatly improves the elasticity and scalability of existing solutions, making them ready to embrace multi-device approaches.
Visual Studio partners provide an extensive set of tools and technologies that will also help you modernize your existing .NET applications.
Citrix Mobile SDK for Windows Applications provides a rich tool kit for developers to mobilize LOB Windows applications or write new touch-friendly applications executing on central servers (Citrix XenApp/XenDesktop) and accessed fro m any mobile device with Citrix Receiver. .
Xamarin provides a means to share C# code between applications targeting Windows or Windows Phone with iOS and Android devices. It provides access to the specific underlying APIs to create tailored views while reusing the client logic code between devices.
ITR Mobility offers a solution for building enterprise mobile applications in C# for delivery on the major mobile platforms. It provides services such as Abstract UI and Enterprise Data Synchronization to enable business applications across a range of devices.
Mobilize.Net provides solutions and services for migrating legacy applications to modern platforms including the web, mobile, and the cloudby transforming the existing source code into new code without runtimes for the output application.
Modernizing applications based on RIA containers
A few years ago, when Rich Internet Application (RIA) containers and plug-ins were popular, the context in IT was quite different from today. Five years ago, RIAs covered most deployment needs by just targeting Windows- based PCs and Mac computers. After the device revolution in 2010, you now have different devices (tablets, smartphones, and computers) with different operating systems (Windows 8, Windows Phone 8, iOS, Android, and Chrome OS)and many of them dont support RIA plug-ins.
At the same time, HTML5 has been evolving to support richer scenarios that previously required plug-ins. Currently, HTML5 is broadly supported across all devices and offers a better alternative for cross-platform client development than traditional plug-ins.
Native applications are also becoming more popular in the market, as they take full advantage of each devices specific features to provide the most compelling experience for customers.
The Microsoft platform supports all three approaches for user interfaces (web, native, and RIA), but it also takes into account that modern experiences across devices are primarily developed with web and native technologies. Deciding when to make that transition will ultimately depend on your requirements and needs. Microsoft is committed to supporting your choice and helping you throughout the process:
If you are transitioning to native applications, you can leverage your existing skills and even code by targeting XAML/.NET natively on any Windows device. Portable libraries will also allow you to share your binaries between different platforms, including Silverlight.
For browser-based HTML5 apps, Microsoft provides leading tools and frameworks to help you create applications for any device based on the latest standards. Silverlights interoperability with HTML also enables a gradual transition through hybrid applications.
If your applications targeted scenario is still only supported by Silverlight (for example, video content protection) or emerging patterns are not a requirement for your applications yet, you can continue to use Silverlight. Silverlight is a mature and stable technology, and its latest version (Silverlight 5) was released with extended support for 10 years to ensure you get the most from existing investments and to allow you to gradually transition to HTML5 or native solutions.
Large, mission-critical business applications
A mission-critical business application can be defined as any business application that is critical to the proper running of mainstream business operations. If an application of this nature fails for any length of time, you may be out of business.
Mission-critical and core-business applications have additional goals and specific priorities. Long-term sustainability and maintainability are crucial for large, ever-evolving applications.
If youre working with large, mission-critical applications, you have to deal with two main concerns:
Tackling complexity in the core domain
This involves complex domain expertise and business rules, and how to effectively project these into the software.
This concern must drive architecture, design, and implementation decisions (such as monolithic versus structured/layered approaches) and best patterns and practices, depending on the context (such as Domain-Driven Design architectural approaches, loosely coupled architectures based on dependency injection techniques and containers, and so on). The application design must take the future evolution and maintainability of the application into consideration.
Ensuring enough Quality of Service (QoS)
This involves availability, scalability, security, and similar subjects.
This concern must drive the way cross-cutting measures (security, operations, instrumentation, and so on) are designed and implemented.
Infrastructure architecture is also closely linked to QoS. For instance, you must consider infrastructure architecture on-premises or in the cloud depending on required scalability and elasticity, type of users, and go-to-production agility needs.
Microsoft development technologies for large, mission-critical applications
Microsoft development technologies for large, mission-critical applications fall into three categories: middle-tier technologies, infrastructure technologies, and UI technologies.
Services: Continuous services are fundamental for distributed enterprise applications. The priorities are performance and support of light interoperable HTTP services, standards (REST, OData, SOAP, WS-*), and enterprise service requirements. Microsoft provides a broad range of technologies based on ASP.NET Web API, WCF, and ASP.NET SignalR.
Domain model (entities, aggregates, domain-model logic): The domain model is the core of the application, where the priorities include tackling complexity in large domains, creating the right design for long-term maintenance, and isolating the domain code (POCO entities) from infrastructure technologies. Microsoft provides mature domain-model and data-access technologies including Entity Framework, LINQ, and ADO.NET, which can be used when applying Domain-Driven-Design patterns.
Composition, integration, business processes, and workflow: Every enterprise application needs a backbone that addresses scenarios typically found in these large applications such as loosely coupled architecture design based on dependency injection and IoC containers, long-running processes and workflows, event-driven subsystems integration, modern decoupled claim-based security, and transactions implementation. Microsoft provides proven technologies that cover those areas, such as inversion of control (IoC) containers (Unity and MEF), Windows Workflow Foundation (WF), Windows Identity Foundation (WIF), and .NET Framework System.Transactions APIs.
Messaging, security, and cache: Composition and integration approaches using APIs (as explained above) need a solid foundation infrastructure in order to scale. The assets needed are related to asynchronous messaging infrastructure, message queuing infrastructure, and distributed cache and security/identity infrastructure. Microsoft provides mature, solid infrastructure technologies such as Active Directory, AD-FS, Windows Azure Active Directory, Service Bus (for Windows Azure and Windows Server), Windows Azure Queues, Message Queuing (MSMQ), Windows Azure Caching, and Biztalk Server/Services.
Data sources: Almost any kind of business application needs data sources in which to persist business data. Depending on the applications context and priorities, different data-source types should be used. The priorities revolve around relational data richness and transactional capabilities, data availability and scalability, and massive unstructured data approaches. Microsoft provides technologies that cover these priorities, such as SQL Server, Windows Azure SQL Database, Windows Azure NoSQL tables and blobs, and HDInsight (Big-Data, Hadoop).
Services deployment infrastructure: Finally, all enterprise applications need a reliable infrastructure that ensures application availability, no matter how the context changes in the future. The priorities include consistent alternatives for on-premises or cloud choice, reliability, performance, availability, scalability, elasticity, hybrid IT, operations, and monitoring. Microsoft has the best-of-breed solutions for these requirements with infrastructure provided by Windows Server, Windows Azure, and Microsoft System Center.
Windows Store business applications: Modern touch-oriented applications (Windows Store applications for Windows 8 or Windows Phone) require innovative and compelling UX experiences, but the enterprise also requires that the UX support and align with their teams preferences and skills. Microsoft offers a broad array of technologies and languages to create native Windows Store applications that support your development team’s skills, including .NET/XAML, WinJS/HTML5, and C++/XAML.
Desktop application technologies: Desktop applications are used often in large business applications, especially for heavy data-entry systems within existing systems. The recommended technologies for such applications are WPF (Windows Presentation Foundation), which provides a migration path to Windows Store business applications, and Windows Forms, which provides an easier to use and lighter solution than WPF for simple scenarios where you dont need UI styles customization.
In summary, enterprise application development makes use of a large number of fine-grained and low-level Microsoft technologies. When building large, long-term business applications, selecting the right approaches, design, architecture, and technologies is critical for long-term success.
Modernizing mission-critical enterprise applications
When creating new, large mission-critical applications, current scalable and elastic approaches should be applied. However, most existing enterprise applications were not built with asynchronous engines and event- driven approaches, and they dont support scale-out and elastic architectures. In many cases, it is better to treat these applications as legacy systems to be integrated into updated (web-based or service-based) façades.
This integration should be done while building a new asynchronous message-oriented integration system as a cross-channel organizer. The changes and updates to the established applications should focus on areas related to innovation (as in modern applications) or areas related to scalability and performance. However, when dealing with legacy systems, scalability can be achieved more easily by building front-end services and caches in the cloud (those previously mentioned façades) instead of rebuilding the whole mission-critical application from scratch. Then, in parallel, you can re-architect the internal systems behind the façades as budget and time allow.
Business applications are diverse, and they require different approaches and technologies depending on your customer needs, your existing skills, and your application requirements. This document provides an overview of the different options you have as a .NET developer, based on a segmentation of the application you are targeting. For additional information and detailed guidance, please download the complete .NET Technology Guide for Business Applications document.