Building Multi-User Services with AF SDK

Discussion created by Bhess Employee on May 27, 2015
Latest reply on May 29, 2015 by Lonnie Bowling

Raymond Verhoeff  and I gave a talk by this title at the San Francisco UC, during Tech Con, earlier this month.  The Dev Club team has asked me to give a brief synopsis.


A bit of background--I've been involved with the PI Web API product since its inception.  PI Web API is built on top of AF SDK exclusively, and in many ways I do what many of our PI Developers Club members do on a daily basis: I program with the AF SDK!  And there's nothing special that I get in terms of API calls or other "secret sauce" that's unavailable to developers outside of OSIsoft.  I do have one distinct advantage, though: when I have questions or problems, I have direct access via phone, email, and IM to Chris Manhard, David Hearn, David Moler, Ryan Gilbert, Eddy Kuwana, and all of the other really talented folks on the AF SDK team.


By far, the biggest challenges that we've had to address in building PI Web API are around providing access to the PI System that is simultaneously performant, concurrent, and safe.  The AF SDK is designed and built for safe and performant single-user access.  Building multi-user applications like websites or REST APIs on top of AF SDK requires careful programming and an understanding of some of the implementation details of AF SDK.  From time to time we've seen postings on PI Square (and formerly vCampus) asking for suggestions and advice on building out multi-user applications with AF SDK.  In this talk and the corresponding documentation, I've tried to walk through some of the wisdom that we've acquired in this space throughout the process of building PI Web API.


Like all of the OSIsoft staff presentations, the video is freely available on the OSIsoft website.  There's also a GitHub repository that contains the source code and a detailed walkthrough.


Happy coding!