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