A View is fine but because there is a format for files and it's
natural to show/deliver content with a view.
The view is going to be very THIN though. Basically nothing but a
wrapper around what iCalendar really is which is data and therefore
the Model domain. The view will essentially be Data::ICal->as_string +
Content-Type => text/calendar + file disposition name something
reasonable with a .ics or .ifb. I think the model should do all the
heavy lifting. That allows it to be easily repurposed in other places,
tools, and tests.
I'm somewhat surprised no one has already done this. Casual searches
look like maybe it's been solved before but not released to the CPAN.
I was toying with a similar project years ago but never got the buy-in
from the project leader. :P