Internet of Things refers to a paradigm consisting of a variety of uniquely identifiable day to day things communicating with one another to form a large scale dynamic network. The integration of these heterogeneous things in the constrained network is a challenging issue, for which service oriented and architecture based solutions are considered to be useful. The key element of any service oriented paradigm is service discovery which allows the client to get access to the right service at the right time to complete the requested tasks. This paper presented a comprehensive survey of major solutions for service and resource discovery detailing techniques and features used in existing systems. The survey presented the findings in tabular representation and outlined the proposed aspect oriented middleware framework for IoT highlighting context awareness and solving certain pitfalls in the existing service discovery approaches. The survey results might be helpful in deriving the limitations of the existing protocols in literature and identify future research opportunities in service discovery.