Options for HTML technologies in an application designed for managing enterprise metadata

Challenge

We are facing the decision of determining which technologies to adopt as we transition from a rich client Silverlight application to an HTML-based client that can accommodate a metadata driven approach.

Situation

  • Our enterprise has been using a Silverlight application for over 6 years, with a two-layer architecture where the Silverlight rich client communicates directly with the server backend. A significant portion of our business logic is executed within the Silverlight framework.
  • Historically, we have predominantly utilized Microsoft technologies.
  • Our team has limited experience with modern web development.
  • We are overwhelmed by the various technologies available for building contemporary web applications.
  • We have explored options like Angular 1 and 2, Kendo UI, among others.
  • Our entire system operates on metadata-driven principles, encompassing schema, business logic, views, and more.

Critical Criteria

  1. The solution must be metadata driven, allowing for dynamic creation and utilization of views and data models at runtime rather than compile time. Many JavaScript libraries lack support for this feature, assuming pre-defined views and data models.
  2. We require a dynamic and responsive client capable of triggering server interactions based on changes in field values, enabling real-time updates, styling modifications, dialog prompts, and DOM manipulations.
  3. If feasible, we seek an easy migration path from Silverlight, recognizing the challenges posed by our specific requirements.
  4. A long-term commitment is essential, as we aim to invest in stable and reliable technologies for at least five years, avoiding volatility and risk.<

Conclusion

We are seeking advice on selecting appropriate technologies and development methodologies that align with our unique needs and constraints.

Answer №1

There are several approaches you can take when considering this.

To begin with, there is the concept of Depth vs Breadth. If your goal is to have in-depth experiences while also reaching a broad audience, you may find yourself chasing after the Technical Unicorn (which has led many people astray in the past). It's important to understand that each choice comes with its own set of challenges, but what matters most is where you can attract users and how you can influence them. While some may prioritize breadth for fear of missing out on mobile coverage, the development costs and actual usage could prove otherwise.

Once you've made a decision on this, it will help guide you in choosing the appropriate technology.

For a broader reach: Web or Xamarin seem like suitable options. Xamarin, however, requires proficiency in generating dynamic UIs, especially as Xamarin Forms moves towards XAML implementation. Despite the shift away from Silverlight/WPF XAML, Xamarin remains a solid choice with its unique features.

If you're coming from a Silverlight background, a web framework like AngularJS might be more familiar to you. Its MVVM binding style aligns well with Microsoft technologies, and you'll benefit from a strong community support system.

For a deeper focus: WPF is a reliable option worth considering. As long as Windows XP to Windows 10 remain in use, WPF will continue to serve its purpose. While there may not be significant additions to its codebase in the future, the existing infrastructure offers stability and compatibility across different Windows versions.

In retrospect of the Silverlight/WPF era, we underestimated the enduring appeal of WPF. Despite being deemed "old tech" by Microsoft, WPF has shown steady growth and garnered a dedicated community following. This suggests that choosing WPF could lead to better support and resources compared to other technologies.

While the new Microsoft SDKs are enticing, keep in mind that anything below Windows 8 may limit your desktop application reach.

I hope this helps clarify things for you.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Set up an event listener for a specific class within the cells of a table

After spending the last couple of days immersed in various web development resources, I find myself stuck on a particular issue. As someone new to this field, the learning curve is quite steep... Let's take a look at a single row in my project: < ...

Tips for effectively modeling data with AngularJS and Firebase: Deciding when to utilize a controller

While creating a project to learn AngularJS and Firebase, I decided to build a replica of ESPN's Streak for the Cash. My motivation behind this was to experience real-time data handling and expand my knowledge. I felt that starting with this project w ...

storage location for data in JSON format

When using content type : "application/x-www-form-urlencoded", the result is stored in Request.Form in Asp MVC. However, for "application/json", the storage location cannot be found. Below is the code that is being used: AJAX part // reading form da ...

When making an Ajax post request, the loading indicator may not appear

I've implemented the jQuery code below for an autocomplete input field, but I'd like to have a spinner display while waiting for the response from the server. In my code, I'm using search: to show the loading div and open: to hide it. The s ...

The code is triggering IE 8 to switch to compatibility mode resembling IE7

I have created a custom javascript function that generates a pop-up, and I am invoking this function in my code. However, every time I click the button, the browser switches to IE 7 compatibility mode and the pop-up appears behind the button. Below is my ...

The battle between Hover, Focus, and Blur modes intensifies

My goal is to implement 4 different effects on an element: When hovering over the element. When moving away from the element. When focusing on the element. When blurred. However, I'm encountering a conflict where when I focus on the element, the ...

My JavaScript/jQuery code isn't functioning properly - is there a restriction on the number of api calls that can be made on

Below is the code I have implemented from jquery ui tabs: <script> $(function(){ // Tabs $('#tabs1').tabs(); $('#tabs2').tabs(); $('#tabs3').tabs(); //hover states on the sta ...

Getting a vnode from a DOM element in Vue 3.0: A Step-by-Step Guide

My question pertains to obtaining a vnode through accessing the DOM using document.getElementById(id). How can I accomplish this? ...

Scroll horizontally on a webpage using drag with JavaScript

I have been working on a unique horizontal website design that allows users to scroll horizontally by dragging the screen. I managed to successfully implement the horizontal scrolling feature, but I am facing difficulties in adding the horizontal drag-to-s ...

Is there a way to prevent HTML rendering with Javascript within a JSP page?

When a user accesses our site from China, we need to block certain assets to optimize the speed of the site. For example, resources from Facebook need to be blocked from loading altogether. The challenge is that this task must be accomplished using JavaSc ...

The functionality of CSSTransition seems to be malfunctioning. Perhaps switching to V2 of react

Can anyone help me troubleshoot my code snippet where I'm attempting to incorporate an animation for Tooltip Nodes? Despite my efforts, the animation does not show up on the screen after mounting. Additionally, the console.log is not triggered on the ...

Modify the color of the text input by the user in an AJAX-enhanced text box

After successfully implementing an autocomplete textbox using AJAX Autocomplete, I decided to enhance the feature with some Fuzzy logic. Now, as the user enters 3 characters, my database returns a list of records that match those characters. The search re ...

Encountering issues with formData in nextjs 13 due to incorrect data type

In my NextJS application, I am using the dataForm method to retrieve the values from a form's fields: export async function getDataForm(formData) { const bodyQuery = { ....... skip: formData.get("gridSkip") ...

Generating React components dynamically can bring flexibility and efficiency to the

Looking for a solution to dynamically render different components based on the arguments passed with data. While using regular or React.createElement(Item) works fine, all other options seem to fail. http://jsfiddle.net/zeen/fmhhtk5o/1/ var React = windo ...

How do I use props to enable and conceal elements like lists, buttons, and images?

Check out this unique component: <ReusedHeader H1headerGray="text here... " H2headerRed="text2 here ! " pheader="p1" getStarted="button text1" hrefab="button url 1" whatWeDo="button text ...

Using jQuery to transfer data via POST method

I'm currently working on integrating a third-party tool into our website. The tool requires the use of a form with the post method to send data to their site. Is there a way for me to replicate this action without relying on the form tag? I am not ver ...

Is it possible to use JQuery to target input nodes based on their values?

How can I check if any of the file input boxes in my list have a value using just one selector statement? Is it possible to achieve this with code like the following: $('input:file[value!=null]') Or is there another way to accomplish this? ...

I am looking to customize the color of my Material UI switch

I am having difficulty changing the color of my Material UI switch based on my preference. I have tried several ways, but have not achieved the desired outcome. const useStyles = makeStyles((theme) => ({ toggle: { '& .Mui-checked': ...

Blurring isotopes within Google Chrome

While working with isotope in Google Chrome, I noticed that all items have the following CSS code: -webkit-transform: translate3d(properties); In Chrome, every even element [2,4,6,8,10,12,14...] appears blurred, whereas in Firefox everything looks normal ...

Guide to pulling and showcasing information from XML at 30-second intervals using JQUERY AJAX and HTML

Seeking assistance as a beginner. Looking to retrieve and showcase data (HTML / PHP page) from XML every 30 seconds. XML FILE : <MAINData> <LiveData> <Field no="1">ENG ODI</Field> <Field no="2">ENG</Field> ...