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.