ASP.NET Scalability Panel
Document Sample


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
Get documents about "