This thread is becoming something else than the title... I would like to see
some other kind of feedback.

2010/2/5 Diego Mijelshon <[email protected]>

> Steve, Jason,
>
> Just to throw a little more gasoline in the fire... ;-)
> Do you know of ANY popular .NET library that's written in VB.NET?
> NHibernate... no. Castle... no. Log4net... no. NUnit... no. Automapper...
> no. RhinoMocks... no. I could go on.
>
> The thing is, VB.NET was *NEVER* a first class citizen in the .NET world,
> and it will never be.
> While supporting it is always good, the biggest effort that's worth is not
> using VB reserved words.
>
>    Diego
>
>
>
> On Fri, Feb 5, 2010 at 09:44, Stephen Bohlen <[email protected]> wrote:
>
>> I was under the (general) impression that the next version of VB.NET (to
>> ship with the 4.0 framework) is supposed to offer significantly better
>> 'semantic parity' with C# (e.g., any construct you can assemble in C# will
>> have some correlated statement in VB.NET).
>>
>> The grand "two primary .NET languages, each with divergent strengths and
>> weaknesses" experiment has been acknowledged to be largely a failure for the
>> reason you are pointing out and more and so there is an explicit push with
>> .NET 4.0 to bring the languages back into semantic near-parity (with the
>> probable exception of C# likely *never* getting XML-literals added to
>> it...thank god!)
>>
>> While this won't resolve the issues you're point out for those remaining
>> in .NET 3.5, this parity *should* permit those that are willing to go to
>> .NET 4.0 to accomplish much of what's shown here (though with an entirely
>> different syntax, of course). [note that I haven't verified that statement
>> so its entirely possible that you can't construct much of this even in the
>> forthcoming VB.NET 10]
>>
>> After all, if the premise of "right language for the right job" has any
>> traction at all in .NET then just as MS wants me to add a VB.NET project
>> to my otherwise entirely C# solution in order to manipulate XML literals b/c
>> "that language is best for that job", I'm not certain that its all that bad
>> to say to a VB.NET developer that they should add a C# project to their
>> solution to generate NH mappings because "that's the language that's best
>> for that job" :)
>>
>> I think its pretty clear from watching Microsoft's actions (vs. listening
>> to their marketing words) that while both C# and VB.NET are perhaps
>> "first-class CLR languages", its also the case that C# is "first among
>> equals" within MS and thus I think a C#-leaning API for this is perfectly
>> acceptable to pursue even as it might leave VB.NET-only developers with some
>> difficulties adopting it until such time as the VB.NET language team
>> finds a way to plug the 'gaps' that exist between it and C#.
>>
>> Just my two cents.
>>
>> Steve Bohlen
>> [email protected]
>>
>> http://blog.unhandled-exceptions.com
>> http://twitter.com/sbohlen
>>
>>
>> On Thu, Feb 4, 2010 at 4:42 PM, Jason Dentler <[email protected]>wrote:
>>
>>> Hi guys & gals (maybe? probably not)
>>>
>>> I don't want to mention this for two reasons:
>>> #1 - I really like this idea and don't want to be responsible if you
>>> decide to kill it.
>>> #2 - I am fully aware of the contempt that C# coders have for less
>>> developed .NET languages on issues like this.
>>>
>>> A lot of this syntax simply won't work in the current version of
>>> VB.NET.
>>>
>>> Thanks,
>>> Jason
>>>
>>> On Jan 19, 2:20 am, Steve Strong <[email protected]> wrote:
>>> > That's a pretty comprehensive answer!  I can't think of anything else
>>> to
>>> > add over what you've already said - I think an API for creating the
>>> > mappings as a core part of NH would be great, and I also agree that
>>> > keeping the syntax similar to the current XML eases the learning curve
>>> > and also makes porting from XML to code pretty simple.  If other want
>>> > some different representation (FNH, for example), they now have a
>>> > canonical API that they can talk to under the covers, rather than
>>> having
>>> > to generate xml as they do today.
>>> >
>>> > I don't have major concerns about the deviation from Hibernate - it's
>>> > certainly something that we should bear in mind, but I can't imagine
>>> > anything that Hibernate are likely to do wouldn't map to this new API -
>>> > anything they add is likely to be configured through XML (I don't see
>>> > that going away any time soon), and since the proposed API matches the
>>> > XML structure quite closely, I can't see that we'll come across
>>> anything
>>> > insurmountable.
>>> >
>>> > Cheers,
>>> >
>>> > Steve
>>> >
>>> > On 18/01/2010 16:21, Stephen Bohlen wrote:
>>> >
>>> >
>>> >
>>> > > First, some quick impressions:
>>> >
>>> > >     * Its conceptually nice to relegate XML mapping to a less-central
>>> > >       role within NH (e.g., XML now becomes just ONE of MANY possible
>>> > >       'mapping input syntax forms') so I applaud the effort/intent
>>> > >     * Decoupling mapping + config from XML entirely will definitely
>>> > >       support many more alternate declarative inputs (custom DSL,
>>> > >       whatever) in a manner much more flexible than having to depend
>>> > >       on XML as an 'intermediate translation layer' for NH to consume
>>> > >       mapping/config info
>>> > >     * I like that the thrust of the syntax more closely parallels the
>>> > >       nodes/attributes used in the XML files, making it approachable
>>> > >       to existing users of XML mapping files (reasonably shallow
>>> > >       learning curve) even as this leads to a fairly verbose API
>>> > >       (compared let's say, to something like FNH where 'terse API'
>>> was
>>> > >       --from my reading-- an implicit design goal)
>>> >
>>> > > Next, some more specific feedback/issues/thoughts/concerns we might
>>> > > want to consider (in no particular order):
>>> >
>>> > >     * If this API is to become 'authoritative' for mapping, then by
>>> > >       extension it clearly needs to completely support all existing
>>> > >       'xml constructs' fully
>>> > >     * Unlike FNH where the authors have taken the entirely valid
>>> > >       approach of "we're releasing with support for the 80% of NH
>>> > >       mapping constructs that are most-commonly in use, permitting
>>> > >       people to weave in xml-based content for the parts we don't yet
>>> > >       support in code, and over time we will evolve to support the
>>> > >       remaining 20% edge-cases in the fluent API", IMO for NH this
>>> API
>>> > >       shouldn't be released into the codebase until it has 100%
>>> > >       functional equivalency with each and every existing XML
>>> > >       construct and doesn't rely on intermingling xml for any of its
>>> > >       needs.
>>> > >     * Obviously as an existing proof-of-concept this isn't yet done
>>> > >       but it would seem important before making this the
>>> authoritative
>>> > >       API to ensure that adequate spikes are done to be certain that
>>> > >       for every 'statement' presently possible in XML, there's at
>>> > >       least an idea about how to express that in this new API (some
>>> of
>>> > >       the edge-cases that come to my mind initially are things like
>>> > >       the <database-object> elements, stored procedures, filter
>>> > >       statements, where statements, etc. that aren't immediately
>>> > >       obvious from the sample code in the blog post re: how they
>>> would
>>> > >       be addressed -- basically the entire category of things
>>> > >       presently definable in XML that aren't necessarily *directly*
>>> > >       about mapping entities per-se but that are about caching
>>> > >       directives, other DB elements, etc.)
>>> > >     * We need to ensure that adequate consideration is given to how
>>> > >       this API would express things that aren't immediately possible
>>> > >       to state as lambda's without some 'tricks' via reflection, etc.
>>> > >       For example, this kind of statement from the sample code...
>>> >
>>> > > map.Class<Animal,long>(animal =>  animal.Id, id =>  id.Generator
>>> =Generators.Native, rc =>
>>> > > ...won't work where the POID is actually not a public property of the
>>> > > Animal class but is instead a private field and of course the
>>> > > statement (animal => animal._persistentId, ...  won't compile b/c the
>>> > > private field _persistentId is not visible to intellisense (or more
>>> > > importantly, the compiler!).  To be sure, there are 'tricks' to get
>>> > > around this lambda limitation, but I recommend that we should
>>> consider
>>> > > carefully what this will look like when invoked via this API to be
>>> > > sure its as clear as the public-property-based mappings shown in the
>>> > > sample code.
>>> >
>>> > >     * How does moving this fluent-API into the role of 'primary'
>>> > >       mapping API affect NH's 'parity' with Hibernate?  Is it
>>> possible
>>> > >       that Hibernate might get a future feature that would want to be
>>> > >       ported to NH but we would find that this (hypothetical) new
>>> > >       feature isn't expressible in the new fluent API?  Obviously
>>> > >       nobody can predict the future, but the move to this API as
>>> > >       'primary' mapping API would seem to represent a digression from
>>> > >       NH's close parity with H which may impact the ease with which
>>> > >       future features can be ported from H to NH.  This new fluent
>>> API
>>> > >       might very well be a useful/valuable digression (and obviously
>>> > >       there are already OTHER features that have been added to NH
>>> that
>>> > >       take advantage of the .NET platform and don't have an allegory
>>> > >       in Hibernate so diverting from exact parity with H isn't
>>> without
>>> > >       precedent), but IMO we should carefully consider its potential
>>> > >       future impact on porting H features to NH before we decide to
>>> > >       'deprecate' XML as the primary/core mapping API.
>>> >
>>> > > In short: I like the approach, think it will be quite valuable and
>>> > > helpful to anyone trying to write inputs to the NH mapping/config API
>>> > > in the future, but recommend that we consider the above
>>> > > issues/thoughts before introducing this API as a 'replacement' for
>>> the
>>> > > primacy of the xml API in the project.
>>> >
>>> > > HTH,
>>> >
>>> > > Steve Bohlen
>>> > > [email protected] <mailto:[email protected]>
>>> > >http://blog.unhandled-exceptions.com
>>> > >http://twitter.com/sbohlen
>>> >
>>> > > On Sun, Jan 17, 2010 at 5:40 PM, Fabio Maulo <[email protected]
>>> > > <mailto:[email protected]>> wrote:
>>> >
>>> > >     Please, I'm needing feed-back coming from code-review.
>>> >
>>> > >     Try to think at it as a possible mapping-by-code solution for
>>> NH3.0.
>>> > >     I'm seriously thinking to add it in NH directly.
>>> >
>>> > >     2010/1/13 Fabio Maulo <[email protected]
>>> > >     <mailto:[email protected]>>
>>> >
>>> > >         Hi team.
>>> >
>>> > >         I would like to have a code re-view of my last post and
>>> > >         a constructive feedback
>>> > >
>>> http://fabiomaulo.blogspot.com/2010/01/map-nhibernate-using-your-api....
>>> >
>>> > >         The post, and overall the code, is basically an example about
>>> > >         how implement a custom API to create mappings by code.
>>> > >         That is an invitation to everybody want create his own API
>>> and
>>> > >         even an invitation for FNH team to use the Hbm* classes
>>> > >         instead generate XML.
>>> >
>>> > >         That said, seeing how things are going in each framework, NH
>>> > >         needs its own mapping-by-code.
>>> > >         Two matters here:
>>> > >         1) API definition
>>> > >         2) usage of Hbm* or directly create metadata (classes of
>>> > >         namespace NHibernate.Mapping)
>>> >
>>> > >         What is clear is that our implementation will supports
>>> > >         anything supported by XML and, probably, we will improve some
>>> > >         of actual "conventions-interceptors" (as, for instance,
>>> > >         INamingStrategy & Co. ).
>>> >
>>> > >         --
>>> > >         Fabio Maulo
>>> >
>>> > >     --
>>> > >     Fabio Maulo
>>>
>>
>>
>


-- 
Fabio Maulo

Reply via email to