A widget is nothing but a plugin that inherits from
IWidget so it has to implement the method
GetDisplayWidgetRoute. You might decide to develop a widget when you need to display one or more public views in the frontend of a shop. With a widget you are able to customize the output of the frontend and inject the content of your widget whereever you want by rendering it into the desired WidgetZone (for more information about widget zones read the topic Widget Zones).
If you are not familiar with developing plugins for SmartStore.NET please also have look at the tutorial How to write a Plugin.
In this method you enter the widgetzones where you want your widget to be rendered.
In this method you define the route that gets called when your widget should be rendered.