I hope that everyone is having a super productive and challenging week. On this thought, I thought on challenging myself and talk a bit more about the AX 2012 services architecture. Please refer to my post about AX 2012 Services Types for more information on services.
Ok, so what’s new in AX 2012 around services? Well, I have to say that things have change quite a bit for the better as in Ax 2012 we see that Microsoft has expanded the support for WCF beyond the basic HTTP and HTTPS bindings. In fact, the Microsoft Message Queuing (MSMQ) and BizTalk Server adapters provided in AX 2009 have been removed, but cheer up; Microsoft is providing the same functionality through WCF.
The following diagram depicts the new AX 2012 architecture.
As we can see in the above diagram, the AOS is the WCF service host in AX 2012. This idea extends even further, the services that are hosted by the AOS work both with internal and external applications. So does this mean that we don’t need IIS anymore?
Well, yes and no. If you are planning to have only internal application using the WCF services, then you no longer need IIS. However, if the services are going to be consumed by external application, then you have to host the services on IIS.
Also, it is important to point out that the WCF services in AX 2012 are contained in a single WSDL file. This simplifies the use of services when using visual studio for example. The reason is because we would just need to add one single reference instead of 90, which is cool and smart.
Another cool new architectural change of AX 2012 services are the data contracts, and the business operation framework.
AX 2012 now supports the use of .NET and X++ types as data contracts to use as service operation inputs, and to also return parameters. The following are the new changes:
o You can pass complex data types without having to explicitly implement XML serialization and deserialization from them.
o The data contract serialization and deserialization is now handled by Windows Communication Foundation (WCF).
o X++ provides support for data contract functionality through the DataContractAttribute and DataMemberAttribute attributes (which I will cover in my next post)
o Any .NET type that is serializable by WCF can be used as a parameter or return type by a service in Microsoft Dynamics AX 2012.
Another new enhancement of AX 2012 is the Business Operation Framework, which is a service operation exposed from the AOS. Remember that in AX 2009 we would have to use the RunBase batch class to execute AIF calls asynchronously? In AX 2012, we can now use the business operation framework, which support both synchronously and asynchronously operations. In addition, although the RunBase framework is still supported in AX 2012, Microsoft recommends using the new Business Operation Framework instead because it provides a clean separation between the data contract, user interface and the service operation.
This is all for now and I hope this post can be helpful to you. Please check my blog again later this week as I will be posting how to create services in AX 2012 and consume them from C# this week soon.