The Ramblings of Two Microsoft .NET Developers, TFS, and Visual Studio ALM Guys --- "Yes, we are both named Ed."

Microsoft Office Accounting 2007 SDK



The SDK consists of two different types of libraries, Implementation and the Interface. I love this API, they developed it for ease of use and scalability for future functionality in mind. The Implementation assemblies are not publicly expose and undocumented (protecting the developer from himself ;) ). The Interface assemblies are the interface to the implementation assemblies. There are several benefits to having the SDK architecture this way.

  • Do not have to add references to implementation assemblies, freeing up the the possibility of being too tightly coupled to the implementation logic when the assembly version could change anytime.
  • Follows the rule "Program to the Interface and not the implementation"

This API architecture style follows very much inline with how MS did the Team Foundation Server Object Model.

The SDK allows the develop to tap into any area of MOA2007:

  • UI Add-In
  • Business Logic Add-In
  • Reporting Applications
  • Integration Applications
  • Specialize Applications

The SDK is packed full of samples and the documentation is right on.

I know, I know.... Accounting software is extremely boring but as my partner in crime Ed B has pointed out to me numerous time "This software is essential to business" and accounting software only has the minimal functionally in accordance with accounting needs but business never works great with "out of the box" functionality, sure it works but we want the software to match the process of the business. Being able to add value to accounting software with ease via a powerful API is exciting, the possibilities are endless and there is much money to be made with add-on's. This is a great API for ISV's and "Micro" ISV's.

The Interface assemblies in the SDK are versioned. I dig this. Let me break this down. Since we are programming to the interface and not the implementation, MS can change stuff up in the implementation assemblies and it will not break my production code. But what if they need to change some stuff up in both layers to add new functionality that they want to expose to the developers. In this case they would develop a new Interface assembly and note it as "IwhateverV2". As a SDK consumer I can use this new interface assembly or I can not, and my code will work just fine. To get a some of this new functionality exposed in the new Interface I can upcast my return Interface to the new object. Currently there are 2 versions of the interfaces in MOA2007, all the new Interfaces are appended with V2, which makes it very easy to keep track of what's what. For example: when MOA2007 was Small Business Accounting we had IAccountFactory now that it is Office Accounting we have IAccountFactoryV2. We can still use the old if we want. The rule of thumb is, If you are creating a new project with MOA2007 then use the V2 interfaces, If you already have production code and are writing new code or doing maintenance coding for the same project you will probably want to upcast to the new interface version.

Ed B and I will be developing some good examples using this SDK over the next few weeks to share with the community. We are very excited about MOA2007.

Ed K.

Posted in


Tuesday, April 03, 2007 4:52:06 AM (Pacific Daylight Time, UTC-07:00)
"Ed B and I will be developing some good examples using this SDK over the next few weeks to share with the community. We are very excited about MOA2007."

Me too, but where can I find your examples now ?

Regards,
Peter

Saturday, April 14, 2007 6:43:42 PM (Pacific Daylight Time, UTC-07:00)
Sorry, we have been so behind on posts and posting examples. We are currently doing a project with the SDK. Once we get some free time we will post what we have learned, best practice and some good examples.

Thanks,
Ed K.
Eddie Kisinger
Name
E-mail
(will show your gravatar icon)
Home page

Comment (Some html is allowed: a@href@title, b, blockquote@cite, em, i, strike, strong, sub, sup, u) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

[Captcha]Enter the code shown (prevents robots):

Live Comment Preview