Hello, and apologies for the forth-coming semi-rant,

I'm currently evaluating the feasibility of upgrading a 2-year-old
MonoRail Web site running RC2 to the latest or near-latest trunk. Now,
I don't expect upgrading from a 2-year-old binary to a new one to
"just work," but when moving from a "release candidate," I really
don't expect to see that many changes, at least not without a clearly
defined migration. The number of breaking changes, however, is
astounding. Here's a sample overview:

* MonoRailHttpHandler.CurrentContext seems to be gone. This is huge
and causes a lot of problems for this site. Is the preferred method to
simply favor the ASP.NET-provided HttpContext.Current property to
access these variables?

* IRailsEngineContext has changed to IEngineContext. Irritating, but a
find and replace is simple enough. Similarly, ExecuteEnum has changed
to ExecuteWhen. A silly breaking change, but okay.

* The IFilter interface has changed to include an IControllerContext,
which seems to be new.

* IsPreConditionSatisified() on WizardStepBase is now public instead
of protected, breaking any code that overrode that method. Simple
enough to fix.

* WizardStepBase has lost the Redirect() overload that took a single
URI, which was useful for redirecting to external sites like PayPal or
Google Checkout. I suppose the new replacement is RedirectToUrl().

* The Initialize() method of WizardStepPage is gone. What is the
replacement? The constructor?

* The interface for IWizardController has changed in that the GetSteps
() method returns an interface instead of an concrete class. Fair
enough.

* The Initialize() method on Controller is now public instead of
protected. Okay.

* The SelectMethod() method on SmartDispatcherController has gained an
additional parameter, actionType. Straight forward.

* The IParameterBinder interface has changed with new parameters in
the methods. Simple enough.

* The UrlReferrer property on IRailsEngineContext has disappeared.
UnderlyingContext.Request.UrlReferrer is the presumed replacement.

* Controller's ObtainDefaultLayoutName() now returns a string[]
instead of a string. This seems odd to me.

* SmartDispatcherController's CreateAbsoluteRailsUrl() is no longer
available. We can work around.

* ControllerFactory's CreateController() method no longer has an
overload that accepts an UrlInfo object.

* PaginationHelper's CreatePagination() overloads seem to now require
an IEngineContext and is now generic. A simple enough change.

* In ViewComponent, the RailsContext property has been renamed to
EngineContext. Does a prettier name really justify a breaking change?

* The addition of the Validator namespace causes a nasty namespace
collision. But is cosmetic.

* The Logger and Context properties on the Controller class are no
longer public, which makes a few logging handlers break.

* The PropertyBag property is no longer public on controllers. How can
my BeforeAction filters now inject data into the controller? Define my
own interface for this? (Think of an [AddCartToPropertyBag] or an
[AddMenuToPropertyBag] attribute that decorates a class.)

* The protected virtual InternalSend() method on
SmartDispatcherController no longer exists. We had been using a lock
here to work around NVELOCITY-12, a severe threading problem in RC2,
and a few other sundry logging statements happen here. I assume the
new method to override is InvokeMethod()?

... I gave up at this point, seeing as it will take a lot of revisions
to get the code to even compile.

So the question, and point of this post, is: Has anyone ever
realistically upgraded from RC2? We certainly are pioneering a new
usage of the phrase "release candidate." There seems to be no
migration path here.

At this point, I reckon that it will be easier to just keep this site
on RC2 until its end of life, unless anyone has some insightful
recommendations. I suppose I could always do "baby upgrades" to
previous trunk points in history where there are fewer breaking
changes to deal with all at once, but it doesn't seem worth the
effort. It seems it'd be nearly as difficult to jump ship to a
completely different framework.

RC2, at least, has been a great product and I'm very thankful to the
community for it, but I must admit that all of these changes has me
concerned about the direction and health of the project. Any insight
that can be provided would be appreciated, and thanks for listening to
my rant! =)

V/R,
Nicholas Piasecki

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to