The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
I think I need some help in navigating the incredibly huge sea of web technologies that have appeared in the last years - it has been a while since I had the time to actually study newish frameworks and products.
My job consists mostly of LoB applications, so until now I have found myself very comfortable with ASP.net Web Forms, WCF for AJAX interactions, a little bit of jQuery and ADO.net for database access - trying to keep it simple on the client side and have most of the work done on the server side. To achieve a 'modern' look I use the DevExpress Web Forms controls, and that's pretty much it.
It feels, however, like I'm missing something. Everybody is talking about different approaches but they all seem like huge steps backwards to me. I can't honestly believe people are more productive this way.
- ASP.net MVC? Yeah, just put some server side code alongside HTML. Back in my days we called that Classic ASP, and we hated it. Bonus hell points: video tutorials.
- Data binding? Yeah, bind everything to a EF context, you get IQueryables, it's fast! Oh, you need to call an API? Tough luck... no data binding for you. Back to ObjectDataSources!
- Bah! HTML5 and JS is all you need! Just use server side code for your APIs and learn to love
This is becoming a rant and I didn't really want that. I really think this is my fault. I just don't know where to start - and be productive with a simple but complete web app. I like having web services for application logic. I am ready to ditch Web Forms. I just don't want to lose my time again and again. Do you have any suggestion?
Thanks in advance
The Price of Freedom is Eternal Vigilance. -- Wing Commander IV
En Það Besta Sem Guð Hefur Skapað, Er Nýr Dagur.
(But the best thing God has created, is a New Day.)
-- Sigur Ròs - Viðrar vel til loftárása
I was hoping to help you and started reading your post.
Unfortunately about two lines into your post, my something in my head went BAZZZINGA!! and it was all downhill from there (hint: I'm of no use to you).
When I read this line, there was a conversation of this sort in my head:
Luca Leonardo Scorcia wrote:
My job consists mostly of LoB applications
Mind: There are LoB applications, Rajesh.
Mind: LoB applications, there are; you stupid twonk. Also, your mouth is open, Rajesh. Close it.
Me: Mate, th...
Mind: STOP IT! This from a guy who thinks his knowledge is out of date. And you don't even know what's an LoB application. When are you going to ask for help?
Mind: When are you going to build an LoB application?!
Me: [Grabs the sandwich from the side table]
Mind: Yeah, that's right. Keep eating. Would you like fries with that samich, capt'n fatso?
Mind: I bet LoB is different than IoT. Your RPI-connected-IoT-enabled fruit peeler project wasn't all that good.
Me: I know.
Mind: Learn how to do an LoB application.
Me: But the dude says something along the lines of his skills being already out of date, yes?
Me: [takes an enormous bite]
Mind: God, that's dry. Samich needs more sauce.
Me: OK, will do.
LOB applications are usually large programs that contain a number of integrated capabilities and tie into databases and database management systems. Had to google it
We use the term LOB as well but it describes a market segment.
I feel your pain, Luca. I've been writing LoB applications for most of my career (thankfully!), most of the time with small companies and operating as a freelancer. At the end of the day, the client neither knows nor cares what technologies you've used; until, that is, the day you're not around and he needs to find someone to enhance the application that's powered his business for the past 15 years. At that point he'll be less than pleased - and his estimation of you will plummet - when he finds you're using some flavour-of-the-month framework that went out of fashion 10 years ago and no-one will touch with a barge-pole.
I've found that keeping it simple - ASP.Net (either C# or, yes, VB.Net which saves a serious amount of faffing about) with WebForms, ADO.Net, JQuery and some simple ASMX webservices does everything I've ever needed to do. Conversely when working with "99% complete" applications that I've been asked to "finish off", I find an enormous pile of redundant code, a massive dependency list and at least 2 or 3 versions of frameworks and tools that are no longer supported or even accessible.
It sounds like you're pretty much in charge technically; so stick with what you know and works, and build up your own personal library of routines and techniques for the things all these applications need to do. Even with a restricted toolset, you'll find you still learn new stuff about it every week, you still learn new ways to use it, and still get that satisfaction from solving problems elegantly and robustly.
PS LoB = Line of Business - those un-sexy, day-to-day back office applications that keep businesses running day in, day out.
You're right there (had to try and find a competent WebForms developer to take on a project I didn't have time for (would have used lots of common code from an existing WebForms application I'd written) and simply couldn't find anybody. Which I think is a great shame as WebForms is a mature, proven and highly capable platform with a huge codebase to borrow from. Done properly it can be very efficient and, as above, I've never found anything I can't do with it.
I looked at MVC and took the conscious decision not to learn / use it. But that's because I'm now semi-retired and really just maintaining existing customers; for career protection if I'd been even 10 years younger I think I'd inevitably have gone down that road.
When I started to seriously write web apps, both for personal use and for my clients, I came up with three "truths":
It's got to look good and be fast.
It's got to be clean code on the client.
It's got to be clean code on the server.
The user doesn't care what's behind what they see, they want a fast and good looking UI. For that reason, I glommed onto jqWidgets (lovely controls, but there is a minor performance hit because jqWidgets doesn't support minified .js files, mitigated by turning on compression. I also use Bootstrap because it works very nicely for helping me style the UI on mobile devices. And that's it. I also code the client-side almost always as a responsive UI -- auto-update the server on a UI change, and I use HTML5's websockets for auto-syncing the client.
I also care what's on the server side. That means C#, my own web server which can run standalone or under IIS (which is nice for hosting multiple HTTPS sites), using LetsEncrypt for certs and a acme.net for cert renewal. It's in C#, I don't use EntityFramework, preferring my own as powerful but much more lightweight implementation relying on just Linq2Sql. Most importantly, everything on the back-end that the client has to talk to (or listen to) is handled by a clean API architecture.
Now, you don't have to go down the whole "re-invent the wheel" process that I went down, and it was a major decision to throw out those client-side frameworks as well as EF, as well as the Microsoft web server stack and selectively roll my own. Not very marketable on my resume, haha. But I get a very clean separation of concerns and what I consider to be very maintainable web apps. And nothing uses Nuget.
So, at the end of the day, I need to know:
We use Angular (4+) as the front end stack and today I'm busy trying to update it to v6... unsuccessfully so far And then there are all the npm packages to update as well. A bit of dll hell in a way. So I definitely see your case for not using all these fancy frameworks.
I'm working on an enterprise solution built using WebFroms, and I'm worried about not being able to keep up with the market requirements since every day a new JS framework comes out and you know, Telerik and ASPX with very little JS is not a very mainstream solution.
The interface and it's connected to many class libraries, each containing its own business logic and data access layer, respectively.
I'm interested in the possibility of separating the class libraries from the interface with a microservice architecture by providing data in JSON through APIs, would you recommend it?
My answer will make me sound like a Microsoft FanBoy but I will go ahead and offer it and attempt to back it up.
Learn ASP.NET Core (.NET Core).
1. Visual Studio Community is (basically and almost entirely) free.
2. The .NET Core includes everything you need to create true Enterprise Apps
a.) VSTudio dev environment - wraps up build, minifying JS,
b.) There's an entire plan for developing web apps but it is still open.
c.) You can build ReactJS or AngularJS later on top of your ASP.NET MVC site anyways (if you decide to go that way later
d.) Microsoft wraps up the basics you will most certainly use : C# (for backend), HTML created via generator (Razor), Asynchronous support (AJAX but better), jQuery is there, Bootstrap is there
e.) It is very modular -- only add what you need for your web app (everything is added via Dependency Injection of services)
f.) You get the package management (Nuget) to add custom things you need.
Doesn't matter what you learn: the "employer" will always require at least one more obscure tech skill that you don't have.
Eventually, you will stumble into something you haven't dealt with before and that will require you to learn a completely new skill set in a week (because saying you don't know how to do something is lame).
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
I ran into the same issues that you experienced with ASP.NET MVC. IN 2010 I worked on one of the largest MVC projects in the United States at the time.
Though we accomplished a lot, the project was canceled due to massive management issues between the client's management and my own firm's own management.
However, the decision to use ASP.NET MVC played a major factor in this cancellation due to the fact that there was little way to accommodate large requirement changes to the interface.
As a result, after I left this assignment I gave up working with MVC and stuck with WebForms for the rest of my years in corporate positions and consulting contracts. And now that I am retired and working on my own development projects, I still won't consider relearning MVC for web development.
To begin with, there is nothing new or radical about the MVC paradigm. It was actually designed back in the 1970s.
ASP.NET already had a complete implementation for MVC with the Castle Project's, Monorail Environment. It was Open Source and completely free to implement with full documentation but it didn't seem to register with the larger technical community.
When Microsoft introduced their own version of ASP.NET MVC it was a complete mirror image of the Castle Project's implementation. I always wondered if they had made some type of deal with the people at the Castle Project.
In any event, many developers claim that ASP.NET MVC provides better performance and a superior separation of concerns among other positives. However, this is all complete nonsense since the negative aspects of MVC detract so much from its benefits as to neutralize them completely.
If you design a WebForms application properly and use the recommended hardware and application server recommendations that have been developed over the years, ASP.NET WebForms can be blistering fast. And in some benchmarks has equaled or exceed the capabilities of its MVC sibling. And the bigger the MVC application, the larger the routing requirements, which have always been a large bottleneck for MVC since it has historically relied on Reflection (unless that has been changed in the most recent version upgrade).
The problem with WebForms is the same with most technologies; people make a mess out of their implementations and then blame the environment for the issues. This has been particularly attribute to many developers loading up Code-Behind modules with everything but the kitchen sink when in fact this module was only supposed to act as a dispatcher for other tiers. However, what happened here was that many organizations didn't support actual tiered development and threw everything onto an IIS application server even when the assemblies were supposed to act as separate tiers.
The benefit of having multiple, physical tiers was proven in the 1990s but no one was paying any attention.
ASP.NET MVC then took off because many developers, especially the newer ones to our profession, were under the misguided perception that it would cure the WebForms bloat, much of that being the fault of the developers themselves with quite a bit of help from the hardware people who wouldn't support physical tiers.
To add injury to insult, new paradigms came to the fore (ie: DevOps), which relied on the so called faster developments of MVC under the Agile paradigm. As a result, what you have now is the equivalent of a software version of the US Air Force's F-35 fighter; a development environment that was premised on an existing concept that was never designed for large scale development. In the case of the F-35, the US Marines insisted on the basis of a flawed air-frame design that had already been proven to be unfeasible for multi-role purposes (ie: the Marines Super Harrier, which was designed for immediate ground support and light interceptor work based off of the British Harrier design. This latter design was fought to a standstill by the Argentinian Air Force during the Falklands War in the 1980s.).
I suggest that Microsoft is looking for a compromise between the MVC and WebForms paradigms, considering that a whole new slew of components will have to be designed to take advantage of Blazor. And will this mean an option to return to the use of server-side controls?
And here it comes from Microsoft; a possible return to a very new WebForms...
"Microsoft is also working to implement Razor Components, or server-side Blazor, in version 3.0, which integrates Blazor into ASP.NET Core and allows it to run on the server with .NET Core. This can greatly help the compatibility of web apps, as the same code can run on many of different devices using WebAssembly, without any code changes required. .NET Core 3.0 doesn't have a set release date yet, but it will be available in public preview later this year."
Our large bank recently changed their Android app so you can no longer paste a password.
This is a MAJOR problem if you're using a password manager. I don't type passwords any more.
I contacted them (via their Twitter support) and explained that this is a security fallacy that pasting is dangerous.
Also, you can still paste a password when you login on their web site.
I wanted to mention that to them but was afraid they'd stop it there too.
May Only Prove That The Bank Devs/ Contractors Are Clueless
To me this only exposes the fact that the developers or security contractors or whatever actually have NO CLUE about WHAT SAFE PRACTICES are.
They could even remove copy functionality separately and I would be ok with that. But how could the paste functionality EVER be an exposure? They are just so clueless.
EDIT 09/24/2018 Look what I found from the National Cyber Security Centre: Let them paste passwords - NCSC Site[^]
And it provides additional links as to why pasting should be allowed.
I tweeted this to the bank site.
But accounts aren't broken into by repetitive copy and pasting. One hacker told WIRED that disabling paste on a webpage does not stop him from using automated tools to speedily gain access to users’ accounts.
modified 24-Sep-18 15:13pm.
Last Visit: 23-Oct-20 15:19 Last Update: 23-Oct-20 15:19