I'm about to start developing a custom business application on top of Sharepoint 2010. I haven't done anything on this product but client insists on it so I don't have a choice.
I have to build a complex business application that will use its own DB on MS SQL 2008 R2. Authentication will be done using client certificates and will connect to AD FS on the server side, but as this app will run under Sharepoint all this will be done by it. I won't have to handle authentication/authorisation.
Application will run processor intensive business processes and it will support three different user access levels (admins, managers and users). Every business process will have at least one screen, but most probably more than just one. For instance I will have something similar to master/detail views, and I guess each of these should be a separate screen/webpart/whatever.
Application will display custom controls that will support business processes. These controls will be custom made, because they're not used in usual applications.
Application should be client rich, so I would like to use client libraries like jQuery or even better ExtJS if at all possible. It should be asynchronous using Ajax functionality.
- I can't decide whether to go with Visual web parts or Silverlight?
I know there are other possibilities as well (like running separate Asp.net MVC applications inside Sharepoint), but I wouldn't want to do it that way even though it would be much easier for me to develop such applications, because I'm primarily hardcore Asp.net MVC developer. Which one will make itpossible to create a rich user interface?
- Develop on Sharepoint Foundation 2010 or Sharepoint Server 2010?
I've seen differences in services they support, but since I don't have any development experience in Sharepoint I can't really say which ones are going to be imperative for my application. I would like to do it on Foundation, because I can re-sell the app without additional costs that Server brings with its licensing.
- Which services will most probably be used?
I will most probably use Business Connectivity Service, but what about others like Managed Metadata Service, Secure Store Service etc?
- Should I provide a service layer API?
I've read I could also provide my own WCF/Web service that would be my entry point to my business layer processes. Much can be done on the BCS level within Sharepoint then, but I'd still need my rich custom controls, that would display data in unusual ways.
- What about sandboxed solutions?
Is this something I should use or not? Will it be too restrictive for actual use?
I don't like inventing water so I'd like to ask you guys that've already done this kind of stuff and know which one is better/faster/easier/performant/etc.