Advice needed: the most fitting web development solution for me - asp.net

Recently I've been asked to develop a small web site/application.
The site should have some code behind it as in any web application, and the client also needs CMS editing capabilities. He is familiar with Joomla, so he wants the same experience.
I have vast experience in writing ASP.NET (C#), and almost no experience in PHP.
From where I see it, I have a few options:
Build an application based on a ASP.NET CMS - I don't know which CMS to choose
Build an application based on a PHP CMS (i.e. Joomla) - The development time will be much longer since I'll have to learn PHP
Build everything in ASP.NET and add basic CMS capabilities myself - There's a chance the client will be less happy with that
So I'd be happy to hear any suggestions regarding the path I should choose.
Thank you,
Don

If you're considering an ASP.NET CMS, I'd recommend you look at Sitefinity. It's built by Telerik (well known control developer) and is pretty robust. I've been developing with it for about 4 years and very happy with the product. They have a community edition which is free, with very minimal limitations in place (you can only have one CMS user login for editing, must have a small 'powered by' logo in your footer, etc.).
The other great thing about Sitefinity is that it is built on top of ASP.NET best practice and principles (master pages, themes, provider model, etc.)

I'd take a look at Grafitti or Umbraco :-)

Related

integrate CMS with an existing ASP.NET web site

I am trying to integrate a CMS into an existing ASP.NET Web site built with .aspx files and .aspx.cs code behind files (not compiled).
My research indicated that my best candidate is N2 CMS.
My ideal approach is to configure the editor with various editable content types and have my existing pages and user controls use the API to retrieve the content and place it pro grammatically into containers.
I couldn't find how this can be done, anyone have any idea how and if can this be done ?
Is there any other CMS that is better suited for the task?
We have had this exact setup existing web applications (WebForms + MVC) integrated with N2 in the same manner as you have described in previous projects and it was fairly simple to implement, but by now we have switched to using umbraco for the same purpose for the following reason:
better support (larger community)
better backend editors
more ready avilable modules (even commercial supported ones)
richer backend ( proper multi language support)
configurable rather than code oriented (this is a pro/con depending what you need)
One important note:
Don't waste time host the CMS + the actual application in the within the same ASP.NET application. We have all of the installations separate and we would have not done it differently looking back, especially when you have existing web applications with routing etc. in place already. The CMS is just going to mess this up at some point. Also this is not CMS specific.
Traditional CMS are pretty intrusive, they dictate you the way you must build your system. And if you already have a web site, and just want to add some Content Management functionality into it you are out of luck - all traditional CMS want you to demolish your old web site and rebuild everything from scratch.
It's actually a good idea to keep CMS and web application separate. In that case all you need is some kind of markers on your web pages telling the CMS what should be manageable. "Software plus Service" solution. This is what ElasticWCM (http://www.elasticWCM.com) is trying to do.
For a web site developer ElasticWCM is just a set of ASP.NET controls you can wrap around your Html to make the content manageable. When you click on the "Edit Page" button on the PageToolbar control you get redirected to the rich page editor where you can manage all your content fields. Nothing to install, just reference the controls' DLL.
You can't get less intrusive than that. As a bonus you receive all bells and whistles of a full-scale multilingual CMS and a bunch of unique features.
We have had a fair amount of luck with Sitefinity from Telerik. It's .net based, easy to extend, and has a good collection of plugins. On the downside it is pricey.

Is there an ASP.NET CMS that doesn't complicate the integration of Web Forms components?

Let me explain first that I'm new to web development and it's not my area of interest. A few months ago I made a quick research of various web technologies and I decided that I will learn ASP.NET - Web Forms. This has been working out for me for a simple site - I like the master pages idea and the modularity idea supported by custom controls. I made a few custom controls that I surely wouldn't find on the internet.
Problems began when I started to look for a blog that I could elegantly integrate into my existing master page with my existing themes and styles. The best thing I could find was BlogEngine.NET. But it is designed as a standalone blogging system, not as a control (I just want to display the posts and comments). Isolating what I want from the code base and integrating it with my web app is going to take unknown amount of work and time.
So I turned towards CMS with a blog - Orchard looked very promising. Then I realised that integrating my own Web Forms into Orchard is almost an impossible task for me (definitely not something I have time for). What do I think is the problem here? The CMS is not providing reusable components for easy integration in the spirit of Web Forms - it locks me in - as long as I stick to what they offer I am safe, but once I want to integrate my own Web Form - it's a no go.
So, do you know any NET CMS that allows integration of third party web controls just like you would do without CMS? Or better still - is just a collection of isolated, reusable components?
I realize this is an old thread, but don't know if you ever got the info you needed. If you are OK with commercial software, you might consider SiteFinity (by Telerik) as it uses master pages to generate layout, and webforms user controls for custom code. If you are more in need of an open source/free product, you might consider looking at MojoPortal or CarrotCake CMS.

Whether to use CMS or not

I've started to wondering whether ASP.NET Webforms/MVC even have a place in the web developers toolbox anymore... It seems that CMS systems like Umbraco have replaced the web developers job. Yes I know that those CMS systems are built with ASP.NET Webforms/MVC - however is there even any reason for learning those things if all you gonna do is to use a CMS system anyway? - Also I cant find any situation where a CMS system can be replaced by your own web application.
My question is therefore: Is there any reason for learning Webforms/MVC when using a CMS?
EDIT:
My question might be more like: When should I use a CMS, and when should I go and build my own web app?
The problem with CMS solutions, and I mean all CMS solutions (not just Umbraco, or other .NET solutions, but in any language) is that you will always pay a price for using them. You may gain more from the time-savings afforded by using the CMS, but there are trade-offs to consider:
You will sacrifice a great deal of flexibility
You could pay a significant performance penalty. Many CMSs load a large amount of modules and code to service every request, and much of this is not relevant to a particular page function. (though some CMSs are more monstrously heavy than others!)
The future of your project is tied to yet another vendor, and their own choices
Very often, you rule out the possibility of using other databases that might have better fit your customer's needs (Umbraco doesn't support PostgreSQL, Kentico only supports SQL Server)
Once you start using a CMS you will be tied into satisfying the architectural decisions and API of the CMS framework, and you could eventually be backed into a corner.
This can be particularly problematic if your 'site' is more of a web application than a pure content delivery site. In such cases it can make more sense to choose to build using the full flexibility of the web application framework, rather than risk getting backed into an architectural corner.
On the other hand, if you are building a web site that has potentially hundreds of pages, with a lot of user-contributed content and is much less of a web application, then often a CMS is the way to go, and makes a lot of sense. But remember, you now have two frameworks and two APIs to learn and manage (your platform's framework and the CMS framework).
Writing a CMS is like invading Afghanistan.
Everybody gets a turn but nobody wins.
I don't think that Stack Overflow could have been built with a CMS. Does that answer your question? =)
Update
To answer your updated question.
If you want a regular corporation web containing news, articles, forum etc: Go ahead and use a CMS.
If you need to build a more custom web site like stackoverflow, a web interface for a system or anything like that: Built it using MVC etc.
I personally use a CMS for our corparate website and a MVC framework to build user and administration interfaces for our products.
Not every problem needs a CMS. In the same way not every problem needs a bespoke MVC/webforms website. It depends on what your requirements are. You pick the technology to solve the problem.
Build vs buy is the hardest decision to make. As a developer build always looks best. You can do better than that pile of carp they want to buy. Nevermind that you're reinventing the wheel, axel, cart, etc. To users/management buy always looks best. They don't have to think to hard about what they want and can have it now, not 3 months later after you write it. They forget it'll cost the same again to customise & make it impossible to upgrade.
I'll stop ranting now.
Umbraco is a pretty bare minimum CMS. To customize it (e.g. Version 7+) you'll need to know Heavy MVC, JSON, XML, Sql, etc.
In fact a Site built on Umbraco 7+ is entirely based on MVC views you set yourself and assign to SurfaceControllers (which are MVC controllers) and all you are really getting is the ability for users to edit things about your pages and have Umbraco manage it for you in a DB.
In short you still need experienced web developers to build a site on Umbraco, they just save a lot of time by not having to build the entire backend from scratch.
You use Umbraco to organize Document Types that define what Templates (MVC Views) are used for rendering different types of documetns (e.g. Web Pages) and then you built the template from the ground up with 100% control over the HTML, Css, and Javascript that get's output.
Imo Umbraco is more of a Framework like Django than a complete CMS.
Sure you can build a site in Umbraco and not customize anything, but it would be a pretty cheesey site.
The whole point to Umbraco is to give skilled .Net Developers a good platform for building a site on top of it, but they still have to build it.
Now sharepoint would be more of a complete CMS out of the box that you can do a lot with, but let's see a few problems with SharePoint...
Resource Heavy, eats 50+ Gig's to install
Eats 16 GB of ram just to boot it up (Sharepoint 2013)
Requires Sql Server 2008 R2 or equivalent (enterprise license, $$ chaching)
Requires Windows Server ($$chaching)
It's a monster basically, if all you need is a user editable blod platform... man what a waste of money. Foundation is free, but doesn't include things like the Blog Site Template, so you buy a server enterprise license ($$ big cachinge, 40,000$+ in some scenarios...)
Agreed. A CMS like Umbraco provides a (very) good out-of-the-box solution for the most basic applications. Any sort of specialized purpose is going to require additional programming knowledge. Anymore, though, and your major, if not primary need is going to be a good understanding of the business need. I think we're getting away from building the Legos themselves and on to building the neat toys with the Legos. Cheers!
A CMS (or similar application framework) will provide you with a lot of functionality out of the box, and many of them also have a good library of plug-ins. But you'll still need to write WebForms/MVC code if you want to add any custom features.

What disadvantages/problems are there when integrating Joomla and ASP.Net web pages?

A friend of mine really likes using Joomla as a base for his websites. He also likes the power that Asp.Net has and can code in VB.Net.
He wants to use Joomla as the "Master Page" and Asp.Net/VB.Net/SQL Server to handle the main business logic of the application. He is planning on using the Joomla Wrapper Module (an IFrame, joomla modules) to integrate the ASP.Net into the Joomla website.
Joomla will be able to handle the security (users,roles,registration), menu (based on roles), static content (e.g. About Us page) and it will pass an Encrypted Username & Password to the Asp.Net web page (example here).
The goal of the website is to allow users to register & subscribe to a (free or paid) service where they will be able to customize content and download it as a file.
What disadvantages are there when doing this? Are there work arounds?
Some issues that I can think of are:
Links clicked in an IFrame won't change the browser's url which means that you can't bookmark pages and they aren't in the browsers history.
If Asp.Net has to know the users/roles (which is very likely) then it would have to access the Joomla database or keep its own user table which will have to be in sync with Joomla's users.
EDIT:
I would never build a new website this way, but I was looking for concrete points to convince my friend that using Joomla and Asp.Net together isn't a good idea.
I believe your friend's idea is fine. Both platforms have strong points. Joomla is a mature open source CMS platform that has an enormous amount of community contributed components and it is easy to use which makes it appealing. But I can also see instances where you may want to include ASP.Net functionality in certain scenarios. I have had clients who use Joomla but wanted an app I have written in .Net and it did not make sense to spend the time or money to rewrite it in PHP and MySql. The two can be integrated securely. I wish your friend luck in his endeavors.
I don't see what advantage you get from using Joomla when the app is ASP.net (nor the advantage of coding an ASP.net app when the framework uses PHP/MySQL).
I'm not convinced the security is tight because you can open iframes and bypass the Joomla security. Then you talk about passing username/password to the iframe - but now you need to validate this again through the ASP.net app.
I once coded an app in raw PHP and included it in a Joomla site using iframes. I realized fairly quickly that there was basically no security because the raw PHP had no knowledge of Joomla (although the app was not visible to site visitors and only known about by admin). I quickly recoded it into a built-in component.
To me, this sounds like you're reinventing the wheel on both sides of the app. If you want to use Joomla, either learn how to make components (it's pretty simple) and do it in PHP, or hire someone to do it for you ;).
If PHP is not your strong point, then use a full ASP.net site, perhaps with a CMS as GmonC suggested. Even creating your own basic CMS with some pre-built components (e.g. Telerik) would probably be quicker than integrating PHP and ASP.
Seriously, IMHO, if you're not going to integrate some legacy system or isn't doing this kind of "integration" development as an "experiment" to learn something - in a summarized way, if you just want to have your work done, I think the description you provided inserts a lot of complexity and overhead that aren't needed in the first place.
This added complexity of two completely different ecosystems is a disadvantage to what should be just simpler. I really believe you should try to use Joomla or other CMS written in .net like dotnetnuke (or build your own) instead of this configuration.
If you add more information about what are the goals and objectives of this project, my opinion may change. Until them, I keep my opinion of simplicity.
The time and effort you are going to go through to use Joomla is going to far outweight what it would take to just get some other CMS that was designed for .NET.
Stop over-engineering yourself into a midlife crisis.
Also, Joomla? Seriously? Joomla?
me too don't get any advantages for joomla, it's big system and it just as good as wordpress for regular projects, just wordpress is much simplier. joomla has no good documentation to learn and hard to extend.

Asp.net - what are the best latest tools /frameworks, etc to look at . .

Ok, i have done a bunch of asp as well as asp.net right when it came out. A friend is starting a non profit organization and he wants me to put together a site for him. I figured i would kill 2 birds with one stone and look to freshen up my skills on the latest that the web has to offer in asp.net, web 2.0, etc.
The site requirements are pretty simple:
Organization mission statement
Users ability to register
Photos, content
Blog posts
Ability to donate directly on the site (maybe through paypal)
So my questions is what are the best tools to start here given its going to be hosted on windows ASP.net platform 3.5. Any other frameworks that i should be looking at.
Where is the best place to start?
I could easily build the site just putting a table together and a bunch of static pages but i figured if it made sense to utilize and help freshen my skills, it would be worth the efforts of the learning curve.
Feel free to suggest any other items that i haven't listed.
Have a look at ASP.Net MVC and JQUERY also take a look at S#Arp as a nice platform to build your site upon. It setups ASP.Net MVC, with nHibernate and has really good guidance on a good DDD structure.
In case you've overlooked it, The AJAX Control Toolkit -
addresses three needs. First it gives website developers a place to get components to make their web applications spring to life, second it gives a set of great examples for those wishing to write client-side code, and third it is a place for the best script developers to get their work highlighted.
For an open source functioning CMS system, look at N2. N2 is a lightweight CMS framework to help you build great web sites that anyone can update. The user interface is intuitive and empowering. The developer story is something quite exquisite.

Resources