Detecting changes that occurred while the client was offline
This is the job of Change Tracking and Change Data Capture. They're both technologies derived from Replication (one from Merge, one from Transactional) and are used by the Sync Framework. With CT and/or CDC an application can connect to the database and ask 'what data changes occured since last time I was connected?'. These scenarios address Occasionally Connected Systems like laptops, mobile devices and the like.
Detecting changes while the client is online
This is the job of Query Notifications. The technology is based on something similar to how online indexes are maintained, and is capable of actively notifying the client when data has changed. The main scenario addressed by QN is cache invalidation.
Application techniques
Other techniques are application specific like triggers, rowversions, timestamps, code hooks in ORM and so on and so forth. None of them are very reliable, as the engine does not understand them as change tracking and certain operations that shouldn't be allowed are allowed (think at all the operations prohibited when replication is enabled, like spiting and merging partitions). Some are even worse than such extreme cases, the typical example being rowversion and timestamp columns, which are hopelessly helpless at detecting rows that were deleted.