Asp.net MVC/Silverlight and Sharepoint 2010 integration - asp.net-mvc

Just a sidenote: I'm not sure whether I should post this to serverfault as well, because some MOSS admin may have some info for me as well?
Additional note 1: I've found this document (Asp.net MVC 2 & Sharepoint integration) if anybody with sufficient expirience is willing to comment on its content whether this can be used in my described scenario or not.
Additional note 2: I've discovered (later) that Silverlight is supported in Sharepoint 2010 so I'm considering it as well. So if anyone would comment on silverlight integration as well.
A bit of explanation first (without Asp.net MVC/Silverlight)
Is it possible to integrate the two? Is it possible to write an application that would share at least credential information with MOSS?
I have to write a MOSS application that has to do with these technologies:
MOSS 2010
Personal client certificates authentication (most probably on USB keys)
Active Directory Federation Services
Separate SQL DB that would serve application specific data (separate as not being part of MOSS DB)
How should it work?
Users should authenticate using personal certificates into MOSS 2010
There would be a certain part of MOSS that would be related to my custom application
This application should only authorize certain users via AD FS - I guess these users should have a certain security claim attached to them
This application should manage users (that have access to this app) with additional (app specific) security claims related to this application (as additional application level authorization rights for individual application parts)
This application should use custom SQL 2008 DB heavily with its own data
This application should have the possibility to integrate with external systems as well (Exchange for instance to inject calendar entries, ERP systems etc)
This application should be able to export its data (from its DB) to files. I don't know if it's possible, but it would be nice if the app could add these files to MOSS and attach authorization info to them so only users with sufficient rights would be able to view/open these files.
Why Asp.net MVC/Silverlight then?
I'm very well versed in Asp.net MVC (also with the latest version) and I haven't done anything on Sharepoint since version 2003 (which doesn't do me no good or prepare me for the latest version in any way shape or form). This project will most probably be a death march project so I would rather write my application as a UI rich Asp.net MVC application and somehow integrate it into MOSS. But not only via a link, because I would like to at least share credentials, so users wouldn't need to re-login when accessing my app. Using Asp.net MVC I would at least have the possibility to finish on time or be less death marching. Is this at all possible?
I haven't done any serious project using SIlverlight, but I will sooner or later have to. So I'm also considering a jump into it at this moment, because it still might make this application development easier than strict Sharepoint 2010.
Questions
Is it possible to integrate Asp.net MVC/Silverlight into MOSS as described above?
If integration is not possible, would it be possible to create a completely MOSS based application that would work as described?
Which parts of MOSS 2010 should I use to accomplish what I need?

The Patterns and Practices Sharepoint Guidance release on CodePlex has a model-view-presenter equivalent to MVC but targeted at SharePoint development.

Related

Access SharePoint document library using ASP.Net MVC

I have developed an ASP.Net MVC application which is Azure Single-Sign-On supported.
In the existing application, I wanted to consume online SharePoint REST API's to work with the document library(Get folders/files,upload, add, replace and delete etc.)
Is there any way to do/achieve this task.
Thanks in advance!
yes, the supported way is to use SharePoint CSOM which is now in .net standard. Please see this article were you may find a movie that shows the whole process to add nuget, authenticate the app and get some data from SharePoint, and here is he msdn support.
Some CSOM examples how this works

Offline and online application using asp.net mvc

brief history of my project:
2 versions of application, one running in windows form, another running in the web using asp.net
current task: to revamp the project to use asp.net mvc 4 to use only one version of code base.
In final product, there will no more windows form; but only the asp.net mvc. this is with regards with short development timeline.
concern:
my concern is for offline users.
maybe i can host the asp.net mvc4 offline using localhost and sql lite.
When offline users click on check update, there will be able to get the latest version of asp.net mvc 4 ?
any other better solution that is feasible ? i prefer the architecture fits the vb.net
Have you take a look at SPA. That kind of projects, by nature, can work in online and offline mode. One thing to take into account is the ammount of data that the offline mode should handle (most SPAs are using the local storage for offline use, which is a little small)
By looking at this site you will find a lot of resourses on SPA.
http://www.johnpapa.net/spa/
Deploying MVC app with Sqlite in localhost will be quite a challenge in term of maintenance. Maybe you can develop HTML + jQuery solution which can run locally on client system and make use of client cache to hold the temp data. Also it can interact with live app by making ajax calls.

Alternate TFS Web Interface

I know TFS has a web server that gets installed with it, and that's great. I know it integrates very tightly, and very well with Sharepoint, and that's also great.
What I'd like to know though, is since the WSDL's for TFS are public, essentially making the API to send and receive data from it public as well; are there any alternate, non-Microsoft interfaces to TFS that provide most or all of the functionality, with consumer-driven enhancements, such as charting, or reporting solutions not found out of the box?
I've searched the almighty Google and Bing, and they are proving very difficult to find answers from.
You can create your own solution using SharePoint Enterprise edition and a combination of Excel Services reports and SQL Server Reporting Services reports; A SharePoint solution is the closest you'll find to something.
You can use the TFS SDK and object model to create your own application, but most people don't go very deep because Microsoft's Web Access tool is a capable client tool for most teams. There were also major improvements just released in the new TFS 2012. In fact Web Access started out as a 3rd party tool and there are some ways you can extend it.
There is one app I know of off the top of my head that has a web interface to TFS that is very simple; it can be found at http://techdayskanban.codeplex.com
There is also an example of extending the TFS Web Access at http://tfstimesheet.codeplex.com
Codeplex is a good place to check around because it is open source.
A commercial example of a product that extends Web Access can be found at http://urbanturtle.com though It seems you are looking for something more stand-alone.

Does TFS 2010 have web services one can use to query check-ins, work items, etc?

I have figured out that TFS 2010 has the following web service endpoint
http://tfsservername:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx
Are there ones to get a feed of check-ins, work items and other TFS items?
Update: yes! Visual Studio Online introduced a new REST API, and on-premises installations of TFS 2013 have access to this new API.
In versions of TFS prior to TFS 2013:
tl;dr: Not in any way you're going to want to consume.
Team Foundation Server does expose SOAP web services that the clients use to talk to it. However, it's not something that is publicly documented, it's not supported by Microsoft (meaning they can, and will, change version to version) and, quite frankly, it's remarkably unlikely that the effort required will be worth the result.
Although the web services are well designed, some of the web services require a significant amount of client state. This is particularly true of the work item tracking web services. The clients basically contain an entire "rules engine" for processing and verifying changes to any fields. The client must, basically, be able to understand the process template and process all these state changes before submitting an updated work item back to the server. The server will also run the rules and verify that the client made only legal changes.
The rules engine is not exposed publicly. You would have to reverse engineer it.
This also makes some underlying assumptions like your web services stack can successfully speak NTLM2 and Kerberos properly (most can't, outside of the .NET web services stack, although some an support NTLM version 1 to some degree, which will only give you the illusion that you should be authenticating.)
It's therefore strongly suggested that you just use one of Microsoft's APIs for accessing TFS, either the .NET or the Java SDK.
(I actually worked for a third-party company that successfully wrote a Java front-end to TFS by talking to the web services. It was a fair challenge for us -- especially the work item implementation -- and this was the full-time job for several of us. I wouldn't recommend it as a side project.)
Just like Edward mentioned, the TFS web services aren't meant for public consumption.
On the other hand, you might want to give the "OData Service for Team Foundation Server" a try.
It offers a really nice REST-like interface - thus callable simply by issuing HTTP requests, just like you were willing to do with the web services.
To learn more, check this blog post: http://blogs.msdn.com/b/briankel/archive/2011/10/26/odata-service-for-team-foundation-server-2010-v1.aspx

how to create a web part to track page creation time

I am new to SharePoint Server 2007 Web Part, and I am using SharePoint Server 2007 on Windows Server 2008. I program using VSTS 2008 + C# + .Net 3.5.
I want to create a simple web part which could display page creation time and modified time (display such time information at the bottom of a web page).
Any reference code samples or tutorials -- anything helpful for a newbie of SharePoint 2007 Web Part or this specific time tracking issue is helpful.
thanks in advance,
George
Developing for SharePoint is a big leap - for example, the official scenario is doing your development directly on a server. So most SP devs end up building a virtual machine for their development.
Creating an SP dev environment.
Creating a custom web part for SP2007.
Personally, I use the VSeWSS add-in (version 1.3, March CTP) for developing sharepoint "solutions" (really, cab files that wrap up functionality) that contain "features." Many devs prefer other tools, such as STSDEV or WSPBuilder.
Once you get that far creating the web part you need should be simple.

Resources