Let's say that I have to develop a questionnaire form for a public-facing web site which is based on MOSS 2007. The customer has a license to use InfoPath Forms Services. Should I use InfoPath forms services to develop the new questionnaire? The answer is "It depends."
In most cases, I would want to use InfoPath forms at the beginning, but more than likely, as requirements for the questionnaire becomes complex, I will eventually drop the InfoPath approach and switch to a custom asp.net form. From my experience, here are the pros and cons of InfoPath forms services:
Pros:
- Ideal for simple forms
- Easy to build a form – no coding involved
- InfoPath form itself is an xml document.
- Support versioning
- Works very nicely with SharePoint custom workflows as a workflow association tool.
Cons:
- A web browser-enabled InfoPath form does not support all features of InfoPath client.
Inflexible -- Difficult or impossible to customize (well, you can argue that you can hack the xsl file of InfoPath)
- No support for image buttons
- No support for html
- No support for tree control
- Difficult to support Forms Based Authentication
- By default, InfoPath cannot support SharePoint web services data connections in FBA.
- Forms Services does not support username() function in FBA. This means that InfoPath form does not recognize the current user.
- Difficult to perform automated web test against Forms Services.
- Difficult to support automated deployment. Basically, you have to unzip the xsn file and programmatically modify the manifest.xsf file, and zip back to the xsn file for automated publishing.
- The way that Forms Services supports deployment of InfoPath forms is quirky – It creates SharePoint solution packages with GUID and creates features with meaningless names on the SharePoint Features folder.
If a form application that I need to develop is simple enough and does not need to worry about an automated deployment and heavy customization, InfoPath forms services is a good approach. If not, developing a form with an alternate approach such as a custom asp.net page takes less time for development and deployment.