NAV Web Service Programming Resources

Here are some of the resources I found helpful for learning to develop Dynamics NAV web service based applications.

C/AL Programming:

Introduction to CAL Programming
This provides a good overview of the basics of CAL programming, which can become necessary in building a web service applications when a custom codeunit or page extension is required.

Setting up Web Services:

Vjecko Web Service Recorded Session
Vjecko.com has a lot of detailed articles about web service programming, but this older post has a pdf and recorded session that shows how to expose and connect to web services from a .NET application. Unfortunately, he shows how to create Web Service references in .NET using the now-deprecated Web Refrence method (from .NET 2) instead of the more current Service Reference method.

Using Service Reference to Connect to Web Services
This explains how to use Service Reference, using code instead of XML web.config configuration, which I found difficult to configure. (Each time I updated the service reference, I would have to reconfigure the XML).

Migration to SQL Server from C/SIDE Database
In order to use web services, you don’t need to be using the Role Tailored Client, but you must be using the a SQL server based NAV database. Web Services can be configured and exposed using the Classic Client for SQL Server Databases.

Debugging Code Called by Web Services
C/AL code won’t necessarily execute the same as it did in the Classic Client when called as a Web Service. C/AL code called as web service execute in the NAV Server tier, instead of the client. Certain functions aren’t available for code running in the NAV Server, and some design changes need to be made (for example, CONFIRM dialogue boxes don’t make sense in the context of a web service). To debug the codeunits called through web services (or the Role Tailored Client), you will need to use Visual Studio.
More information.

Deploying a .NET Application:

Deploying to IIS After you’ve built a .NET application that consumes .NET web services, you’ll have to find a way to deploy it on your servers, or Azure. Connection strings can be used to specify different NAV servers for different environments (like development, QA, and prod).