Incorporating wiki style documents in site - c#

Hi I have to incorporate wiki style documents in my site, with links embedded in text and date of updates in plain view, for each entity. Entity can be people, place etc. Only authorized user of site can add/edit documents.
I have to implement it using .net and SQL-Server at back-end.
I am totally blank on this. Can you please help me with Links, tutorial and/or your answers that how can I achieve this.
Thanks.

You could use WikiPlex, the wiki engine behind Microsoft's CodePlex:
WikiPlex is a regular expression based wiki engine that allows
developers to integrate a wiki experience into an existing .NET
application seamlessly and with little effort. Built and used by the
CodePlex team, WikiPlex has been thoroughly tested in real-world
scenarios!

SharePoint has an out of the box wiki if you happen to have that available already. If you're coding it from scratch, I would personally start by defining all of the use cases, then modeling the database to meet those needs. Then build your data I/O layer and user interface on that. Since you're using ASP.NET you can take advantage of the asp.net forms authentication and user and role infrastructure. The question sounds a little broad for me to really get detailed on anything.

Related

What CMS should I learn? .Net ones only

I am thinking of learning a CMS. I am not sure which one will be the best to learn.
I seen quite a few job posting asking for a website with CMS capabilities(so it seems something that would be good to know).
CMS on the surface seem to be easy to use but in my mind this seems to quickly change when I start thinking of sites that need more then just out of the box functionality.
For instance sites that need custom themes. How do you switch out themes with your own layouts? Or what happens if a page on your website needs to have custom logic and cms editing on the same page.
Like say you need to write something that pulls up data from a db and format it on the page but to the right of this data you have a paragraph that an admin should be able to edit through the CMS.
So how do you have this work? How do you add say the gridview server control to this page?
So I guess what I am getting up I looking for a CMS that has good documentation on how to do custom logic on pages and not just a CMS where if your not using there own themes and try to add your custom logic on a page you basically have go through the CMS and change the entire source code.
I like using asp.net mvc but as far as I can really see there is really only one CMS that is built on MVC and that is Orchard but it's still in beta and always changing. So I don't want to invest time to learn on how how to use it and then they make changes and your back to square one.
Thanks
It seems like you have 2 competing concerns: 1) which CMS might be best to learn for "professional" opportunities, and 2) which CMS might be best to learn for staying with relevant/interesting technologies like MVC.
For the first concern, a lot of that depends on how long a particular CMS has been around. For example, DotNetNuke has been around for many year, is well-established, and many use it to build commercial CMS solutions. It is web forms based. There are many other well-established CMS out there. For example, the Web Platform Installer from Microsoft, gives options to install WordPress.
For the second concern, I would recommend Orchard. Yes, it is in beta but it has been in development for a while now and is really getting better stability. Even if there are changes from here, I'd expect them to be minor and not sweeping changes to force to you learn a brand new paradigm. As you pointed out, it is also MVC-based. This let's you do development in a much more friendly way - and without having to jump through a bunch of hoops.
My friend used .Net Nuke to create a CMS.
http://www.dotnetnuke.com/
It was his final project in school and they still use it.
http://www.garneau-tennis.com/
The obvious advantage is that you can develop in .Net.
Check it out if nothing else.
N2 CMS would seem to fit all your requirements:
http://n2cms.com/
http://n2cms.codeplex.com/
I've created two CMS sites recently using this. It is probably the best developed CMS around although there is a learning curve. It also has an ASP.NET MVC version :-)
Several themes come with it out of the box. I have already built two custom themes myself and it was pretty painless.
Dot Net Nuke - Well established and using the MVP pattern to ease WebForms development / testing.
Umbraco - Another well known (ran on asp.net) and they are working on an MVC version.
Orchard - New, very new but all MVC. I think this will be a winner as it matures. It's not necessarily bad to get in early. Even as things change you will be able to pick them up and when Orchard hits the prime time you will already know it while all the others waited for it to get out of beta. :-)

Choosing CMS vs Portal vs MVC+Components?

I need some help figuring out whether it'd be a good idea to use a CMS or portal solution for my latest project, which is (currently) an ASP.NET MVC application that must serve multiple customers (being a company or some other entity with a list of users) from a single installation (that is, a SaaS solution).
In addition to the core functionality, which includes document management/publishing, I also need to provide basic social features (such as blog, forum, gallery, polls, etc.). However, it is imperative that content is only visible for the customer to which it belongs, and my evaluation of a bunch of CMS and portal solutions has shed little light on whether they support this. They're pretty focused on single-user installations, and documentation on how to integrate with an existing MVC solution is pretty thin.
Essentially I'm looking for some guidance to help me discard dead-end options (the product does not meet requirements, imposes too many restrictions, is not mature, etc.) and find unexplored options before getting too far ahead with the project.
My requirements for the architecture include:
Multi-site support (using a single domain for hosting)
Watertight separation of content between customers
Full integration across components/features
SSO (single-sign-on)
Single-site experience (shared header/footer, unified navigation, unified tags, etc.)
Ease of development and deployment
Custom logic will be written using C# and ASP.NET MVC and any products should support this
I want to stay in control
Solution should offer features but otherwise stay out of the way (for example, not force stupid idioms on me, like insisting on GUIDs for primary keys)
Active development community
No single-man efforts
Recent source control activity
Reasonable levels of documentation and maturity
Does not have to be open source
I have spent a fair amount of time evaluating products and components, which I'll briefly share here:
Umbraco
Does not support ASP.NET MVC (yet, as someone is bound to otherwise comment)
Great community support, active development
Seems to be lots of work to get started
Kooboo
No source activity (no updates for almost two months)
GPL licensed? (need something that allows for closed source applications)
N2CMS
Partial ASP.NET MVC support
Every customer must have a separate domain
Limited source activity (not dead but not vibrant either)
Orchard
Microsoft-sponsored (which means it's likely to be over-architected, code-bloated and slow, although it does have some well known and respected contributors/leads)
Built using ASP.NET MVC
Looks promising feature-wise (but is unlikely to be stable at this stage)
AtomSite
Feels reasonably mature and has decent documentation, albeit with holes
Built using ASP.NET MVC
Limited source activity, single developer
MojoPortal
Looks good for a portal, but probably requires custom logic to be built as modules around the product (I was hoping to avoid that kind of lock-in if possible)
DotNetNuke (DNN), CommunityServer and Microsoft Office SharePoint Server (MOSS)
Definitely not my cup of tea ;)
BlogEngine.NET
Mature and feature-complete
No ASP.NET MVC support
Integration possible but not without lots of Web.config voodoo
Not sure if it supports customer separation
Given the list above I'm leaning towards AtomSite, N2CMS, Orchard or BlogEngine.NET. If I go with the latter I'll be using jitbit AspNetForum, which is a great match for my needs.
I'd probably prefer to use a custom ASP.NET MVC solution and individual components as this is likely to give me the greatest amount of control, but on the other hand, it'll make site theming and integration harder. What combinations have you tried, what worked well and what didn't? Anything important I'm leaving out of my evaluation? Any other relevant advice?
I'd appreciate it if the answers were not simply endorsements of your favorite product or way of doing things, but something that would help me choose or eliminate solution candidates given the requirements outlined above.
With the level of requirements you've specified, I'm personally going to have to lean towards the custom approach. You can hire someone to do the design (view) portion of the site for you, or you can buy a theme off the internet from site designers and customize it to your liking. (Sometimes just having somewhere to start is enough for intermediate level customization).
Multi-site support (using a single domain for hosting)
You're probably going to want to have control of your hosting environment, either a VPS (Virtual Private Server) or a dedicated box. This is still possible on shared hosting but not reccomended.
Watertight separation of content between customers
You'd probably have to spawn a unique app-pool for each customer with thier own services user for 100% seperation.
Full integration across components/features / SSO (single-sign-on) /Single-site experience (shared header/footer, unified navigation, unified tags, etc.)
This is going to be the tricky part. This Example may have some useful insight for you in the development process, but you're going to want a unified login service and have all sites use it or link to it.
Ease of development and deployment
This is where it gets tricky. Development ease comes from your background I think. MVC is definately the right choice in this respect then, knowing a lot about the right ways of going about building a site in MVC will aid in this process. Keep up to date by reading community blogs and listening to podcasts like Hanselminutes or DotNetRocks will help keep you in touch with the newest and greatest tools/technologies for making your site get off the ground quickly and effectively.
Deployment is the tricky spot. MSDeploy still isn't quite there. But if you can you probably will want to come up with a Dev -> Staging -> Release publish structure so you can test your code in a staging (mimiced production) environment.
Custom logic will be written using C# and MVC and any products should support this
I want to stay in control
If you develop the site in ASP.NET-MVC, you'll be able to build common libraries that you can use not just in your site, but also in your custom tooling. This will greatly reduce your code duplication and helps make sure operational unity is achieved. (Everything works the same way).
Solution should offer features but otherwise stay out of the way (e.g. not force stupid idioms on me, like insisting on GUIDs for primary keys)
While you'll have control in this situation, I'd strongly reccomend GUID Primary Keys. This allows Merge Replication, which can help you easily restore backups or use failover DB servers when things go awry.
Active development community
.NET has a great community out there, (including this one) and you should get lots of support if you ask for it politely.
No single-man efforts
Not sure what you mean here, You'd be the Single-Man unless you hire help, but even 2 people can do great things given a little time. Even one-man can do great things, but the framework you're running on here is backed by a commercially funded huge team.
Recent source control activity
Doesn't really apply to .NET, but a lot of the libraries that you may use (NHibernate, MVC Contrib, AutoFac, Etc...) will have lots of activity and constantly being improved.
Reasonable levels of documentation and maturity
.NET and most of the production level libraries developed for .NET (Mentioned above) actually have a pretty good degree of documentation. There's multiple paid & non-paid sources of information for .NET alone, and most libraries (are well supported by the community and known on StackOverflow)
Does not have to be open source
Look for support libraries that are LGPL (i.e. you can use it in commercial software, but if you modify the library you have to release the new library code if you release the binary.) You're pretty safe here, your site dosen't have to be open source if you use these libraries to support your development.
Well, that's my 2cents. The project you've described is no small job, you're looking at a considerable amount of work even if you go with a pre-built solution (mainly hacking it to work the way you want). I imagine your biggest hangups would be SSO & Security for the pre-done solutions. Not to say it's impossible, just tricky and the end result may not be exactly what you're looking for.
Also, look into OpenID, it may be the best solution for linking all your sites together and most pre-built systems can easily be ported to use it.
Take another look at MojoPortal. The CMS is awesome and the main developer , Joe Audette, is very responsive. I'm have several installations of the CMS running single and multiple sites.
I would lean towards a CMS based solution. Having a tested and production ready software not only reduces the development time but also helps in continuous upgrade and reduced bug count.
If you go down this route, you may want to also consider Sitefinity. Not only does it support all the features required by you, but also is built on .NET and supports MVC development. The product is built by Telerik, the makers of UX tools.
Disclaimer: I am employed by Telerik.
I've recently come across phpFox which is a social networking/forums/community site CMS. This may be of use to you and is fairly inexpensive.
The solution for the site of our company has become EBIZ CMS: full-featured site that includes social networking, online store, features a presentation, a forum, create HTML pages and much more, including the maintenance of professional technical support, so we do not even need help for installing by a programmer, and it is only US$ 9/month!

Help me to choose the right platform for my Portal from .net, php, php based cms and .net based cms

hi I am planning to develop a site very similar to http://www.nextdaypets.com/ but with some more features...i have worked on JOOMLA n i know it pretty well. but there are few limitation like access level control and there is no component available for what i need. what i m confused about is that whether i should make that component in joomla or should i develop my own cms or should i take some .net based cms and write the component for it. I know C# and .net framework as a beginner. I just completed a certification course in .net last month and i don't know php but don't have issue in learning it...so what should i do...please suggest.
Well, as i understood , all you need to do is to adopt an open source CMS (joomla or drupal) and customise it. If you know a bit of php it will take you a day of expirementing to get familiar with making components & modules for joomla /drupal. Majority of the work you can do by customising the existing stuff and using third party open source components available already. The remaining small delta amount of work, you can code yourself.IF won't be that tough i can assure.
Developing a CMS of your own might not b a good option, as it takes a lot of effort to get a stable one with all features, currently being offered.
Also , if you have a doubt about the platform, i would suggest to stick on to open source platform, rather than Commercial one. The large number of OSComponents available as well as the large community support are factors defenitly you should consider.
writing your own cms is lots of work, so you should consider this carefully. Extending an existing framework could save you a lot of time.
In your case I'd choose a cms which fits well to my purpose and uses a language I'm familar with. So if you like C#, then look for an ASP.NET based cms. Of course, if you like to learn PHP joomla would be a good choise.
Usually, when I have to pick a platform I consider a certain number of variables. For example, does your customer want an open-source or a commercial platform? Is it concerned with being dependent on you for future changes to the system? Does he have already a hosting provider? Will he host the website himself? These are all tech-questions that should be kept in consideration.
I would strongly advice against writing your own CMS. That's a lot of work, and even the best and most tested products hide some bugs. Relying on something that already exists out there, it will speed your development up, as it will allow you to focus on the specific functionalities, and not on the overall system or basic features (client-server architecture, caching, views resolving, itemization, etc. ...).
I've worked quite a lot with many CMS, and in this period my attention is focused mainly on Umbraco, a .NET-based open-source CMS that has many interesting features. I personally don't like Drupal, Joomla, Wordpress, etc.
If you (or you customer) have money to spend and can afford a commercial platform, I would suggest you to take a look at Sharepoint or Sitecore; Sitecore is somewhat conceptually close to Umbraco, whereas Sharepoint is more extensive but there is more work to do to bring it up and running.
If you are looking for an e-commerce platform and PHP doesnt scare you, you could give a try to Magento.
I hope these few names can help you. I mentioned them because of my own personal experience and - to be honest - they are all good products...
Cheers,
Gianluca.

Been a LAMP developer for years, now transitioning to the Microsoft Web Stack. Where do I begin?

I've always worked with the standard Linux web stack (linux, apache, php, python, mysql) but have been given a great job opportunity working with a group that works with the Microsoft Web Stack (IIS, ASP.NET, MSSQL, C#).
There seems to be a pretty good Microsoft following here on SO. Where should I begin? Specific books, tutorials, online resources are appreciated.
ASP.NET MVC will probably seem more familiar to you than ASP.NET WebForms. And honestly, I think that most pro-shops are going to move towards it over the next 5 years.
There are some really good tutorials (the kind that WebForms still doesn't have) at this site.
http://www.asp.net/Learn/mvc/
MSSQL (other than some tweaks to syntax) and IIS will probably be less of a hurdle, unless you'll specifically be administering them. I'd focus on learning C# and ASP.NET.
A good resource for C# is the MSDN C# tutorials.
A good resource for ASP.NET is the ASP.NET Quickstart Site.
RampUp is Microsoft's intro learning site. There are learning paths based on the background of the developer (like you for a LAMP stack)
http://msdn.microsoft.com/en-us/rampup/default.aspx
Additionally, the Asp.Net site has a bunch of tutorials and videos
http://www.asp.net/learn/
The data access tutorials available here from the ASP.NET website are as good a place as any for the experienced IT professional to learn about SQL Server data access in ASP.NET.
Would recommend www.learnvisualstudio.net great for staters.
If books are your best learning source then some I found helpful:
Pro C#
Pro ASP.NET
CLR via C#
The third book is about the common language runtime (what executes compiled C# code).
ASP.Net has a few different approaches. There's inline coding (much like PHP and ASP Classic), code behind and MVC.
To start out I would just stick with inline coding. Working with ASP.Net controls and view states is pretty hairy at first so I'd get familiar with the syntax to start and then move on.
Lot of good web sites in this SO thread. I very much lke MSDN Virtual Labs. They have them on just about every technology in the stack and they let you get your hands on the technology and play around.
You should definitely read a good quality book, about C#, I would recommend a C# 3.0 in a Nutshell, Third Edition book, from O'Reilly.
Then you should look into some MS stack specific pages, as is the CodeProject (www.codeproject.com/) site.
At the end you should start read some interesting blogs, on technologies you will work with.
You definitely should not miss the following ones:
weblogs.asp.net/scottgu/
www.hanselman.com/blog/
haacked.com
That would be for a start. :)
(sorry for missing links, but SO say I am a new user, and I can post only one link. :( )
I would suggest you read C# in Depth by Jon Skeet, who is a user here at SO. It will definitely help you master C#. The rest is gravy.

Coding Standard Wiki

At my place of work I've been put in charge of creating a coding standards document. Generally we follow what FxCop and StyleCop tools report to some degree but what we really require is document that will explain when to use a convention, why and maybe even a simple example.
This could be extended in the future for other purposes as well.
The first thing that came to my mind is to have an internal wiki site that we could build up and change easily over time but I've never used a wiki-based engine before and would like some recommendations.
If possible the engine should be in C# so we're able to tweak it to our needs if required.
If you think a wiki solution is the wrong way to go about this then please give an alternative :)
Update
I've just been informed, although we do have a php server it wont be staying, so I'm afraid php-based wiki ideas are off the table.
Update 2
Could you also (if possible) let me know if any of these solutions work with Active Directory?
Cheers
Tony
ScrewTurn Wiki is an free and open-source wiki made in C# and ASP.Net. Different database back-ends can be used, like MSSQL and MySQL, but also works without any database. It has several plugins to work with Active Directory.
Mindtouch Deki
Great wiki and it's built on C# and PHP, so you can use it on Mono or .NET
It also has Active Directory integration.
Download their ready-to-use VMware image. It started using it on my own PC then moved it to the company's VMware server when they had it ready.
We keep an internal wiki at my shop that has almost all of our documentation (not just coding standards). We didn't really see the need to roll our own so we just used MediaWiki...
We use JAMWiki and love it.
It is a solid application, we have had nothing but good interaction with both the application and the developers.
The guy you maintains the code does a great job answering questions and helping users out.
Brad Abrams has published an online set of C# coding standrds:
http://blogs.msdn.com/brada/articles/361363.aspx
If you go to the starter kits section of the Microsoft ASP.NET site, you will find several wikis to download such as ScrewTurn and Flexwiki. A wiki would be ideal for your needs by the sound of it :-)
I second MediaWiki. It's not C#, but it can be a nice excuse to sneak some free software in through the backdoor.
If you guys are a Microsoft shop, though, and are using Sharepoint, it has some built-in wiki-esque functionality.
In one project that I develop, I set up one MediaWiki wiki for development documentation, and one for online help.
I even generate part of the development documentation right from source code and database.
At the shop I'm at they use a commercial package which is really good: Confluence. What's especially nice is that it integrates with LDAP/AD so that you don't need a seperate login and it's build especially with business use in mind and has lots of free plugins. We couldn't live without it.
I am confused by what you mean when you say you don't have a php server. It runs on every platform known to man. I am noticing most Visual Studio Developers don't know that PHP runs on IIS.
I would go with mediawiki It has the biggest feature set and most add-ons developed for it in case you ever need to port your data elsewhere. If you need to modify your wiki you are doing it wrong.

Categories

Resources