Any particular reason why you'd need it to be one contiguous mesh? It's not made that way in real life. A boolean with some tinkering and clean up should work.
Starting from bottom up shows the steps I did. Start with NURBS cylinder, project circle on cylinder, trim, convert to poly, extrude edges and Proxy Subdiv (smooth)
Replies
(just curious)
http://www.bcrgroup.biz/magnifying%20glass%202.jpg
http://i57.photobucket.com/albums/g225/pigopotamus_photos/DSC01247.jpg