ASP.NET Scalability Panel

Document Sample
scope of work template
							                      http://www.dotnetrocks.com


                Carl Franklin and Richard Campbell
                interview experts to bring you
                insights into .NET technology and the
                state of software development. More
                than just a dry interview show, we
                have fun! Original Music! Prizes!
                Check out what you've been missing!



                           Text Transcript of Show # 247
             (Transcription services provided by PWOP Productions)




                   Mark Pollack on Spring.NET
                         June 19, 2007
                                Our Sponsors




                         http://www.devexpress.com




http://www.code-magazine.com                    http://www.telerik.com
                                                http://www.telerik.com/




http://www.code-magzine.com/
                                                                  Roy Osherove on Regular Expressions
                                                                                   September, 14 2006

Geoff Maciolek: The opinions and viewpoints               Richard Campbell: Lotus Land. Hi, I am coming
expressed in .NET Rocks! are not necessarily              to you live from Lotus Land.
those of its sponsors or of Microsoft Corporation,
its partners or employees. .NET Rocks! is a               Carl Franklin: You know, I could totally chop up
production of FranklinsNet, which is solely               what you just said to say, ‘I’m Hi, in Lotus Land’.
r e s p o n s i b l e f o r its content. FranklinsNet -
‘Training Developers to Work Smarter.’                    Richard Campbell: Well, I have told you already
                                                          about the ‘Mowing t h e Mushrooms’ things; you
(Music)                                                   know what it's like around here.

Lawrence Ryan: Hey, Rock heads! Put a little              Carl Franklin: Lewis Carroll would have loved to
spring in your step and a little scotch in your           have lived there, I am sure.
snifter. It’s time for another stellar episode of
.NET Rocks! the Internet audio talk show for              Richard Campbell: Vancouver can be an
.NET developers with Carl Franklin and Richard            adventure.
Campbell. This is Lawrence Ryan announcing
show #247 with guest, Mark Pollack, recorded              Carl Franklin: Hey, you know, I just made up a
live Tuesday, May 22 nd, 2007. .NET Rocks! is             joke; tell me what you think. How many Mac
brought to you by FranklinsNet - ‘Training                developers does it take to copy a file?
Developers to Work Smarter’, and now, bringing
the VB. N E T M a s t e r Class, onsite to your           Richard Campbell: I don’t know. How many?
development team, online at www.franklins.net.
And by ‘telerik’ - combining the best in Windows          Carl Franklin: What’s a file?
Forms and ASP.NET controls with first-class
customer service, online at www.telerik.com.              Richard Campbell: Nice.
Support is also provided by DataDynamics -
makers of ActiveReports.NET, simple, powerful             Carl Franklin: Okay.
and cost effective reporting for Windows Forms
and ASP.NET Web Applications, online at                   Richard Campbell: Okay.
 www.datadynamics.com;           and      by CoDe
Magazine - the leading independent magazine for           Carl Franklin: I can’t wait for the letters to come
.NET       developers,     online    at www.code-         in on that one.
magazine.com. And now, the man who got to
show up late this week because he was up all              Richard Campbell: Here you go; here they
night restoring his uncle’s Guy Lombardo record           come.
collection, Carl Franklin.
                                                          Carl Franklin: Well Richard, let’s just get right to
Carl Franklin: Hey there! Welcome back to .NET            it. Here is the segment we call “Better Know a
Rocks! It's Carl Franklin; I am here in Connecticut       Framework”. And your ‘Better Kn o w a
- New London Connecticut to be exact, the hippie          Framework’ factoid for this show is the Process
side of Connecticut. Yeah, a s o pposed to the            Class      also     in    System.Diagnostics. And
Martha Stewart side of Connecticut.                       System.Diagnostics.Process is something you
                                                          know if you have ever done sort of like, shelling
Richard Campbell: All right.                              out to run a program -- run a console application
                                                          and run a windows application or something.
Carl Franklin: Yeah, this is the South Eastern            Maybe you want to read the standard output that
Coast of Connecticut, and on the West Coast of            comes out of that console application, you can
Canada in Vancouver Island British Columbia,              use a process to do that and process the
Mr. Richard Campbell…                                     standard output and also send standard input to
                                                          it, but did you know that you can also create a
Richard Campbell: And now over here in                    process object by using the method ‘get process
Canada; we call this area, Lotus Land.                    by ID’ o r ‘get current process’ o r a ‘get process
                                                          by name’.
Carl Franklin: Why is that?

Richard Campbell: It’s just that the idea that late       Richard Campbell: Nice.
back -- where people eat Lotus flowers. I don’t
know, it's one those weird things; the guys at            Carl Franklin: And then you pass the name of
Toronto were always envious.                              the process as a string, and then you get the
                                                          process; and then in the process you can get the
Carl Franklin: Okay. Lotus Land.                          threads, the modules, you can get the process
                                                          handle, of course the ID, you can get the threads


Transcription by PWOP Productions, http://www.pwop.com                                          Page 2 of 15
                                                              Roy Osherove on Regular Expressions
                                                                               September, 14 2006

that are in that process, you can get -- you can
enable events, and get events that happen on          Richard Campbell: Yeah, well, that’s why I wore
that process, you can get the main Window             a T -shirt underneath; didn’t want to terrify
handle, the main Window title. You can get the        anybody - tried to be civilized.
working set, the machine name -- of course you
can specify the machine name too, if you have         Carl Franklin: You never saw anybody with a
access to other machines. You can get info about      video camera pointed at you, pulling up your
processes on those machines.                          pants, that…

(00:05:15)                                            Richard Campbell: Which is funny, because I
                                                      was a in a video recording booth.
You can also get information about memory,
priorities, and threads, all sorts of great           Carl Franklin: So, how is it going? How is RunAs
information about the process. So you can close       going?
the process, kill it; you can get the start time --
really, really useful. If you are doing anything      Richard Campbell: It's great; we got three
working with other applications and you need to       excellent shows at TechEd and we -- just the sort
control or view or monitor what’s going in a          of people you want, folks like Isaac Roybal who
process, you can create a process object against      was one of the IIS7 guys - all of Microsoft folks,
the running process or you can create a new           because they are generally hard to get at, but at
process - and like you would do to shell out.         TechEd they are right there. So, it was an
                                                      opportunity to really look at the new technologies,
So, that’s it; “Better Know a Framework” for today    network access protection and the new
is System.Diagonostics.Process.                       management features in IIS7 and so on. So, we
                                                      really had a great time with that, and it was
Richard Campbell: Nice.                               actually the first time Greg Hughes and I met face
                                                      to face.
Carl Franklin: Check it out.
                                                      Carl Franklin: Wow!
Richard Campbell: Awesome!
                                                      Richard Campbell: W e had done ten shows
Carl Franklin: So, Richard you usually, at this       together, all remote, and had never met. So
time read an email.                                   TechEd was the first time we were actually sitting
                                                      together and had an excellent time in that
Richard Campbell: Yeah, but you know I have           respect. The things are going really well;
been doing that for a while, so I thought maybe I     listenership is up, people seem to be enjoying it, I
would give it a pass today.                           think we got the format right - half hour is about
                                                      right for the way people want to listen.
Carl Franklin: So, this is a good opportunity for
me to ask you how RunAs Radio is going.               Carl Franklin: And as far as downloads and
                                                      stuff, was May the first full month that you had to
Richard Campbell: Oh RunAs; we are having a           mention?
great time. Of course, we were at TechEd along
with you, so of course I am being a little bipolar    Richard Campbell: First full month; that’s right.
here. I was.NET Rocks! s o m e of the day and
RunAs Radio in some of the day as well.               Carl Franklin: And you had, what about 22,000
                                                      downloads or something like that?
Carl Franklin: And StrangeLoop some of the day
too….                                                 Richard Campbell: 22,000 is about right.

Richard Campbell: And StrangeLoop as well.            Carl Franklin: That’s pretty good Richard.

Carl Franklin: You were doing a lot with              Richard Campbell: Getting there for basically a
StrangeLoop. You know, s o f a r , I have never       soft launch; we just put it out to just see what
seen a guy change shirts more often at TechEd.        people think, and we will hype it up later, and it
                                                      would be interesting to see what TechEd does to
Richard Campbell: Yes, I’d switch shirts, four,       RunAs Radio.
five, six times a day depending on where I
needed to be.                                         Carl Franklin: Right I guess you are doing some
                                                      cross promotion with the shows that you got out
Carl Franklin: And you switch shirts in the Fish      of TechEd, right?
Bowl, which isn’t exactly private.


Transcription by PWOP Productions, http://www.pwop.com                                      Page 3 of 15
                                                                Roy Osherove on Regular Expressions
                                                                                 September, 14 2006

Richard Campbell: Right. So we’ll see what              Richard Campbell: So, the last time you were
happens there; but bit by bit, the show is coming       on was back in 2004 with Don Box and Ted
along nicely.                                           Neward.

Carl Franklin: Excellent. All right then, let's         Mark Pollack: Yeah, that’s right.
introduce the Code Camps with the Code Camp
music.                                                  Richard Campbell: And you were talking about
                                                        Spring then; I guess it was brand new then.
Richard Campbell: And let me lead off with the
Raleigh Code Camp that’s this weekend, June             Mark Pollack: Yeah, it was in, bit of the early
23rd at shrinkster.com/peb.                             days but we had some functionality that was
                                                        already working, the core functionality, and we’ve
Carl Franklin:            Followed         by           grown a lot since then.
DeveloperDeveloperDeveloper!    wh i c h i s
happening in Reading in the UK, June 30th,              Carl Franklin: I just remember then ganging up
shrinkster.com/p80.                                     on you and feeling, “Oh man, don’t do this to my
                                                        guests.”
Richard Campbell: Then in July, July 7th and 8th,
the Code Camp South Australia in Adelaide at            Mark Pollack: That was the first time that the
 shrinkster.com/pkh.                                    ORM Vietnam reference was mentioned, but that
                                                        took me by surprise - and Ted Neward.
Carl Franklin: Followed by the Central Coast
Code Camp in San Luis Obispo, California,               Carl Franklin: Yeah. Well, you know, enough
September 22nd and 23rd, at shrinkster.com/pwa.         about that. Let's talk about what Spring.NET is,
                                                        and then maybe what’s changed since the last
Richard Campbell: And then there is the .NET            time we talked.
summer camp 2007, September 24th to 28th, in
Leipzig, Germany. So this is a track put on by the      Mark Pollack: Yeah, sure. First of all, yeah,
user groups in Leipzig, and they have created a         Spring.NET is an open source application
track specifically for students; it's only ten Euros,   framework which -- it's a very general statement,
if you are a student, but it costs more if you are      but what it aims to do is, be using any of your
not a student. You can go if you want, it's just        runtime environments.         You might have
going to cost you more - and that’s at                  WinForms, WCF, ASP.NET and its focus has
 shrinkster.com/pwb.                                    basically been two core value propositions, one is
                                                        application configuration, or how different objects
Carl Franklin: And Greg Brill at Infusion is still      get references to their dependencies - otherwise
taking people from the .NET Rocks! listener base        commonly known as Dependency Injection. The
to work in Manhattan, and for a year, you can live      other     part    of that is Aspect Oriented
rent-free in Manhattan, that’s part of the deal. If     Programming; basically how you can decorate
you are interested, go to shrinkster.com/kh6.           objects with additional behavior that you might
                                                        not otherwise be able to do through inheritance.
All right, Richard let's bring on Mark. Mark
Pollack has worked extensively in the financial         So, these two sort of, concepts are the
sector as an architect and developer on various         foundation, it’s what we released first. The areas
front office trading systems that involved a            where we have grown out had been in something
mixture of Microsoft and Java Technologies.             we call portable service abstraction, and what
Mark has been a core Spring developer, which is         this lets you do is, take any ordinary, so called
a Java Technology, since 2003 and founded its           Plain Object and by Plain Object, which is just the
Microsoft counterpart Spring.NET, in 2004. This         name for a traditional class that is, does not have
year, Mark has joined Interface21 and will              any sort of magic base class like Marshall by ref
continue to lead and develop Spring.NET. Prior          or any particular attributes associated with a
to this, Mark was a founding partner at                 technology like, let's say, WebMethod or Service
CodeStreet, LLC, an independent software                Component or something like this, and we
vendor in the financial services industry.              decorate it by adding appropriate attributes of
                                                        base classes at runtime, essentially building up a
(00:10:20)                                              type at runtime appropriate to the environment.

Welcome back to the show Mark.                          So this allows us to export any object you have,
                                                        let's say, your business service class as either a
Mark Pollack: Good to be back.                          Web Service, .NET Remoting Service, WCF
                                                        service, so this gives you a lot of flexibility, almost




Transcription by PWOP Productions, http://www.pwop.com                                          Page 4 of 15
                                                                Roy Osherove on Regular Expressions
                                                                                 September, 14 2006

essentially delegating the decision of what your        retry in case of error, I need to log in case of
architecture might be until later.                      error, things like this. In your core code, in your
                                                        method, you are going to have to put a whole
Carl Franklin: It sounds like a dynamic language        bunch of stuff in your catch block. Basically you
feature.                                                say, this method does one thing, it’s concerned
                                                        about talking to the other side, that’s all it does.
Mark Pollack: I mean, the types are generated
at runtime, so that’s similar to requirements of        I know that I can add appropriate aspects to add
dynamic languages - it's much more focused, it's        this functionality later. So, even when you are
really a very special purpose type builder. It takes    doing new coding, it let's you focus your
your class, and dynamically wraps it, doing the         attention, so that t h e c l a s s is at one
appropriate inheritance or adding the appropriate       responsibility,      only       responsible      for
attributes that you specify in the configuration file   communication, not responsible for error handling
generally.                                              and whatever else you might like to add to the
                                                        say, typically a catch block in this case I am
For example, there might be some -- not often           using. So, in that sense it really compliments a lot
used attributes for XML Marshaling in Web               object oriented design, because your objects
Services, but the boilerplate stuff is done to you      become focused. They have one responsibility
with a very convenient XML syntax, that is the          which is always kind of what the intention was,
configuration of what we call the container, which      but as time goes on, of course it gets other
is the heart of the code artifact that is responsible   responsibilities unintentionally.
for creating your objects, configuring them, and in
addition, potentially wrapping them or decorating       Usually, you know sort of they adverbs they say
them with this particular behavior, maybe               of the requirements, it should be secure
inheriting from Marshall by ref, maybe adding an        application, it should be all calls to the service
attribute, and in terms of AOT, potentially adding      layer should be logged, and things like that, that
what is called an interceptor chain, basically what     don’t naturally then tells us to do a single
you would like to do in terms of code before            inheritance, because in that layer you might have
actually entering a method, to sort of envision as      multiple inheritance points.
a ballpark announcer, saying, okay I am going to
now enter the method, I am entering, I am               Richard Campbell: And this buys -- as I am
leaving - t hose points are places you can add          hearing you talk, I am immediately thinking, “Why
functionality.                                          would I bother with this? Why don’t I re-factor?
                                                        Why don’t I just add more code and recompile? -
This has come up now in Enterprise Library 3 as         Because that’s what we have been doing up till
a Policy Injection, so you go out there and might       now.
be familiar with it and that kind of terminology.
                                                        Mark Pollack: Yeah, I mean this is a new, -- it's
Carl Franklin: So, this is the kind of -- it seems      not new, it's been around, but it's I think coming
like the kind of technology that you would use          through…
after the fact when you already have objects out
there in a framework that now you want to just --       Carl Franklin: It's different, that’s for sure.
you know, give them some added functionality
but you don’t necessarily want to do a big              Mark Pollack: Front in Microsoft technologies
refactoring - is that an accurate…?                     now. I mean the most popular thing on the Java
                                                        side is AspectJ which is written on Java
(00:14:59)                                              Technology      for    doing    Aspect     Oriented
                                                        Development. But if I asked you a question the
Mark Pollack: That’s really one very popular use        old way, you have a big chance of errors of
case. For example, if you like to say, AD               omission, right? So, imagine you have 30 service
Monitoring or some sort of notification? Then,          classes and each one has 15 methods, I got to
after the fact, and that’s very important, because      go through each one and make sure they have
it's not invasive. You can create these                 the appropriate try/catch statements, and
decorators, but what it does for you is sort of -- if   furthermore, what if I want to change it later, I got
you are doing development is, it let's you              to go back…
separate these particular things like exception
management or even caching, even transaction            Richard Campbell: Change them all.
management which is very powerful. It lets you
know that this is going to be handled some place        Mark Pollack: Yeah, so you have basically the
else other than in your method. So, if you are          same concept right, which is do error handling
doing a remote procedure call, and suppose you          now spread probably 300 times throughout your
wanted to say, “Oh, I need to have a -- I need to       code base, it’s not modular. So, what this lets you


Transcription by PWOP Productions, http://www.pwop.com                                          Page 5 of 15
                                                                Roy Osherove on Regular Expressions
                                                                                 September, 14 2006

do is modularize that error handling part, put it in    project called AspectSharp, that’s another one.
one spot, one aspect, and then say, where would         So, there are a few out there.
you like to apply it? That sort of sprinkles it's
functionality across all of the different methods       Carl Franklin: Yeah, that’s the one that I’ve
that you basically choose in some of sort of let’s      heard of.
say, Regex like way, based on names, spaces
and methods and so on.                                  Mark Pollack: They all bring us similar value
                                                        proposition. Maybe one other thing to add is, and
Carl Franklin: As you said before Mark, Aspect          it might get stuck in everyone’s head that, well
Oriented Programming isn’t new, but it's not            this is just interception, just declaration of AOP.
something that most .NET developers come                Well, the other part of it is something called
across everyday. What are some of the other             introductions or mix-ins. What this will let you do
technologies maybe on different platforms, I            is add an interface implementation to a class at
guess maybe Java, maybe even .NET, what are             runtime let’s say. So, you can add a notification
some of the other technologies out there that           interface implementation to make your class
have been doing this?                                   notifiable.

Mark Pollack: Sure, on the Java side, sort of the       Carl Franklin: It sounds very Ruby like. I mean
grand daddy of them all is AspectJ, which is an         very sort of Python dynamic adding functionality
extension to the Java languages, where you can          on the fly. Are you creeping towards that?
write what they call an Aspect, which is basically
the code and where you like the code applied.           Mark Pollack: Well, in some sense you could
That has a Development Environment side of              say AOP is in fact more structured in terms of this
Eclipse, and the other thing that has become            functionality than Ruby. Ruby and other dynamic
popular as well, is the Spring AOP package,             languages basically give you a single hook which
which has integration with AspectJ and the              says, “I don’t know what this method is, handle
interesting part of this is that interface21, the       it.” Now, you might add a method called, ‘Do my
company behind Spring, basically is hired on as         special work.’ Then another framework or
the chief scientific officer, the founder of AspectJ,   another library somewhere else might implement
Adrian Colyer, who has deep experience in terms         the same extension, ‘Do my favorite work’, now
of Spring and AspectJ.                                  you have a conflict. So, some people make the
                                                        comparison that it’s sort of like coding C in a C++
On the .NET side, we’ve brought that technology         style, and principally you don’t have to go C++;
stack over and the fundamental piece of                 you could mimic almost everything you wanted in
technology in this is essentially making dynamic        C code, and so the analogy between dynamic
proxies. Dynamic proxies are kind of in some            language where the hook is essentially, I don’t
sense like what the JDK offers out of the box, but      know what method this is through a structured
you have to actually code it up by hand in some         AOP framework.
manner build into the .NET technology stack in
terms of .NET Remoting Marshal ByRef is this            Carl Franklin: Yeah and that was always the red
transparent proxy concept. So, if people have           flag I had about dynamic languages, it is just
ever used .NET Remoting and have come across            because the implementation, the code you write
transparent proxy, then that in fact is some form       i s c l e aning concise doesn’t mean that what’s
of this.                                                going on behind the scenes isn’t a nightmare. I
                                                        mean, could potential nightmare; it harkens back
(00:20:06)                                              to the days of early VB and ASP with VB Script
                                                        and…
The Enterprise Library 3.0 which introduced
Policy Injection, which is sort of an AOP like…         Richard Campbell: That was for the ASP as
                                                        well, that sort of tangled layering of code that you
Carl Franklin: AOP?                                     can’t really see which piece does what. It’s write-
                                                        only code.
Mark Pollack:        Yeah,     Aspect    Oriented
Programming framework as well. Then, the route          Mark Pollack: Yeah, I mean there is definitely
that they chose to implement, it was through this       stuff going on under the covers which is kind of
built-in technology .NET for transparent proxies,       the positive part. A lot of the assumptions that go
we chose a dynamic type generation approach.            into the naming conventions, which is a plus and
                                                        a minus, but I think a lot of people have been
Carl Franklin: Interesting.                             finding more positives and negatives in the
                                                        approach from what I’ve read. I am not a
Mark Pollack: So, Enterprise Library is also a          hardcore Ruby or Python guy; I dabbled a bit
place to look, there is another Open Source             but…


Transcription by PWOP Productions, http://www.pwop.com                                        Page 6 of 15
                                                                Roy Osherove on Regular Expressions
                                                                                 September, 14 2006

                                                        controls, but also bi-directional data binding,
Carl Franklin: Yeah and we’ve sort of come to           some nice internationalization features, let’s say
the conclusion on .NET Rocks! anyway that               for images you don’t ordinarily find. Then we
without a sort of test first, test driven               have sort of integration with other Third Party
methodology you are sort of flying without a net.       libraries. For example, NHibernate with a lot of
                                                        boiler plate code to writing NHibernate or a
Richard Campbell: Very dangerous for dynamic            mapper code.
development without TDD.
                                                        These ideas and these concepts are coming
Mark Pollack: I think TDD stands on its own,            essentially in the case of NHibernate from the
even independent right of...                            Java world, and it is very straightforward to put
                                                        back things like the ASP.NET framework, but
Carl Franklin: Sure.                                    basically different than what was done on the
                                                        Java side, because the runtimes are so different;
Mark Pollack: And that is the other thing that a        one is a controller based versus page centric in
lot of the Dependency Injections or these               an ASP.NET approach. So, the overall goal is to
configurations based frameworks bring is that, a        apply common themes across most platforms
lot of times your code has inside of hidden             where it’s appropriate, and then address pain
dependencies you don’t know about, but it makes         points for example, in different areas.
it hard to test, because they have all these other
extra parts that maybe assume certain parts of a        So, we touched on quite a lot, we touched on the
runtime, maybe assume a database. So, when              presentation tier in terms of the ASP.NET
you use these frameworks such as Spring to              framework. The configuration which in principle is
configure your classes, you are much more likely        so foundational that you can touch everything, let
to use interfaces where they are appropriate, this      me have data access layer to help writing a lot of
makes it very natural doing this.                       boiler plate code, which is very elegant. Basically,
                                                        now you can do one-liners which you would
So, when you go back to testing, it’s very easy to      never be able to do before if you are just using a
insert    a    stub     implementation       or mock    raw ADO.NET code.
implementation to isolate a particular class under
the unit testing. So, there is sort of a lot of other   Carl Franklin: So, are you ready for the big
aspects around using a container for                    news? telerik is taking the wraps off four new
configuration that come into play, other than just      product updates. RadControls for ASP.NET,
surely having a sort of a generic object factory        RadControls for WinForms, the first official
that views an object and sets properties in a very      version of the telerik Reporting Tool and a brand
flexible way.                                           new        suite     code-n a m e d R a d C o n t r o l s
                                                        “Prometheus”. And you guys think I don’t sleep.
It sets references to other objects to sort of build    telerik’s tools have always been great, but I think
up the in memory object graph that defines your         this time they have outdone themselves. Well,
application or is the wires, different layers of your   here are the details; Prometheus is built on top of
application together. So, there is that testing         Microsoft ASP.NET AJAX and it will become the
aspect also that’s important, it encourages and         successor of RadControls for ASP.NET.
makes it much more realistic to think you can
start testing the classes.                              Just as ASP.NET AJAX will be the future of
                                                        ASP.NET, RadControls Prometheus represents
(00:25:00)                                              the future direction of all new telerik development
                                                        tools. This new suite of controls will also pave the
Carl Franklin: So, is this AOP style feature the        way for seamless integration with Microsoft
biggest thing or are there other things or there        Silverlight, formerly WPF/E. The WinForms suite
are things not related to this in Spring.NET?           aims for the stars with powerful new Grid, Chart
                                                        and TreeView Controls. For me, it seems like a
Mark Pollack: Spring is very broad as an                major player on the WinForms market. Another
application framework. People make the analogy          intriguing addition to telerlik’s portfolio this spring
of an iceberg where you see just a little bit of a      is telerik Reporting. The product introduces a
tip, but below is a huge beast. So, Spring for          new level of development experience, which
example doesn’t implement a transaction                 telerik collectively calls, “Easibility” - a naturally
manager. It does have data access framework             intuitive “mouse only” approach to generating
that makes it easy to write the data access layer,      Windows, Web and PDF reports. And if that’s not
for example, in a particular style. So, there is that   enough, go to www.telerik.com to check out
part, there is ASP.NET web framework, which             what’s new with telerik’s renowned RadControls
has things like Dependency Injection and                for ASP.NET.
configuration of your ASP.NET pages and


Transcription by PWOP Productions, http://www.pwop.com                                            Page 7 of 15
                                                                Roy Osherove on Regular Expressions
                                                                                 September, 14 2006

Okay, yeah we should talk about these other             For example, this transaction attribute and
things, because I think the question on                 demarcate your method as much like you would
everyone’s mind is, while ADO.NET works just            do in enterprise services as transactional, with
fine and integrates well with all the other systems     the appropriate timeouts or different options,
in that framework, what can you give me on top          isolation levels that you would typically associate.
of that that I don’t already have?                      That’s very powerful, because ADO.NET is just
                                                        one sort of transactional API.
Mark Pollack: Well, the raw ADO.NET API I’d
say is raw, I mean you have a fair amount of            The System.Transactions and .NET 2.0. Plus if
constructs you can even do all the time, probably       you look at any of the ORM tools, they also have
two or three nested using statements. And then          their own semantics for creating and stopping a
for example, if you would like to, let’s say iterate    transaction. So, because we have this
over a particular result set, you have to worry         abstraction at the top layer, what this does is not
about the readers, enclosing all the readers. So,       only enable us to do declarative transaction
what we do basically is provide a very simple           management in a .NET 1.1 or 2.0 environment
abstraction, it’s very lightweight that essentially     against a single local resource, but also in the
manages all of that sort of restore stuff for you,      same transaction to mix a hibernate operation
and lets you concentrate just on the bits that are      with an ADO.NET operation, because at the
important. So, basically if you are specifying a        fundamental level, they are sharing the same
command text, and want to let’s say create an           transaction and we take care of that boiler plate
account object from a database, a domain object         that kind of passes that transaction object around
from a database. Instead of using anonymous             to the appropriate frameworks, so that everything
delegates, you can say, “Okay, call this particular     is consistent.
ADO method” and inside the anonymous
delegate, you just have to write the looping code.      So, that’s a very, very powerful functionality for
That’s it.                                              creating data access layers.

(00:29:57)                                              Richard Campbell: Mark, I am thinking about
                                                        the concept of a framework actually and my
Everything else in terms of associating that            automatic reaction is that I load this first and I
command text, whereas the command and                   start building my app in it. But it seems to me this
looping and stuff like this is done for you; you just   works the other way around. That I’ve got an
basically write the little bit of code that is most     application, I want to layer this framework into it.
important. I think more importantly kind of             Maybe you could talk to me about how I am
coupled with the sort of helper class for               going to use this in my existing application.
ADO.NET       is     a    declarative    transaction
management, which is an application of AOP.             Mark Pollack: Sure, if you envision let’s say a
This is where I think the .NET stack kind of falls      very simple architecture where you maybe have
by the wayside a little bit.                            a service layer in the middle tier and then the
                                                        service layer that has to talk to a data access
You have enterprise services, which lets you do         layer. One of the most natural places to apply
declarative transaction management one by one           Spring is basically how you hook up your service
and you can use .NET 2.0 System.Transactions            layer to the data access layer.
Namespace to use a transaction scope. The
problem with both of those essentially is that, you     Richard Campbell: Right.
are going to use distributed transactions,
unfortunately      the    current  release        of    Mark Pollack: You might come to mind also
System.Transactions, if you would have another          some typical patterns you might seldom like to
transactional resource in the same scope, it’s          use. Interfaces here and the services, I would like
going to get promoted even though it’s the same         to have my data access layer also have
connection to the distributed transaction.              implement a particular interface. In principal,
Furthermore, in .NET 2.0, there aren’t any              what we are doing now is just good object
transactional attributes.                               oriented development. But what Spring does is
                                                        then, it says, “Okay, how do these two know
So, you can’t mark a method as being                    about each other? How can I configure them at
transactional. So, what we offer is a framework         runtime or make the changes very flexible?” So,
for transaction management with three different         you can now introduce, in some sense after the
transaction managers and one of which is just           fact, but potentially coding knowing that you don’t
regular single connection, single resource              have to worry about a lot of the infrastructure to
ADO.NET transaction, which you can then apply.          create a factory, to create the class that
                                                        implements the interface. You don’t have to
                                                        implement hundreds of factories, because you


Transcription by PWOP Productions, http://www.pwop.com                                        Page 8 of 15
                                                                   Roy Osherove on Regular Expressions
                                                                                    September, 14 2006

have hundreds of so called factory products                easy with .NET. But that just makes that a little bit
these like to create. So, you are doing so -- your         easier. But the other three are really these
design, but you are not creating a lot of the boiler       portable service subtractions. We just committed
plate infrastructure. In this case, a lot of factory       WCF support, so basically you take an ordinary
classes or abstract factory classes that return.           let’s say account service class and it doesn’t
                                                           have any attributes on it, very plain and use the
For example, if you are doing a provider model in          remoting exporter to export in let’s say as an
.NET, you would have to implement four classes             SAO. Then also importantly on the other side, we
sort of for each product, making it very tedious in        generate just based on -- WCF just based on the
an application where you maybe have many,                  end point address in the interface, the client side
many things to create. So, it is a bit of a mixture        proxy.
and that’s sort of the beauty of it, is that it’s not
invasive. You can use it where you think it’s              A lot of times it would disable us to do, because
appropriate. That thing that you should replace            we are in full control of this. There’s some quirk
every new statement you have in your application           sometimes in the proxy generated by out of the
architecture and hand over the control and                 box tools and Visual Studio or in the Microsoft
configuration of that class to Spring, basically           SDK. So, for example, sometimes people will say
where you think it adds value. Usually, the first          remote or put over web services, data sets.
place it adds value is between the layers in your          Whether you want to do that or not is a whole
application.                                               other topic, but people do it. And the default
                                                           proxy is generated in using the standard tools
Richard Campbell: Right. Now, that makes                   essentially make a new type for each of the data
sense in an existing app. If I am starting from            sets to your remote. That can get kind of
scratch, do I do something different? If I got a           confusing after a while, because you might have
clean slate, not that this ever happens in real life.      really in fact different types without knowing it in
                                                           your proxy classes.
(00:35:02)
                                                           So, our proxy knows ahead of time, you could
Carl Franklin: Yeah, right.                                isolate your dataset objects in one assembly and
                                                           re-use that. We will always be using the same
Richard Campbell: The thing that you would do              type. So, we are getting a lot of control basically
different is you would probably never write any            by creating our own client side proxies. Though
abstract factory class ever again. You are                 we come again, some quirks you might find in a
probably much more inclined to do test driven              default implementation.
development now, because it’s very easy to
program to interfaces, you can now reasonably              C a r l F r a n k l i n : Threading in Concurrency
think that I don’t have to go off and implement a          Support. What, you’ve got some interfaces and
whole abstract factory and all of this boilerplate         primitives around synchronization that is
stuff just to make my class testable. So, you start        supposedly a timing, that’s a huge issue right
off basically with the thing knowing that I’ll have        there. I mean threading has always been the
to write a lot of that infrastructure.                     bane of software development. What do you guys
                                                           do to ease the pain in that regard?
Richard Campbell: Yeah, I was just thinking that
the real purpose that we use frameworks for,               M a r k P o llack: Well, some of this revolved
which is I want to write less code.                        around 1.1 didn’t actually have a semaphore
                                                           class, so we introduced the semaphore class.
Carl Franklin: Yeah and I got to imagine that’s
the whole reason we have Spring.NET, is you go             Carl Franklin: Alright, nice.
through the .NET framework and you say, “Okay
what can be simplified.” I am looking here at the          Mark Pollack: So, that’s there.
list of services that you touch in the framework
and you began mentioning some of these before,             Carl Franklin: So, let’s just go the whole way
when we talked a little bit about ADO.NET and              and tell everybody what a semaphore does.
transactions, but also .NET Remoting, enterprise
services. Web services, Windows services.                  Mark Pollack: Sure. Semaphore basically is a
                                                           concurrency construct, we are using from control
M a r k P ollack: Yeah, Windows services is                access to bits of code by sharing a token
probably -- it’s very simplistic, it’s not really in the   amongst the entire application. Basically, you can
same camp as the other three. It’s that if you             take a token, and depending on how many
want to write Windows service like a demon,                tokens this semaphore has configured for you,
there is a little bit extra boilerplate stuff. Normally    you can keep taking, in the sense of a method,
you’d have to do, even though it’s already quite           asking for a token. If you are able to actually take


Transcription by PWOP Productions, http://www.pwop.com                                            Page 9 of 15
                                                                Roy Osherove on Regular Expressions
                                                                                 September, 14 2006

this token, you can proceed into the block of           helpful and stuff that’s well tested, you don’t have
code. If you can’t, because all of the tokens have      to worry about; you can just use it out of the box.
been taken, the token count is zero, then you
kind of stuck there. So, this is a sort of old school   Carl Franklin: Speaking of storage, what’s
way of doing synchronization as compared to just        iResource?
a lock statement. Because you really have to
remember to release and put your token back in          Mark Pollack: That stuff is also a particularly
the pool, so sometimes it’s appropriate to use if       nice abstraction. It turns out really, if you’d like to
you are doing very sophisticated concurrency            – there is no common base class for reading an
programming. I think generally speaking, both the       input stream from a file and a URL. They don’t
lock metaphor that’s built into .NET is the way to      share a common base class or an assembly
go.                                                     embedded resource. What the iResource
                                                        subtraction is basically, a way to get an input
C a r l F r a n k l i n : All these things, mutexes,    stream from all of the different places in a uniform
semaphores and locks, they are all the same             way.
thing. They just have different scopes. So, a lock
deals with a lock object, which has to be in scope      Carl Franklin: Now, that’s nice. That’s one thing
and the object determines the scope. A mutex            I’ve never really liked about the System.IO
can be shared across different app domains, and         namespaces. Yeah, what if it’s at a URL? I mean
different threads which is something…                   the implementation is different, but it’s essentially
                                                        the same thing. This file is over there, go get it.
(00:39:59)
                                                        Mark Pollack: This is exactly what that does and
M a r k P o llack: Yeah, of course that’s very          that’s very nice for when we are talking about the
sophisticated.                                          Spring configuration files, we can basically in a
                                                        URL syntax say, “Get it from this assembly ::/” or
Carl Franklin: Yeah and a semaphore as you              “get it from this style.” Whatever you like, and that
said is sort of token based, where sort of like the     resource implementation is pluggable, so you can
lock object except that it all comes from one           put in your own protocol handlers. So, if you like
place, and it’s application wide. Good Stuff.           to pull information let’s say from a database,
                                                        that’s fine, just write the appropriate handler. Off
Mark Pollack: T h e other important class you           you go, register it, you are done.
have there is for thread local storage.
                                                        Carl Franklin: Yeah, I like that.
Carl Franklin: Oh yes.
                                                        Richard Campbell:         Alright,  Dependency
Mark Pollack: Which if you really dig deep into it      Injection makes me nervous, but then I am a SQL
has different best practices, if you are in the web     guy and I ought to automatically think SQL
environment, where you would like to store it as        Injection, which I know is bad, but Dependency
c o m p a r e d t o if you are in a non-web             Injection is not bad.
environment. So, this just sort of is a simple
abstraction of where to store state in a thread         Mark Pollack: That’s right. I mean there’s no
safe manner. This is in fact used under the             need to be scared.
covers when we do our declarative transaction
management, so that the current transaction is          Carl Franklin: Just because of – you are afraid
stored in a thread local slot let’s say. That’s how     of needles basically Richard.
you can get reference to it wherever you’d like in
your code base.                                         Mark Pollack: Yeah, it actually is a overly
                                                        hardware drive.
Carl Franklin: Yeah, thread local storage always
been an interesting little piece and of course like     Richard Campbell: Yeah, it’s a bad word.
you said, that does exist on the thread object in
the .NET framework, but you’ve done an                  Mark Pollack: Bad word, no one likes to be
abstraction here to make it more accessible in          injected, but that’s -- originally they were called
Active Server Pages. Is that the…?                      the inversion of control containers and Martin
                                                        Fowler sort of popularized the Dependency
Mark Pollack: Yeah exactly. The best place to           Injection naming of it.
stick it, the state is different depending on your
runtime environment. The sort of thing that a few       The idea is simply that, before this sort of idea
people blogged about, it’s relatively esoteric but      came up, how did you get configuration code?
very important - and so again, this is some of the      You probably wrote in a knit method, called the
infrastructure, just threading classes that they are    name section handler, named by a section


Transcription by PWOP Productions, http://www.pwop.com                                         Page 10 of 15
                                                                Roy Osherove on Regular Expressions
                                                                                 September, 14 2006

handler in some knit method. Pulled the stuff into      basically, it’s just enough scripting to get the job
your code, set a few field variables and off you        done in one line.
went. So, essentially from this perspective, you
were pulling information into your class from the       So, you can write if statements and other
outside environment. You had a bunch of                 expressions also, refer to other objects that
infrastructure code that unrelated to your              Spring is aware of. That’s also quite powerful,
business processing, maybe tucked away at the           and little untold feature, but comes in very handy,
bottom of your class.                                   very frequently.

So, as Dependency Injection around version of           Carl Franklin: The Validation Framework, let’s
control is you just write your plain object as you      talk a little bit about that.
did before, expose it’s normal properties or
constructor arguments, things you depended on,          Mark Pollack: Sure. Essentially, the Validation
this could potentially just like Max Results or it      problem is not unique to the Web layer or the
could be another object like a DAO class and to         WinForms layer, but if you look at the two, they
kind of highlight the importance of connecting          both have very different approaches to
different layers or connecting different objects        Validation. So, what this is, is just environment
together is renamed Dependency Injection as             agnostic way to specify what is valid. Basically,
compared to a property setting or something. So,        you can use the expression language to say,
it’s a way to just have a normal object, and then       “Well, the user has entered this information, I
the container looks at it, and says, “Oh, you have      collected it, let’s say in a form request class.”
a property called max results,” turns out my
configuration – the creating has a max result           Carl Franklin: On a webpage, we’re talking.
property with the value of five, I am going to set
it. Your code is unaware that it’s being                Mark Pollack: Yeah it’s on a webpage, then you
configured; it’s just a normal class.                   have rules that basically the properties of this
                                                        class should satisfy the rules that you specify in.
So, that’s the beauty of it in some senses, not         There is a lot of sophistication in terms of saying,
invasive, and the most important part is not so         “Well, only apply these rules if for example, a
much setting up plain Int and Float Properties,         particular checkbox is checked.” So, you can
but setting up different references and building up     group things hierarchally, you can make them
that object graph and runtime of your entire            dependent on the particular state of the object
application.                                            you    are     validating.    You     can    do    it
                                                        programmatically; people frequently do it in XML
(00:45:10)                                              syntax to separate the rules from the actual code
                                                        in case they would like to change it frequently.
Carl Franklin: Hey I just want to give a shout out
real quick to our friends at Data Dynamics, who         So, in terms of let’s say ASP.NET, it gives you
makes ActiveReports.NET among other really              also little tags or place appropriately the results
awesome things. ActiveReports.NET is great,             for the validation, did it pass, if it’s failed, what
because it allows you to just build your reports        would you like to say. The specific presentation
with an easy editor, embed them right in your           nuances as well as how you would like to say it,
application, provide PDF and HTML output, give          all in one list, the bulleted list.
your end-users a report editor royalty free of
course. A great Access report upsizing wizard,          Carl Franklin: We just use Peter Blum’s
and all of this for a price that isn’t going to break   Validation Controls. They’re awesome.
the bank. ActiveReports.NET from Data
Dynamics, go check it out now at                        Mark Pollack: Yeah, that’s interesting. For
 datadynamics.com.                                      example, what you do when you want to do that
                                                        same validation on the server side? Typically,
One thing I didn’t realize is that Spring has its       you’re not going to just trust the app. So, it’s good
own Expression syntax.                                  to have this reusable component, let’s say, just
                                                        this core validation.
Mark Pollack: Yeah. This is a mini language in
some sense that lets you do very lightweight            Carl Franklin: True, different.
scripting, and there’s even very sophisticated
support for a lot of sophisticated scripting            Richard Campbell: Mark, you talked earlier
expressions in there. That’s very useful again as       about the NHibernate integration, but there’s a
a Glue Layer. Scripting languages often refer to        few modules in Spring.NET that I am not
as Glue Layer, and this is a mini scripting             particularly familiar with. Well, one of them is
language to a large extent that is complete             interesting to me right away is the AJAX module.
obviously as Python or something like that. But         Let’s spend some time on that, and then I want to


Transcription by PWOP Productions, http://www.pwop.com                                       Page 11 of 15
                                                                  Roy Osherove on Regular Expressions
                                                                                   September, 14 2006

talk about TIBCO, because I’ve heard that TIBCO
really never dealt with them.                             Mark Pollack: Yeah, I think though the common
                                                          theme is, people like to configure their objects in
Mark Pollack: Okay, sure. The AJAX integration            this way, apply the AOP services and also have
is one, simply one class, but then it’s very              these portable abstractions. Not having to code
powerful and it’s probably just the start of some         for a particular environment whether it’d be WCF
additional work we are going to do. There’s               or Web services. We can even export as an
already quite powerful features in ASP.NET                Enterprises Services 1.1 application, which is
AJAX where gaining access to Web services in              really a pain in the butt. If you have ever done it
you JavaScript and what we do is essentially,             before, right…
again in this idea of portable service abstractions,
you can have a class that doesn’t implement any           Richard Campbell: No.
Web service interface. Now, be exposed in
JavaScript by this little configuration utility, let’s    Mark Pollack: You have to do all those
say.                                                      registrations, we just do all that programmatically
                                                          and off you go, make a com assembly.
So, what it means is, in your JavaScript, you can
then refer to your service layer straightaway,            Richard Campbell: I really like the thought that
without having to actually have it be a Web               you just don’t have to choose. I don’t have to get
service. Under the covers, we generate the stuff          married to this library. I have now setup in such a
to make it a Web service, but you don’t actually          way that when I figure out that it isn’t working I
see that. So, in terms of client side AJAX                can switch, or in fact find out that it could be
development or the server side counterpart looks          better by switching.
very transparent in that regard.
                                                          Mark Pollack: Yeah, you can defer your
(00:50:02)                                                architectural choices or for example you can
                                                          support multiple at the same time. There’s no
Of course, there is still a remote procedure call         reason you can’t export one object as Web
and it should design your interfaces with this fact       service    and     .NET    Remoting   Service
in mind. Again, it saves you the plumbing of              simultaneously.
taking an existing class and having to sort of
adorn it with web methods in order to make it             Richard Campbell: Right.
easily exposed in AJAX, plus now of course you
get all the benefits of the container. Basically you      Mark Pollack: So, yeah it’s quite powerful. So,
can configure it any way you want, you can apply          there is AJAX basically giving you a lot of that
all of these AOP services to it like logging and          configuration.
what have you.
                                                          Carl Franklin: It should be noted that it also
So, it’s sort of just -- again one of the other sort of   works with .NET 1.1.
portable service abstractions that’s adapted to a
particular environment. In this case, the client          Mark Pollack: Yeah, and if you’re really
side JavaScript environment.                              hardcore, you can go, we support 1.0 as well for
                                                          AOP and Dependency Injection. Service Pack 3
Richard Campbell: T h a t i s powerful stuff. So,         just came out for 1.0.
you say you’re nowhere near done yet, right?
                                                          Carl Franklin: No kidding. Localization is sort of
Mark Pollack: Well, that part actually we are             like that too, I mean a lot of the features are
going to release in the 1.1 release, because so           beneficial to ASP.NET 1.x but not so much to 2.0
many users have found that one class so                   or is that a misstatement?
powerful and that’s kind of a stepping stone. We’ll
see in the AJAX space, where we go, but                   Mark Pollack: Yeah, they are definitely -- I think
because configuration and AOP are already such            hardcore techie issues that lead developers for
powerful concepts, just putting in these                  ASP.NET work and Spring had with the
appropriate hooks into that environment. Already,         localization in 1.1, and lets over to in some extent
it gives you a huge bang for the buck. So, the            still in 2.0. One feature I know, for example, that
roadmap to that I think is still quite open.              is very nice is Image Localization. I believe that
                                                          isn’t handled well in 2.0, but probably should
Richard Campbell: Well, I know all this                   defer to a better expert in localization than myself
technology is pretty new. I get the sense here,           for that.
you’re finding out what people are doing with it,
and you go, “Oh okay, why don’t we go this way            Carl Franklin: Okay.
then?”


Transcription by PWOP Productions, http://www.pwop.com                                         Page 12 of 15
                                                              Roy Osherove on Regular Expressions
                                                                               September, 14 2006

Mark Pollack: Yeah, the TIBCO stuff.                  consumers. So, much like a SOAP message is
                                                      XML format, you get to decide what’s in there,
Richard Campbell: Let’s got to TIBCO, that’s          and you need some way to make sense of it,
exactly what I was thinking.                          which is XML Schema, it’s more loosely coupled
                                                      in a messaging environment. Basically you --
Carl Franklin: This is a huge topic.                  once you have a hash table, that you exchange
                                                      between two platforms. It’s up to you to make
Mark Pollack: Yeah, TIBCO and MMS are                 sense of what that is. So, these converters
actually related. Basically, these are Messaging      provide some structure around the sort of opaque
Middleware. TIBCO is a Middleware vendor, they        message payload. You could use SOAP over
have grown into being an application and              JMS for example, some people do that, but it
integration provider, SAO stack. One of their core    hasn’t really caught on.
products essentially is EMS, Enterprise
Messaging Service. It’s like MSMQ, just another       Usually it’s very popular in the financial
vendor, and is very popular in the financial          community to come up with their own particular
community. They have Java bindings and .NET           custom message formats as compared to using
bindings, and I think even PEARL bindings, a lot      Schema or following a SOAP header format. So,
of language bindings basically.                       what’s very nice in this regard is that on the Java
                                                      side is the corresponding framework. So, if you’re
Carl Franklin: Can I be the acronym police here,      doing Inter-op via messaging, you can basically
and you have used the term SAO a couple of            just look at the mirror image of the entire cross
times. I don’t believe we defined that.               hierarchy on both sides, and code away. So,
                                                      there is a big benefit of having the Spring Java on
Mark Pollack: I’m sorry. I slipped it around SOA,     the Java side, where this goes by the name JMF,
Service Oriented Architecture.                        and on the .NET side, where you can use TIBCO
                                                      or NMS which is portable interfaces that have
Carl Franklin: Okay.                                  bindings to act as MQ and MSMQ.

Mark Pollack: Sorry, I switched the acronym.          So, it’s the abstract interface for messaging if you
                                                      will. Much like the provider model for ADO.NET,
Carl Franklin: Alright, Vocal Dyslexia, it’s a        the five base interfaces, these are the base
disease terrible, that strikes ten out of one         interfaces for messaging. They will support NMS
Americans 15 every minutes.                           then through NMS, .NET Message Service, it will
                                                      support a whole host of messaging providers
Mark Pollack: Yeah, maybe we can go back and          simultaneously.
edit that part, it’s so embarrassing right?
Acronym soup.                                         Carl Franklin: Richard, I bet you’re really excited
                                                      about that.
Carl Franklin: That’s okay.
                                                      Richard Campbell: Absolutely. I wouldn’t say
Mark Pollack: Yeah. Anyway, and NMS is called         messages are my life, but this is definitely the
.NET Messaging Services, it’s really just a set of    issues that we deal with around, how we’re going
APIs to do messaging, and this is the ability to      to move between these different layers. Mark, we
send messages from one producer to a                  haven’t gotten there, and we are almost running
consumer typically in an asynchronous manner.         out of time on this, but you have been straddling
So, you sort of publish a message, you assume         these different worlds. I am always working
that when the message broker, which is part of        between different development environments and
the messaging, if your structure gets it, it’s safe   different operating systems, but you’re also,
and it can go on its way to its final destination.    you’ve been involved with both Spring on the
                                                      Java side, Spring.NET is obviously your baby.
(00:55:04)                                            I’ve got to think that a lot of this technology just
                                                      makes that whole platform differentiators
Much like you assume once you put something in        immaterial, it doesn’t matter.
a database, it’s safe and you’re not worried about
i t a n ymore. When you’re looking at Inter-op        Mark Pollack: Yeah, to a large extent you get a
scenarios, one of the options that comes up is        lot of value if the application framework that sits
messaging, because messaging is sort of a             on top of the core classes is the same, but at the
granddaddy to a lot of the Inter-op stories, and      end of the day, you are still going to need experts
what this support does is basically, is it takes      on each platform to know all the nuances, to
TIBCO’s API for messaging and adds a few              know what’s going on there. In terms of the high
features to it to make it easy for you to exchange    level reuse let’s say, in terms of making a
objects basically between the producers and           common language across teams, and essentially


Transcription by PWOP Productions, http://www.pwop.com                                     Page 13 of 15
                                                                Roy Osherove on Regular Expressions
                                                                                 September, 14 2006

making the transfer of information more fluid, it’s     sort of conservative approach, which, the details,
a great benefit, it’s a great help. There is now a      I can’t provide.
quiet word on InfoQ, which you could search for,
which discusses very heavily the Interop in using       Carl Franklin: No, yeah that’s a rhetorical, really.
messaging between Java and .NET and Spring
on both sides. So, in case you’re interested in a       Richard Campbell: I’ve also gotten the sense
little bit more than that, there’s a sample out that    that there seemed to be some energy in the Java
discusses this and a nice reflection base               community around, it’s almost slowing down. It’s
converter to convert the objects to and from            like we are innovating so fast here, we are
messages.                                               causing ourselves grief in sense of instability.

Carl Franklin: This brings up a side tangent,           Mark Pollack: I mean there is a typical -- I
which is -- you’re obviously a Java guy who made        personally don’t see that. I don’t see that
the jump to .NET. Do you still work with Java           instability, it’s certainly not like it was, and the
shops who aren’t so convinced still?                    flipside of this is that innovation is great and
                                                        assuming it’s a very big eco system in the .NET
Mark Pollack: Convinced of what, switching to           world that I know, I mean the Java world around
.NET?                                                   Open Source projects, a lot of ideas that come
                                                        from there. You can see this actually, what’s
Carl Franklin: Well, convinced that a lot of the        happening with the Enterprise Libraries from
more interesting development is happening in            Patterns & Practices, how they are absorbing
.NET these days.                                        Dependency Injection and AOP from the
                                                        community. In some sense, the larger the
Mark Pollack: I think in terms of companies             community, the larger the base of ideas feeding
itself, usually what I’ve seen is, is a very            into what worked and what didn’t work. In that
established culture to begin with. So, people           sense it’s great, there’s a rich pool to take from,
have a huge history in server side Java and a           and that pool is larger on the Java side. If that
huge history in client side .NET or nesC in             means something for people to decide…
particular, financial services, and that probably
isn’t going to change. In terms of like Coffee Talk,    Carl Franklin: Well, what about Sun? Doesn’t
I think people do see a lot of innovation coming        Sun still own Java?
from the Microsoft side and the Java community
acknowledges that, work with generics and also          Mark Pollack: Yeah.
the new runtime is coming out, support dynamic
languages, these are very innovate technologies.        Carl Franklin: Are they still developing new
So, it doesn’t go unnoticed.                            versions and new features or have they stopped?

(01:00:00)                                              Mark Pollack: No, they are developing new
                                                        versions, version six is out now. We are talking
Carl Franklin: Where is the innovation on the           about version seven, which might have closures
Java side?                                              as a syntactic enhancement like…

Mark Pollack: I am starting to lose a little touch      Carl Franklin: Closures.
with the Java side, but the innovation, I think a lot
of it is happening more on the server side              Mark Pollack: Yeah, I am not really up on the
basically, there isn’t anything close to Windows        latest goings on and what was coming in Java 7
Presentation Foundation. It’s really focusing on,       for example.
for example, defining standards for ORM
solutions, and Microsoft with Object Spaces has         Carl Franklin: We ought to talk to Ted or
been incredibly slow to say the least in coming         somebody about that. We haven’t even talked
out. So, they are these differentiators.                about Java on the show in a long, long time. So,
                                                        that’d be interesting to know.
Carl Franklin: Well, I guess what I mean is,
where is it? You mentioned Generics, that’s             Mark Pollack: Yeah that’d be worthwhile
definitely a server side relevant technology. The       definitely to get a good brain dump from Ted on
implementation of Generics in Java is extremely         that.
limited. Well, how come it’s still, in 2007, so
limited?                                                Richard Campbell: So Mark, what’s the future
                                                        for Spring.NET? It’s been a couple of years since
Mark Pollack: I don’t know. I think the aspects of      we talked about it when you just started out. I
the community process and then favoring some            know you’ve moved over to interface21.




Transcription by PWOP Productions, http://www.pwop.com                                       Page 14 of 15
                                                               Roy Osherove on Regular Expressions
                                                                                September, 14 2006

Mark Pollack: Yeah, this is a great news for me      (01:05:14)
and for the Spring community at large. What this
means is there’s a dedicated support and training    Carl Franklin: Excellent. Well, is there anything
and development around Spring.NET. So, what          else you want to add before we wrap it up here,
this has allowed us to do is make a roadmap for      Mark?
the next release that we can live to. In the
summer August timeframe, we hope to get the          Mark Pollack: No.
1.1 release out, which compared to the 1.0
release adds a whole host of stuff which we have     Carl Franklin: Any shout outs?
been      talking    about,     the   Transaction
Management, the ASP.NET Framework, the Data          Mark Pollack: Yeah, I would like to thank all of
Access Abstractions for ADO.NET, the service         the community for giving feedback on the forums,
abstraction. So, it’s quite a big chunk and really   that has been invaluable, and also the core
brings Spring.NET side on par with what is on the    developers who are very active at the moment
Java side.                                           Erich Eichinger, Alek Seovic and Bruno Baia.

Richard Campbell: Which is also a part of            Carl Franklin: Alright, and with that, that brings
Interface21?                                         another show to a conclusion and Mark, thanks
                                                     very much for being with us today, we learned
Mark Pollack: Yeah. It’s an Open Source project      a lot and I hope that the listeners did too.
but they employ a lot of the core developers and
essentially sustain the project.                     Mark Pollack: Yeah, thanks a lot, pleasure to be
                                                     here.
Richard Campbell: So, pardon me for being
crude, but you give the software away. How do        Carl Franklin: We’ll see you next time on .NET
you make a living?                                   Rocks!

Carl Franklin: Yeah, I was just about to ask you     (Music)
that.
                                                     Carl Franklin: .NET Rocks! is recorded and
Mark Pollack: Yeah, the business model is            produced by Pwop! Productions -- providing
around support, much like a Red Hat model,           professional audio, audio mastering, video, post-
short summary of it.                                 production and podcasting services online at
                                                      www.pwop.com. .NET Rocks! is a production of
Richard Campbell: It’s the simplest way to           FranklinsNet - Training Developers to Work
describe it, get some help.                          Smarter, and offering custom onsite classes in
                                                     Microsoft development technology with expert
Mark Pollack: Spring on the Java side is             developers, online at www.franklins.net. F o r
essentially ubiquitous. There are faster Reports,    more .NET Rocks! episodes and to subscribe to
say, 63% of all server side Java development is      the podcast feeds, go to our website at
using Spring. These are huge companies that are       www.dotnetrocks.com.
using it, and they want support.
                                                     (Music)
Richard Campbell: Right. Having experts in one
place, that you can get a service contract from,
that’s important.

Carl Franklin: So, getting back to what Richard
said about Interop. Do you think it’s easier for a
Java shop to move to .NET having Spring.NET
there if they’re already using it?

Mark Pollack: Certainly there is one example I
know of where they are moving to .NET and they
were a Java shop and were using Spring, and
this makes the transition very natural. So, any
time there’s a mixed environment, whether it’s
deploying it over to .NET to write completely or
they’re co-existing, they have huge benefits to
having the same application framework on both
sides.




Transcription by PWOP Productions, http://www.pwop.com                                  Page 15 of 15

						
Related docs