I had a very similiar problem, I have an asp.net application that is used to receive inventory. There's a need to print barcode labels to a Datamax O'neil Mark III. It wasn't easy to find, but there is a c# SDK. I found it by registering at Honeywell's support site here:
https://hsm.secure.force.com/thetechsupportall
There's a tab for "Software Developer Resources" that has a link to SDKs, and from that page, if you click "Getting Started with Datamax-o'neil", you should get to a page where you can select your printer model and download the SDK, which includes a dll and documentation.
Options I initially considered were:
Write a separate windows desktop application that contains the inventory receipt and barcode printing functionality. Run this on a computer connected directly to the printer.
Write the inventory receipt functionality in the web app. Store barcode printing requests to a queue of some sort, perhaps in SQL Server. Write a small window desktop app or service that runs on a computer connected to the printer that simply checks the queue and prints barcodes.
Write a self hosted .net web api application that runs on a machine connected to the printer. Have an api endpoint that accepts data and prints a barcode. I could post to here using a bit of javascript in the browser or from asp.net.
As it turned out, my actual solution was much more simple. The above mentioned SDK includes an example application that shows how to print a label from c# code directly the printer using the IP address. I followed that example and was able to send a label to the printer from within my asp.net application.