Need to make Website but not sure on language.

Soldato
Joined
24 Feb 2004
Posts
2,910
Hi all

I need to make a complicated website and not sure which language to use for backend.
I can program C++ and use this mainly for programming probabilistic models rather than applications.

Initially I thought to save time that i should program the backend in C++ and the front end in JavaScript, HTML and CSS. But it would seem that using C++ to program backend could be problematic and difficult. If I had ample time would attempt it but I'm pressed for time currently.

So I am thinking of learning C# & ASP.net Core and using this for backend and JavaScript for front end. I used c# in 2012 in limited capacity but I would have to relearn it.

I also believe its possible to use both JavaScript for back and front end. I have little webpage development experience so not sure what language to use and what might be best.

any advice from someone with experience would be appreciated. Ideally least difficult implementation as I will spend appx 6 months on learning the relevant languages (c#, JavaScript, Html, CSS etc) and few months to actually programming the site. I have given myself appx to end of year to complete this.

I also need to make banners, backgrounds and all artwork required. I assume most of this can be done in Adobe Photoshop.

thanks in advance.
 
C++ to C# makes the most sense given their relative similarities. Other options are Python+Flask or Node to build the backend but having used all three C# is probably the least headachy and easiest to debug. Just build it as a REST service using JSON (use the Web API templates in C# for this) then you could swap/change the backend out to another language if you like in the future and the client will be none the wiser.

Though, do you definitely need to have a separate frontend and backend? By this I mean your backend runs as a REST service which your frontend (website via Javscript, a mobile app, a desktop app, whatever) talk to over HTTP calls.

If you don't ever plan on exposing the backend as an API to third parties or need to access it anywhere but your website you could make your life a lot easier and just build what you're after using ASP.NET MVC or even Python+Flask or Node.js+Express still. All of these can act in just backend mode, or can also be used to actually serve a website and handle stuff like users submitting forms, pulling product details from a database when someone goes to /product/1234 and rendering it back to their browser etc.

Here's a quick tutorial from Microsoft that shows how to set-up a webpage using MVC. It handles both the templating side (serving HTML to the user) as well as dealing with dynamic content from databases etc:
https://docs.microsoft.com/en-us/as...rt-mvc?view=aspnetcore-5.0&tabs=visual-studio

The default template engine for MVC is bootstrap which is really nice. It's worth using Bootstrap for your frontend no matter which option you go for though because it makes building websites and dealing with annoying things like mobile friendly versions so much easier.

(by the way - the .NET Core name has been sort of dropped now in favour of NET 5 (not to be confused with .NET Framework which included the abomination known as webforms). .NET 5 = .NET Core basically though.)
 
C# follows quite readily from C++. You can even use C# for front end dev these days, with Microsoft’s Blazor.

As above though, depending just how complicated you need to make things, just using MVC (or Razor Pages) might give you a solution without getting over involved in front end tech.
 
I need to make a complicated website and not sure which language to use for backend.

What's complicated about it? Makes a big difference to the language you use.

So I am thinking of learning C# & ASP.net Core

If you go down this path specifically look into ASP Core MVC. MVC is Microsoft's take on the "Model View Controller" pattern. In essence it's a REST API added onto a template engine structure.

to use both JavaScript for back and front end.

I think you mean Node.js (the JavaScript backend server). It is an option but I really don't like it for websites, the backend code looks quite wonky unless you're building something that will be made much easier by sharing backend and frontend code. I've see some people build browser games in Node and sometimes API's, but you rarely hear about it being used as the full technology stack.

I also need to make banners, backgrounds and all artwork required. I assume most of this can be done in Adobe Photoshop.

Can't speak much for this, but the Adobe products are popular in the design industry.

front end in JavaScript, HTML and CSS

You're also going to want to learn a "frontend framework" to make your HTML and CSS easier. I recommend looking into "Bootstrap" or "Tailwind" as using these can save you time and gives access to many UI tricks common in modern web development.

any advice from someone with experience would be appreciated.

I've worked in the web platform development industry for roughly a decade now, I personally recommend to you one of two options:

C# + ASP.net CORE

PRO's
  • Well-thought-out and implemented by a huge technology juggernaut
  • A number of complex technologies built in that often require additional servers or out of ecosystem configuration to achieve
  • C# is an interesting midpoint between high level abstract coding and low level coding
  • C# is designed to read like C++, as the name suggests
  • C# has more of the complex language features associated with mature development built in and working well such as Threading, Strong Typing, Object Orientation, Generics, Metaprogramming, Cross-compiling, ect.
  • You have a choice between Microsoft's proprietary IIS server and the new Kestrel server implemented for Core
  • The backing of Microsoft's extensive suite of tools and Servers such as Visual Studio, VS Code, Sql Server, SSMS, SSIS, build tools, Azure, Azure devops, ect. ect.
  • One of the best implementations of MVC which is popular and has vast backlog of tutorials and learning resources to pull from
  • Linq + Entity Framework is a powerful tool and doesn't really have an analogue in most languages
CON's
  • Microsoft has a habit of dropping support for projects, ASP.net Framework (Framework =/= Core, confusingly) has already had it's "final version" despite being newer than the "classic ASP" from history
  • C#'s depth can be too much for some developers who just want something simple. There are several rabbit holes you can spend days exploring in the language
  • Can be difficult to deploy if you don't want to use hosting specifically designed for ASP. IIS has to be installed on a Microsoft OS and Kestrel + Linux web-server can be a living hell to configure
  • Microsoft (although getting better at it) has a long history of making it difficult to work "out of eco-system" when it comes to development environments and devops
  • Many of the tools Microsoft offers seem to be free (such as Visual Studio) up until you read the fine print, they are only free for toy projects. Licences for business use can be extremely expensive.
  • There are so many versions of ASP that sometimes it can be difficult to know for sure which versions your knowledge applies to
  • Many community libraries get left in the dust due to how quickly they are left incompatible with newer versions
PHP + Laravel Framework

PRO's
  • Has become far better and well thought out in =< PHP 7.
  • Fast to get setup and working, easy to develop in
  • The language is very small in code footprint, you can learn it quickly and get things done quickly
  • Laravel is generally considered one of the best web frameworks out there, and has some huge time savings such as code generation though Artisan and instant admin backends via Nova. Productivity is off the charts.
  • PHP is a language designed for the web
  • Many 3rd party tools and platforms offer pre-written libraries, has a thriving community of open source developers
  • Easily integrated with other servers and tools such as Redis, Cron, Multiple DB servers, Mail services, ect.
  • Works well the tried and tested Linux web stacks such LEMP, LAMP, known to be easy to maintain deployments on own hosting or VPS
  • Reads in a similar fashion to JavaScript
CON's
  • Many people find the dynamic typing to be worrying
  • Has a bad reputation
  • Upgrading between Major versions of Laravel is sometimes fiddly
  • Performance is fairly good, but is difficult to optimize beyond the baseline
  • Lacks strong threading support
  • Processes are not designed to run beyond 30 seconds. CRON based scripting can feel like a hack when trying to implement certain features which are meant to occur based on internal system state without running within a request
  • Few options beyond writing a C script and calling it from exec, or implementing an API ontop of, when trying to access hardware or attempting to write exotic programs which are not conventionally deployed over the web
  • Some people find offence in using too many open source components in a project, even if they are well maintained
All this said, it's also important to do tutorials, learn and get stuck in. Try doing some quick trial and proof of concept projects in different languages. When you're confident start on the big project you have in mind.

Also note that this is my opinion, other web frameworks are available.
 
Last edited:
If it's a commercial proposal (note the complicated part) it may well be worth getting a contract developer/company in, both in cost and your time.

While I fully encourage DIY and learning, in a professional environment, it's best to focus on what you do best and pay someone to do the other stuff 9 times out of 10.

If it's a personal endeavour/learning experience, crack on :)
 
Gents, just wanted to say thank you all very much for taking the time to reply and specially the detailed replies. I really appreciate it. I'm sorry for the late reply, I have been so busy lately and there is so much to take in your replies.

after reading all this, I am seriously starting to wonder if I can really do this project in the 8-9 months I have left to do it, 2-3 years no problem i would give it try without apprehension. The website is for a family member, but what he requests is quite complicated in my perspective. He wants what is essentially 2 sites in 1, a front page to sell items and a something what I can best describe as similar to ebay but not the same, ie people can upload item for sale but no auction component from what he describes. He also wants a mobile app to accompany the website and also a application to scan barcodes to upload stock.

I think, I can do the website side of things but from memory of playing with stuff over 15 years ago there are things I am not sure how to deal with. Like if there are too many multiple form submissions and dealing with a que system on the SQL server, not even sure I have to worry about such a thing. Dealing with database optimisation and structure. Making a website that only have 50-60 customers is one thing but if say 400,000 is totally another beast. Also I need to decide how long to store messages, archiving ect ect. I assume learning SQL server might be also required?

do I have to deal with Parallelization and Multithreaded issues or does the server deal with these issues?

I am also worried about website security as I have no clue where to even start with that. Do I even deal with that or the hosting company does?


I believe given the advice and my c++ background, I will go C# & ASP.net 5 with the new CORE framework route. I do have one thing that confuses me. The consensus is for me to use ASP.NET MVC. I believe this has been phased out and a new CORE framework from microsoft has been releases which now encompasses the MVC and few other things. Would it more wiser for me to use the new CORE frame work? or am I confusing things?

The other issue is that the core framework is being updated and as stated above things get old quick with microsft and keeping up is hard and confusing. The availability of books on the new CORE ASP.NET 5 framework and C# 9 is hard to come by. I found one suitable book but its not even released yet. Unless someone has other suggestions.?

Pro C# 9 with .NET 5: Foundational Principles and Practices in Programming Paperback – 11 May 2021
by Andrew Troelsen (Author), Philip Japikse


Can someone recommend a reliable place to buy domain name? I see multiple websites with different prices for same name? They want £6000 for the name lol. I am scared to ask the next question now lol :)

and just out of curiosity how much would the website components of a site like this cost? is there a recommended company I could ask for quote?

Very sorry for the long reply and so many questions gents and really appreciate everyone taking time to help. No doubt a part of me really wants to try this project as I have always wanted to learn web programming but this is quite a tall stack and challenge for me anyway.

Thank You all
 
Last edited:
I believe this has been phased out
This is why I left all that ASP.NET stuff behind. Always getting replaced by something else.

I'll admit I'm a PHP fanboy, and I don't use third-party frameworks, I make my own.
PHP has been roughly the same for 20+ years and still has backward compatibility with stuff I made way back when.
It's much easier/quicker to learn, but if you're learning it at the same time as making something, 8-9 months would be a feat but possible.

do I have to deal with Parallelization and Multithreaded issues or does the server deal with these issues?
The server should handle most of your multithreading issues. In ASP.NET it's possible to do asynchronous functions, while only possible by exec'ing other scripts in PHP.
Though, I tend to just make the PHP code little more than an interface between the SQL Server and a Javascript-heavy website. If I need multithreaded behaviour I make multiple requests in Javascript.
The PHP is there for access control, last-resort data sanitisation, etc.
PHP doesn't need to be 'fast' to do this, though I'd still call it fast.
The bottlenecks would be down to the SQL Server indexing and your written queries.
If you do decide to use PHP, then I highly advise using the PDO plugin for PHP.

I am also worried about website security as I have no clue where to even start with that. Do I even deal with that or the hosting company does?
Website security will be down to you. You'll have to make sure only those who have permissions are able to do restricted activities.
You can have the webserver ask for authentication (eg .htaccess files) on a per-folder basis, but this is ugly. You can of course also do both if paranoid.
The hosting company will be responsible in minimising hacking attempts (e.g. bruteforcing passwords on the database server), but it's down to you to have a good password policy.

Can someone recommend a reliable place to buy domain name?
I use fasthosts.co.uk I've been using them for 20something years and not found a reason to change.

how much would the website components of a site like this cost?
Not sure what you mean here by components. Do you mean hosting? software frameworks?

He also wants a mobile app to accompany the website and also a application to scan barcodes to upload stock.
If you design it right, the website could stand in place of the mobile app, some extra CSS loading for mobiles, and it would be just as capable. Only real reason to bother with an app would be for the exposure that app stores can give.

Making a website that only have 50-60 customers is one thing but if say 400,000 is totally another beast.
You start small, and you grow with time. It will be inevitable that some things will slow down, and you revisit and optimise.
Experience will teach you to predict bottlenecks, but even then there's things you wouldn't have foreseen.

I assume learning SQL server might be also required?
I can pretty much guarantee this. Luckily it's one of those things you can pick up quickly.
There's depth to it though. You'll be up and running in no time, but learning optimisations and advanced features can take a while to master.
 
I agree with a lot of neur0maniak’s comments above. (Though not about PHP :D .Net all the way here!)

To go further with the app comment, you can even create a minimum app that is basically a wrapper around a website.

In terms of security, yes it is down to you, and I’d suggest that a website on the scale of 400K users is not really something to be learning on. Google “OWASP top 10” and see if you consider that you’d be able to mitigate those risks. If your site ends up leaking data, the company could be in for a real hammering under GDPR.

While database access can be abstracted away - I do like Entity Framework - you also need to know how to work with it’s limitations... especially performance when you get into working with more complicated data graphs. In terms of raw performance, working directly with SQL or a lightweight wrapper such as Dapper can be best, but then you need to know more about the “nuts and bolts” of databases, and especially how to avoid introducing a SQL injection vulnerability, which remains one of the big routes to an insecure site.

You can still use MVC with the new .Net Core / .Net 5 framework. It’s substantially similar to previous versions of MVC, but there are a few minor differences. Definitely go with that, rather than anything .Net 4.X based. Off the top of my head, .Net Core 3.1 is currently down for longer term support than .Net 5 and I believe .Net 6 (due next year) will be the LTS version.

In terms of learning resources, Pluralsight have some excellent videos on .Net development - and as a bonus, I understand that they are available completely free for April. For beginner courses that are worth looking at, have a search on there for those by Scott Allen. Gil Cleeren has some more advanced ones. If you decide to go with Entity Framework, anything by Julie Lerman is a must-watch. Similarly for security, anything by Troy Hunt goes on a must-watch list, especially “Hack Yourself First” - the course/workshop is better than the video version, but that’s not free!

Hope that helps!
 
As this is a commercial product for a family member with only an 8 to 9 month timeframe I'm going to strongly suggest you/they look at getting a professional company to make it.

If you did go ahead and make it then I'd recommend looking at one of the popular frameworks like PHP Laravel, Python Django or a number of others such as whatever the popular one is with C#. A framework will provide a lot of the mundane code so you don't have to reinvent the wheel. It will provide a degree of security protection because that code will have already been tested. It will also abstract away the database access for you. But the big issues you are left with, apart from choosing the technology stack, learning it, deciding on hosting, etc, is that you will forever be stuck with "can you just add this" or "this isn't working quite right can you take a look" on a Sunday night. If you can't deliver it on time, or the quality isn't good enough, then your family members business would be impacted and that would strain your relationship.

However getting a company to do it could be expensive unless you got incredibly cheap (which brings cheap quality with it).
 
He wants what is essentially 2 sites in 1, a front page to sell items and a something what I can best describe as similar to ebay but not the same, ie people can upload item for sale but no auction component from what he describes. He also wants a mobile app to accompany the website and also a application to scan barcodes to upload stock.

Sounds like E-commerce. Looking into Shopify or Magento before trying to spend a year building a custom website.
Woocommerce and Craft Commerce are also an option.
A common mistake is trying to re-invent the wheel.

I assume learning SQL server might be also required?
SQL server is Microsoft's database sever. You will defiantly have some sort of database (which will almost certainly by either MySQL, Postgress or Sql Server) somewhere in your stack while deploying a website.

do I have to deal with Parallelization and Multithreaded issues or does the server deal with these issues?
All web servers are threaded web servers. Unless you're trying to run some insane script that takes all of the servers resources for more than 30 seconds, no you won't have to think about it.

I am also worried about website security as I have no clue where to even start with that. Do I even deal with that or the hosting company does?
You need to think about it a little bit in any case. The general rule is the managed cloud services like Azure or Heroku are fairly secure, you just have to make sure don't leave the door open. Review this topic once you've decided on where you're going to host the site.

I believe given the advice and my c++ background, I will go C# & ASP.net 5 with the new CORE framework route. I do have one thing that confuses me. The consensus is for me to use ASP.NET MVC. I believe this has been phased out and a new CORE framework from microsoft has been releases which now encompasses the MVC and few other things. Would it more wiser for me to use the new CORE frame work? or am I confusing things?

Yes Core is the future of ASP. If you do plan to go down this route then yes. As I said above, look into dedicated E-commerce tools first. Maybe have a tinker with ASP while also trying out a dedicated E-commerce platform.

Pro C# 9 with .NET 5: Foundational Principles and Practices in Programming Paperback – 11 May 2021

There is no shortage of reading on this topic, can't say I've read this one though. I personally recommend an interactive online course.

Can someone recommend a reliable place to buy domain name?

Buy mine from here: https://joker.com/
Generally speaking domains cost under £10-100 a year unless you're trying to buy a registered domain off of someone who already owns it.

and just out of curiosity how much would the website components of a site like this cost? is there a recommended company I could ask for quote?

Depends on all sorts of questions. Most Pro companies will sell you an off-the-shelf system for about £3,000-£15,000 or a full custom build for £8,000 - Silly money.
 
Last edited:
Am I reading your posts correctly? Website will need to handle 400k users, potentially buying, and/or uploading items? PLUS a mobile app.

If so, you are going to need enterprise level stuff here.

I am going to suggest you back out now, this is automatically sounding like it is gonna go south pretty quick.

In my view, if you want to stand any change of getting even just one of the three products off the ground, you will need a pre-baked e-commerce system (think something like wordpress or other 'site builders') and rent out dynamic (e.g. kubernetes cluster) cloud space to handle load.


If I am reading it wrong, and it's only 50-60, then I am still going to suggest you get a semi-baked product using again, wordpress or similar with appropriate plug-ins, and get it going. The mobile app is the one that is going to take your time. I'm not in mobile development at present, but I don't recall any mobile app dev's that do this kinda thing, but there must be some.
 
Yeah I stopped reading when I saw it was a for a family member. That is 100% going to be a nightmare. The things family assume should be done for nothing is obscene. Sounds like a huge headache from reading it.

I appreciate this isn't a helpful post.
 
Yeah I stopped reading when I saw it was a for a family member. That is 100% going to be a nightmare. The things family assume should be done for nothing is obscene. Sounds like a huge headache from reading it.

I appreciate this isn't a helpful post.

+1

No offence intended but stick to what you're good at and what you can do. Avoid the stress + inevitable disappointment.
 
Back
Top Bottom