Depends if you want optimistic or pessimistic locking.
Sounds like you want to be pessismistic so sp_applock , may be best for you.
As for messaging back to a client app that a base table has changed, again depends....
You may want the clients to continually select from the table where row timestamp > lastchecked or you may want to do something funk with service broker.