Grid computing enables systems to share geographically distributed resources as they pursue common goals. In a large-scale Grid systems discovery of heterogeneous resources is crucial to achieving scalable performance. The Grid resources need to be discovered, selected and invoked quickly and efficiently in order to satisfy the needs of a demanding environment. In this paper, the authors survey the prior work done on this field in a simple and elegant manner. This paper compares favorably all the resource discovery methods in static and dynamic Grid applications.