I am in the process of developing several data entry forms that the client has asked to be accessible through the SharePoint interface (2007 WSS version).
The forms will, among other requirements, consist of multiple drop downs that have to be loaded from tables in SQL Server. These lists of data are updated frequently through a process that sucks data in from Great Plains.
My inclination is to create a Web Part Page with a Page Viewer Web Part and go full screen like this: http://blogs.msdn.com/b/malag/archive/2008/09/15/story-of-a-mischievous-page-viewer-web-part.aspx
...and then to do the pages in ASP.NET MVC3. Is there a better story than this? The integrated SP development paradigm seems like waaaay more overhead.
This sounds like a common issue with developers new the SharePoint paradigm, especially for 2007. The short answer is that your solution will be the quickest way to get to where you want to go but isn't the "cleanest".
The other option is to create a SharePoint Solution and publish an application page to the _layouts directory. A quintessential "hello world" example can be found at http://msdn.microsoft.com/en-us/library/bb418732(office.12).aspx.
New SP developers will find the hardest transition with deployment. The WSPBuilder codeplex project http://wspbuilder.codeplex.com/ has become the industries default solution for doing this. An example of using this can be found at http://www.greggalipeau.com/category/sharepoint/wspbuilder/.
For you I would say the key words are Application Pages and WSPBuilder.
Related
We're doing an application which takes feeds and items in that feed to entities on our own site. This is supposed to be an open site which anybody can sign up to. All of this is done with MVC + knockoutjs. We are thinking about managing the entities from that site using Sharepoint 2013, essentially replacing our SQL tables of those entities, and putting them into lists on in our Sharepoint instance. We're also thinking of doing the same thing for users and passwords and such. Then we might have a setup for a single sign on for any other sites my company makes. Currently we're using NHibernate and SQL server.
Are we are naive to think that Sharepoint could handle the amount of traffic, with outside users using our site, along with customers. I've heard that it's doable, I'm just wondering if it's a smart thing to do, and if there are hickups, limitations that any of you have run into trying to do this.
We went pretty far down the Sharepoint-as-a-development-platform path and ultimately ended up scrapping what we had done and rewriting it in other technologies. That doesn't necessarily mean it is not the right choice for your situation, but there a few things to consider:
"Why do it this way?". What are the benefits to adding the Sharepoint layer to your technology stack? If not Sharepoint, what do the alternatives look like?
Do you already have a solid Sharepoint admin team in place? Sharepoint definately requires a dedicated admin or team of admins that really understand the product to keep it performant and to help you troubleshoot when things are not working correctly.
Do you have Sharepoint development talent already in house? Good Sharepoint developers are harder to find and are typically more expensive than your regular .NET developer. Also, some existing .NET developers may not be interested in learning Sharepoint.
What is your expected traffic, and can Sharepoint handle it out of the box? At least in previous versions of Sharepoint there were internal limits on the amounts of data that could be stored in each list. On top of that, there were practical limits before the performance of the app becomes totally unacceptable. Understanding what those limits are should be a part of your initial due diligence so you can plan for those eventualities.
Will you be extracting operational data for external reporting or warehousing purposes? Is your data team already familiar with getting data out of Sharepoint?
Ultimately, the reason we failed was we ran down the path after the promise of "easy" development without really committing to the product. When we started running into problems, we struggled with basics like troubleshooting because we had lost a couple key people and our regular devs and admins struggled to figure out what was going on. If we had had the right people in place, our experience might have been different. We didn't, however, and we eventually chose to move away from Sharepoint and rebuild on our standard MVC/SQL platform.
SharePoint has come a long way in a short time to allow external applications to interact with it in the way you describe. I wouldn't try it with anything but SharePoint 2013 mostly because the licensing allows for this without additional cost per user and partly because what I mention next isn't available in 2010 or earlier.
You can use a MVC/knockout frontend but, the MVC app for SharePoint template isn't exactly what you want unless you will provision every user as a SharePoint user account. That template is still an SP app which means it's run by an SP user. I would look at SharePoint as just an OData service that your app writes back to. You can either use the client object model (SCOM) and write back directly (each user exists as a SharePoint user), or you can proxy the data access from your MVC controller and use a 'service' SP user to connect to SharePoint using SCOM. SCOM is just REST and OData so you can use any web-capable language you choose. I know there are examples for C# and JavaScript (node.js). There may be others.
If you are expecting a lot of volume, I would suggest you host this application on SharePoint Online (Office 365), if possible, and configure it to federate with the rest of your environment. That way you only need to add more space as your data grows (rather than more and more servers as load grows).
Here's a nice overview of the APIs available to you:
http://msdn.microsoft.com/en-us/library/office/jj164060.aspx
SharePoint 2013 Developer Center:
http://msdn.microsoft.com/en-us/library/office/jj162979.aspx
5 minute video on SharePoint 2013 SCOM:
http://www.microsoft.com/office/preview?videoid=1e859ac8-58ca-46d0-a8e0-00f4189761a8&from=sharepermalink-link
Timely blog on anonymous access to SCOM:
http://blogs.msdn.com/b/kaevans/archive/2013/10/24/what-every-developer-needs-to-know-about-sharepoint-apps-csom-and-anonymous-publishing-sites.aspx
There is no point to redesign you application only for replacing your database tables with sharepoint lists. Performance is one issue. Sharepoint list limitation is another issue, you will lose flexibility from relational database design and give your life to a black box design called sharepoint list.
I've been probing around and have not found any hits nor do I have a lot of experience with this topic. I would like to open an excel document (ideally from an asp.net mvc model) and then post this model back to an asp.net mvc controller action for a save/publish through the application.
I would prefer to stay away from excel storing directly to the database, opting instead to go through the mvc action in order to adjust cache, run business rules, etc.
Any tips on places to look or how this is done? I know TFS 2010 does this fine as does sharepoint but I'm not aware of the underlying technologies.
Thank you in advance!!
Jim
After more research it is apparent the answer to this lies in the VSTO libraries. Initially I had a hurdle in place with our virus scanner which would not allow me to build a custom ribbon giving 'access denied' when attempting to load in my .dll's.
Beyond this, the API is fairly straightforward for adding a custom ribbon which has access to WCF, among any other .NET APIs within Excel (or any office tool). This WCF service can invoke the MVC Controllers, if required, or directly perform business logic themselves - the sky's the limit.
I've just installed Orchard and created a sample site. I want to evaluate this CMS to see what it's capabilities are if I could choose it for my CMS of choice for ASP.NET MVC based sites. Has anyone used it to run a custom, highly modified website? Unfortunately no sample sites are provided at Orchard site to see it in action.
I know what my requirements will be and those are quite demanding. I have my own little CMS in ASP.NET MVC 2 which I tailor to my needs anytime I want but it lacks a lot of functionality that you get when you have a bigger team of developers at your disposal like the Orchard has.
The best way to reply to this question is if you can provide some insights into customization and if you can provide a link to a working site.
There are a couple sites out there.. Here are three I have worked on...
These two were for a University, they have a contact us page, Payment system, and also hooks in to multiple databases with a large set of business logic for students and payments. The Registration system also has an updated menu template to deal with drop downs.
http://housing.bathspa.ac.uk/ (v0.5)
http://registration.bathspa.ac.uk/ (v0.5)
My blog jsut has a modified theme which was enough to get me up an running.
http://www.themayneissue.com/ (v0.5)
There are a few open source modules I work on as well..
http://orchardopenauth.codeplex.com/
http://orchardblogml.codeplex.com/
These also allow for customization of the Orchard system
There are two community sites using Orchard, Orchard Gallery and NuGet gallery.
For now me with my team is being writing an appication for nearly two months using Orchard and the only thing I can say is that it is awesome!
Yes, Orchard is very simple for now, but it is so powerfull in the same time. I just love their dynamic shapes and content types. Use it and you'll love it!
And as a bonus:
Just get code from repo and look through it, it shines like a diamond (the only problem is lack of comments). I am sure every MVC developer will find a lot of stuff to learn from it.
There is another web site developed using orchard.
We have a client who is not willing to give us access to their SharePoint environment.
The work involves creating a bunch of custom site columns, custom site content types, page layouts and pages from the custom page layouts. We are going to create this in our environment and the plan is to "move" the pages to our client's environment.
The page layouts will also contain few content editor web parts.
I tried downloading the page to the disk and giving it to the client, but the downloaded page does not contain data entered in the content editor web part.
I thought of creating all the custom stuff (columns, content types, page layouts, and pages) in a sub-site and exporting the sub-site and have the client import the sub-site in their environment. At present I am having an issue but is this the correct way of achieving my goal?
Is there a better way to do this?
Thanks
I've used the export and import commands (stsadm.exe) for subsite content and it has proved to work in most scenarios. Just be aware that there are limitations which may or may not apply to your situation, which are described here:
http://blogs.technet.com/b/stefan_gossner/archive/2009/05/27/limitations-of-stsadm-o-export-import-related-to-publishing-sites.aspx.
Is using a third party tool one of your options? If it is, I would recommend a tool on Codeplex called the Sharepoint Content Deployment Wizard. I have used it to migrate content from one server to another. One downside to this tool is that it does not use webservice calls so it must be run locally from the Sharepoint server. I have used it with WSS 3.0, MOSS 2007 and MOSS 2010.
You can find the details here: http://spdeploymentwizard.codeplex.com/
HTH
I'm curious to know if any basic CMS code has been written for ASP.NET MVC.
The reason I ask is, I'm making a data-driven website for a client, and I've already spent a significant amount of time building it from the ground-up in MVC, but now the client wants content management facilities.
Basically they want to be able to add/edit/remove articles and have revision control.
It would be great if I could somehow 'bolt on' the content management without having to start again from scratch, developing it under an existing CMS.
Should I build the article management and revision control myself, or should I re-use some existing package?
N2 does what you describe - "bolts on" to existing ASP.NET solutions (including MVC).
Also, kooboo is interesting http://www.kooboo.com
(I know this question is old, but it still comes high up for the relevant search terms.)
Today I discovered Meek, http://www.adventuretechgroup.com/labs-meek/, and it was very simple and unobtrusive to add to my MVC project, which I believe is what the original poster would have wanted - bolting on CMS as a feature rather than having it take over your entire site.
Piranha CMS is well suited to bolting on to an existing application. The author of it describes why and how here. To quote straight from that source:
"Our focus is content management and to have a transparent and lightweight API for developers. Piranha CMS has almost no components or helpers that render any HTML at all, it simply provides a database, a manager interface and a routing mechanism for retrieving the correct data for the current request.
In the case of you having an existing website you could actually bypass the routing completely, add one page at a time in the manager interface and then manually load the Page model in you existing page. This would allow you to keep your original application exactly the same but manage the content form the manager interface."
If you are still looking, I've published my new open source CMS here:
MVCwCMS
I'm actively working on it so I will push more updates soon.
Here is also a quick summary as to how Telerik Sitefinity does it:
http://www.sitefinity.com/mvc-cms
in brief - allows you to plug in standard system.web.mvc.controller classes as widgets, lets you use the API for anything including model binding, standard Razor for a view engine etc.
There is also Oxite which I believe is more of a blog engine.
Heve a look at AtomicCms it's a free open source content management system based on ASP.NET MVC 1.0
http://atomiccms.codeplex.com
Check for Orchard ;-)
It is based on asp.net mvc.