ARCast - Object Binding with Deborah Kurata

Description

Are you in a bind? Is your UI code filled with lots of trivial work like moving text back and forth between controls and business objects? In the past most people thought that data binding was just a clever trick to use for demo applications or quick and
dirty projects but no more my friend. Now we have something really cool in .NET 2.0 and it is called object binding. My guest on today’s show has written the book on object binding so listen up as Deborah Kurata sheds light on the depths of object binding.

Links

If you like this episode check out these

Transcript

Speaker

Content

Ron Jacobs

Yeah, how is it going? I am going to need you to move over there. Yeah, and if you can just tune in, and listen to ARCast, that’d be great. Thanks a lot. Yeah, thanks
Mr. Lumberg. Hey, if you haven’t seen the movie Office Space you have no idea, what that was all about. Hey, but I am your host Ron Jacobs, coming to you once again on ARCast where we are bringing you yet another conversation from VS Live San Francisco
where I am chatting with Deborah Kurata about Object binding.

Ron Jacobs

Yeah, you know data binding has been around for a while. Lot of people are kind of like that’s cool for a little demo, I don’t know if I am ever going to use it, but object binding, now that is something
very cool stuff. I want you to think about, what you might do with it, as you listen to Deborah. Let’s give it up for Deborah Kurata.

Ron Jacobs

You were the podcast pioneer for my podcasting career; actually it was this time last year at VS Live when we sat down to record an ill fated podcast that never made the air because of a rookie mistake
that I myself made.

Deborah Kurata

That’s OK. We were just moaning about something anyways.

Ron Jacobs

That’s Right. As I recall it was something about VB and not supporting VB and patterns and practices

Deborah Kurata

Enterprise Library

Ron Jacobs

Yes that’s right. OK

Deborah Kurata

Yes and it still only is in C#

Ron Jacobs

Yeah but you know what, the composite UI application block, I think has a VB version and the smart client team heard you loud and clear. So all of the smart client blocks are going to be both. OK, so
may be that puts some pressure on the enterprise library team, who knows.

Ron Jacobs

Being one of the experts here speaking at VS Live, I thought I would talk to you today about some, some interesting work that you have done recently. So you were telling me about an article that you wrote
for Code Magazine. What was that article about?

Deborah Kurata

It was on Object binding. I know binding has been something we have been told forever since VB3, if I recall, not to use in real application. You know it was always something that you did, if you needed
a prototype or a something to manage your basic admin duties with but you wouldn’t write a real business application and use binding.

Deborah Kurata

Well now over many 20 years later, however long it’s been, we finally, finally have a binding story that’s really good. So I have been writing a lot about object binding. I am speaking about Object Binding
and really truly enjoying it and I am in the process of writing a book.

Ron Jacobs

You know it’s funny that you mentioned the history of binding because, gosh! It was more than 10 years ago now. I think it was about 12 years ago, when I was living here in this San Francisco area, working
on another client-server windows development tool and our development manager came to me and said “Our competitors are killing us with these little demos they build, you know they just come in and the sales guy shows how you can assemble an app in 5 minutes
and, and that is killing us with these things. We got to do something.”

Ron Jacobs

So I went away and then invented this whole data binding scheme for their tool and it worked.

Ron Jacobs

You know you can build the app in 5 minutes but it wouldn't be an app that you would build for anything serious, right and I was amazed though how many people wanted to use it and it was very elegant
you know, all wired up everything dynamically at run time, but it was kind of slow, that was its down side, but then in the second version, I made it more like just general code generation sort, design time you kind of set up everything and then it just hardwired
all the controls to data sources.

Ron Jacobs

Any way the second version performed much faster but still wasn’t very useful for real applications because it wasn’t very extensible which was the downside. Once I fixed the performance, then it wasn’t
extensible at all. So but I have heard the same thing, you know people go “Oh! Data binding come on! Give me a break.” That’s something that you only see Microsoft people doing demos with that. But, but now with .Net 2.0 it’s has gotten pretty cool hasn't
it?

Deborah Kurata

Object Binding in particular, Object Binding is a type of data binding you can still bind to databases and doing a you know, 2 tier kind of application but the coolest part and the part that I am excited
about is the object binding portion or the object binding kind of data binding.

Deborah Kurata

With object binding, unlike normal data binding you are actually binding to your code in your business objects and not binding to some Microsoft generated code or binding directly to database tables and
fields. So that’s very exciting because it’s basically unlimited in its extensibility because you are binding to your own codes. So whatever you would write is whatever binds you.

Deborah Kurata

So that it is incredibly exciting for me. The book that I am writing is called “Doing Objects in Visual Basic 2005” and it covers all of the basic techniques for not only doing object oriented
design and development but then also implementing all of the object binding and its very interesting to see how much that you can do with it.

Deborah Kurata

I am using all of your own business logic and all of your own validation and everything, all in your business component and not having to have a lot of code in your user interface.

Ron Jacobs

Yeah, because that was a big problem with binding to like a data set or something right you have to manage its extensibility then try to do validation and what not. That was hard thing to do.

Deborah Kurata

Lots of events all over UI and so wasn’t encapsulating all of that in your business objects where, where basically they belong

Ron Jacobs

Well, you know I’ve always been an object kind of guy. I didn’t, I don’t know data sets are nice but they kind of make my skin crawl, when I see just a big hunk of unstructured data and you know we just
gonna link to it and I just like to have an object, if I am working with the customer table I want to have a customer object to work with.

Deborah Kurata

And I still, I am using data tables in my code to populate my business objects with. So I am still making use of data tables, data sets or you can use data readers to populate your controls which is what
Rocky Lhotka does in his [umm] object binding.

Deborah Kurata

So you have again lots of options there because you are controlling, how your business object works, so you can have your business object caller data access component, like the data access component that’s
provided by the enterprise library and actually have it return you a data set or a data table, that you then populate your objects with. So you create a factory method of some type that builds your object and then it binds it to the UI using the object binding
techniques. So it’s really, really nice.

Ron Jacobs

Yeah, you know, so you are writing a book you said. Yeah, so you know what, I was thinking about there has been a lot of news lately about these Oprah controversies with that million little pieces book
and the Oprah but you know what I found Oprah has a book club, I should have a book club, I should have like Ron’s book club, So like I could recommend good books. You know people are always asking me, what’s a good book and I go, I don’t know. But you know
it would be a good idea, right?

Deborah Kurata

That is a very good idea

Ron Jacobs

I’m gonna do it. And may be when you get your book ready, you send me a draft. I will read it and if I think it’s good. I am gonna put it in a book club.

Deborah Kurata

OK. I have only 3 chapters left to go

Ron Jacobs

Alright, You heard here on ARCast that I am committing to the book club. So let’s see well I totally lost track where we were. OK, we were talking about data binding and, and object binding and what not.
So when you were deciding to research this topic? was that just kind of fell out of your, I am going to write a book about object, some have to do with object binding and better go research it is, and that’s how you decided to do this?

Deborah Kurata

No, I’m, I was involved with Microsoft in terms of the really alphas and betas so I got to see very early on what they were doing with their Binding, both DataAdapter, a TableAdapter binding and also
all of their object binding.

Deborah Kurata

So I got very excited about all of that. With the book, I just had to decide how much of it I wanted to cover, how in depth that I wanted to be, but then I wanted to cover every possible choice or selected
choice.

Deborah Kurata

So the research that went into the book was more with regard to what in my opinion is the best path for creating really good object oriented applications, using an N-layered approach. You know separating
your business logic from user interface code from your data access piece and that’s really what the book is focused on.

Deborah Kurata

So I opted not to cover you know doing data binding to the database. I opted not to cover TableAdapters or any of that because I don’t think that is really what best practice is yet.

Deborah Kurata

So I opted to go what within my experience with doing several .Net 2.0 projects is with the object binding and that’s what I covered. There are also a lot of complexities that you need to deal with if
you going to fully implement all the features of object binding.

Deborah Kurata

For example, if you set up your ErrorProvider control correctly the object binding will automatically put your ErrorProvider control, next to whichever controls have error and then with regards to validation.

Ron Jacobs

Oh! Wait a minute, that's OK. Let me back up for a second because sometimes people don’t know what these things are. So an ErrorProvider is what?

Deborah Kurata

That little red dot with the exclamation point. In that you can have, I mean it was available on the first versions of .Net where you could say, the MyLastName property required and user didn’t put it
in so I am going to put this little icon next to the LastName.

Deborah Kurata

The user moves the cursor over it and it presents a tool tip that says you know LastName is required. So it provides you field level validation error messages, and with 2002 and 2003 you could put the
control on the form and manually write the code to tell it you know what text to put in it and what control will be next to and all that kind of stuff.

Ron Jacobs

OK

Deborah Kurata

With object binding it will handle all of that automatically

Ron Jacobs

So they have come up with a way where in my object I can validate inside. Hey! You didn’t put LastName, and set something on my object and then the UI will automatically ErrorProvider will show up next
to the LastName field with the nice little red thing.

Deborah Kurata

Exactly, that’s exactly correct and there’s two easy ways or there's two ways to do it. One that’s really easy all I have to do is throw an exception, so if any of your property throws an exception it
will automatically pop the error icon next to that with whatever exception text you have but that’s not very elegant. So they also have an interface that you can implement.

Deborah Kurata

If you implement that interface then it provides a richer experience with regard to managing your errors and so I cover all of that in a book article that I wrote for Code Magazine, didn’t quite go into
that level of detail, but it definitely you know with the book you have lot more pages available to cover all of that and that kind of stuff.

Ron Jacobs

So you know this is really great because well my first exposure to the object binding and this is weird you know, because I work at Microsoft people are like “don’t you like play with all of these alphas
& betas and all that”, and the answer is "No" because I just don’t have time to do. I have all the other things that I have to do but when we were working on the composite UI application block for patterns and practices, there were quick start samples.

Ron Jacobs

I started looking at each one and try to understand how it works because we are going to do web cast about them and one of the first things I do is you know try and understand how something works I bring
up the UI and then I you know start looking at the UI code and see if I can follow it down in to the objects layers.

Ron Jacobs

When I look in to the UI code that’s like no connection to any thing in the business layer, I see like how do they say data get populated. I see it in the forms but I don’t see it happening in the code.
I don’t see that little set CompanyName or our text CompanyName.text = company.text or something like that.

Deborah Kurata

Right. That’s a code that’s gone

Ron Jacobs

And its amazing because the UI code is actually very very clean, there’s very little there, and it’s just dumb, boring code anyway so like you are moving device back and forth between object and the properties
so it was very very cool to see it gone.

Ron Jacobs

Is there anything special I need to do in terms of the way I think about creating objects and that make them friendlier to binding data elements and we talk about that ErrorProvider but do I have to implement
some IWhackyBindable interface or something like that.

Deborah Kurata

If you just want to do very straightforward binding you don’t have to do anything other than have properties. So in that also, with some what different, because it used to be that the big buzz was to
have stateless objects and that basically, meant they didn’t keep state which basically meant they didn’t have any properties.

Deborah Kurata

So the industry is kind of moving away from this stateless concept because of the improvements that used to be for performance reasons or for scalability or because the way the web works with being you
know basically disconnected but all of those problems over the past several years have and been solved other ways.

Deborah Kurata

So the whole purpose for stateless objects really isn’t there any more. So you can make more statefull objects, meaning objects that have lots of properties.

Deborah Kurata

As long as you have a property on your object, you can use it for binding, so every property is then bound with associated control whether that be a text box or a date control or whatever kind of control
you would want or you can do more complex binding and bind your entire object to a grid, so you can see your whole list of customers show up in a grid with… by just doing the binding and then writing the one line of code that associates your DataSource so
it’s… it’s relatively… relatively easy.

Ron Jacobs

In fact, you can even go through the UI director, like even if you don't wanna write that one line of code you can go to the UI to pick up an object binding source, right?

Deborah Kurata

Yeah, But you still do need to write the one line of code that associates the binding source with a particular object instance. So there is still one line of code, unlike...

Ron Jacobs

Gosh! One line of code they can’t get rid of that!

Deborah Kurata

No, with the data binding they generate that one line of code if you are binding directly to data, but for object binding they don’t really know what your instance is or how you going to get your instance
whether you gonna have a create type factory method or how you going to get that instance created. So that’s the one line of code you need is to create whatever instances associated to the data source of the binding source.

Ron Jacobs

Let me inject something here about statefull Vs stateless, because actually one of the key reasons why say COM+, for example brought us stateless objects was for transactional integrity because by using
just in time activation with COM+, if you had state that was created in the middle of a transaction we force you to...to dump that state because we deactivated object before the transactions completed.

Ron Jacobs

The reason is, not so much for performance or scalability or anything else but for transaction integrity because your object doesn’t know the outcome of the transaction. It’s deactivated before the transaction
outcome is known which is good for scalability because we can go on and do something else while the DTC finishes that transaction but if you were able to hold the state across the transactional boundary, you would have to know whether the transaction succeeded
or failed because if the transaction failed the state you are holding might be invalid.

Ron Jacobs

Right, so then you can’t keep that around so you got to let it go. So anyway that was one of the reasons why stateless was sort of forced upon the world in a mould and when we thought that everybody will
build distributed app with them hosted on COM+.

Ron Jacobs

I think that’s kind of different styles of objects right and I think of the kind of objects that I’m gonna use to bind UI controls to something like, as almost like a container for data with a lot of
properties and some may be some very light weight kind of logic around validation and what not.

Ron Jacobs

Some people like to put the persistence logic right in that, say that's a customer object right, some people like to put it in the customer object may be even as static methods or whatever, but some people
prefer to have a whole another object or may be a service like object, right that’s gonna accept the customer and then actually act on it. Do you take any position in those kinds of debates?

Deborah Kurata

Well, one of the things that I really like to do with my classes is really make them focus on their purpose and so for customer class you know, is its sole purpose just to shuffle data around or does
it really have another purpose and with may be something as simple as customer, may be its only purpose really is to shuffle data around but if you have something like an invoice it has a lot larger of a purpose.

Deborah Kurata

It needs to know how to calculate itself, it needs to know how to do all of the functions that are involved with processing an invoice, it needs to may be known how to you know remove items from inventory
when invoice is posted or you know all these other business processes that could occur.

Deborah Kurata

So I think its really important to define your object model using good object oriented design techniques using you know [umm] CRC cards or some type of [umm] design tools to help you actually look at
the responsibilities of each of your objects and then once you have your basic design done then you can look at the binding scenario, you shouldn’t really be defining your business objects for binding necessarily.

Ron Jacobs

Well but there is one key reason why a lot more people have thought about their components more as a simple container and that’s service oriented architecture, right, because I have to say use the invoice
example.

Ron Jacobs

When you talking about that I am thinking if I would have to be building a system like that I would probably have a web service that does invoice processing, right and it does all that stuff. It might
return an object that represents the invoice but this object's a relatively simple container with property so why not. The real work happens back at the service.

Deborah Kurata

Yes and those you almost can think of as a different purposed class. So even though you might have your invoice class you know back on your server that knows how to do all of the invoice processing, you
also might have an invoice entity class whose only purpose in life is to shuffle the data around because with a server...service based architecture most of what you are doing at least with visual studio is passing around you know XML.

Deborah Kurata

So it’s really is only data. It’s not the logic, you can't really pass you know the coding along with the object using service oriented architecture. So then you do have the special purposed objects that
are your you know basically Data transfer objects, kind of your own little DataTables or whatever that you know whose only purpose is to maintain that data for transfer to and from your service.

Deborah Kurata

[But] the actual real work then is done [um] in your invoice object that would then be in your service and that point you are not binding to that because that’s running on server in New Jersey [laughs],
or whatever, its not where your UI is and at that point you could you know consider actually binding to your entity object that kind of depends upon what your overall architecture is.

Deborah Kurata

A lot of the clients that I am working with that are doing very focused business processes have been installed on end user systems with all three layers on the user system. So that there isn’t a need
really for a service for the basic part of the business app.

Deborah Kurata

Now it may callout to a service for a particular process but the majority of the logic and everything was actually there in the business layer sitting on the end users computer. So I think that again
you need to really look at the purpose of your application, how it will be physically deployed in order to just create these purposed classes that will then basically build the logic of your application.

Ron Jacobs

So we talked a little bit about some... you know what kind of object things you need to do, was there anything about object binding that‘s really surprised you as you kind of looked at it and went like..
Wow what about that?

Deborah Kurata

I think the thing that was most surprising was when I had finished writing my first chapters on you know building the UI, building the middle tier component, building the data access component and I looked
back and it was amazing how many pictures there were and how little code that was actually required to create basically a full blown application.

Deborah Kurata

I mean this application does your basic you know create, update, delete operations for two different things, products and customers, maintains a list of purchases that customer makes and I was completely
surprised when I was done, as to actually how little code that I had written and how many pictures I had, had because so much of it is done you know with windows or with you know setting options or modifying properties through designers and not a whole lot
of it actually had to be written with code.

Deborah Kurata

Yeah, but using object binding means that there isn’t a whole lot of generated code either that you have to carry around. So I just was kind of surprised at when I was finished how little code I had to
have written to actually get my application, pretty much all operational.

Ron Jacobs

Yeah, you know I can just hear some people out there groaning “Oh no! Less code". You know so code slingers you know they, that’s what they live for, they want to write lots of code well. Write some important
code because this kind of code that we're replacing was that boring stupid code that you don’t want to write anyway, Right.

Deborah Kurata

That’s the code that’s not in the book. I mean when it comes to, you know, executing the logic you know the more complicated kinds of logic like confirming a customer's credit status or whatever you know
none of that code's there. So that’s really the code that’s left.

Deborah Kurata

So I guess, the point that I was trying to make is that the foundation of everything that you need to do to get the basics all operational is so simple that you can then focus on you know the important
code, what is your business logic, how are you going to make that invoice process through everything that it needs to process through and you don’t need to focus on how I’m going to display the result to the user that’s when you just you know drag your business
object on to your form and all your controls show up and that part then is easy.

Ron Jacobs

So that’s pretty sweet, I must admit. So you are saying that actually the Visual Studio designer will allow you to just drop a business objects on the form and it will just like generate stuff.

Deborah Kurata

It generates all the controls, yes, so you can drag your business object from your data sources window over on to a form. So if you add customer for example and you drag it and drop it on to form it would
automatically create all of the labels, textboxes, combo boxes, check boxes whatever would be appropriate based on that type of field that you have and it’s adjustable. So you can decide that I want this field to be a radio button, this one to be a check box
or whatever.

Ron Jacobs

So that’s really cool because the thing I wrote like 12 years ago, it made everything just a textbox. This is actually smarter than that.

Deborah Kurata

Yeah, it’s much smarter than that plus it gives you complete control. So if you actually built you own controls. So say you have your own fancy calendar control that knows how to handle multi-formatted
dates or whatever. You can actually hook that in so that when you drag anything of type date over, it would use your control.

Deborah Kurata

So again, it works very well with your code, which is one of the things I’m most excited about. When I first tried using TableAdapters which are the you know connecting to the type datasets, I was shocked
at you know it generated like 600 lines of code and I was just like I don’t want all that code in there then I changed my table and all that code has to regenerated and Yak...Yak...Yak. I just want my code and I’m one of those kind of programmers that likes
my code you know, I wanted to be mine, I wanted to understand that want to know what’s going on, I want to be one who put it there and the other nice thing about object binding is it generates very little code for you.

Deborah Kurata

It’s mostly generating all of that yucky stuff like who wants to sit down and put twelve text boxes on a form. So that’s what its doing it’s generating all of that UI code that you would manually doing
by dragging the controls on yourself. You can though we talked a little bit ago about you know how you can just create properties on your objects and it would just work, but to really make it fully functional you do need to implement some interfaces. So we
talked about the error info, IErrinfo interface. There is also an INotifyPropertyChanged which you can implement if you want the user interface to recognize when your code changes the property.

Ron Jacobs

Also if you had liked some, like when they change, when they enter the zip code let’s say, you go often, look up the city based on the zip code and you change that which would fire this thing?

Deborah Kurata

Right, and then it would correctly notify the UI so that it would readjust the property otherwise it doesn’t really know to adjust, something so it does that, and there are some other fancier things that
you can implement if you want but I primarily use those too.

Deborah Kurata

The other thing that’s really useful with 2005 of course is generics, and I’m sure most people have heard about generics and it’s really kind of an odd name for, something and I’m sure you are very familiar
with it, but generics really do something specific. So its sort of......

Ron Jacobs

It should be specifics

Deborah Kurata

Yeah, Shouldn’t it be specifics? But it let’s you write very generic code that can be very specific and so one of the things that you can do is leverage that. So there is a binding list and in VB we can
call it binding list of T.

Deborah Kurata

Without the 'of' keyword in C#, I don’t know how they say that. They so use 'of', I don’t know, Yeah, but how do you say it verbally. Do they still say 'of'?

Ron Jacobs

Yeah, I guess people kind of do say, I have never really thought about it you know but Yeah, I guess people do say that

Deborah Kurata

Say, do say 'of' even though it's basically just the... Yeah.

Ron Jacobs

of' Yeah

Deborah Kurata

Anyway, binding list of T allows you then to create list of business objects that they know how to bind. So that’s how you would get like a grid type style interfaces by putting your customers into a
binding list and then you can bind to that binding list. And that gives you an editable grid of customers. So there is lot of nice things in there. But it’s not perfect. Yeah, there is couple of things that doesn’t really do real nice yet.

Ron Jacobs

OK. Oh! Right here we are gonna be here finding dirt on object binding. OK, whets the dirt?

Deborah Kurata

Well, there are a couple of things. First of all it does not do radio buttons very well and I think part of that problem is that Windows’ forms does not have a radio button group control like the web
does and so there is no single control that you can really bind the property to.

Deborah Kurata

So what you end up, having to do is creating a separate property for each little radio button you do want. So if you had you know like stock options, we are gonna keep it in stock in terms of a product,
we're gonna keep it in stock its gonna be a special order only or we are going to buy it from one of our sub contractors or whatever.

Deborah Kurata

See if you have 3 choices you stored in one field where you can't bind that field and get 3 radio buttons. You have to actually create 3 separate Boolean fields and then you have to write the code that
maps the one physical field in your table to 3 separate properties on your object in order to get it to bind correctly.

Ron Jacobs

Yeah, I can see what I would probably do normally, I wanna have one enum in my code and then I would of course map the enum to a value that I stored in actual database. Right, and then I would have a
property that return to the enum, but you are saying I could have that but I still also have to have you know the each Boolean on offer each of these values.

Deborah Kurata

If you want it to auto bind using a radio button, yes. I think the only real solution to that is to have our radio group box like the web does where you could bind to that group and it would know then
what values to put in it, so that’s one thing. The other thing is that you still, you frequently, really wish that you could iterate through the properties.

Deborah Kurata

So it would be nice to have something other than having to use reflection to give you all the properties of your object. You know so there will be some built in language feature that gave you the list
of properties that your business object has kind of like it gives you the list of forms that your Windows UI has or the list of properties of the controls, list of controls on a form.

Ron Jacobs

Why would you wanna do that?

Deborah Kurata

Well, there are some cases like, for validation that you might wanna go through if you wanna create your own mapper to your table because still ultimately even though it’s taking care of binding to the
UI you still have to take care of mapping it back to the data. So if you wanted to write something generalized I can use the word generic can I generals, so now it’s generalized.

Deborah Kurata

You wanna write something generalized that would know how to map all of your properties into fields and a table. You have to actually still do that one by one. You know my LastName property goes into
that item, ParentCode you know whatever. It would be nice if especially if you did create a constraint for your self that choice measure fieldnames and your property names the same that I could just look through and do that more easily.

Deborah Kurata

You can do it now but you have to use reflection for it and you know we always get worried about performance when you are having to use reflection. So [it would] be nicer if they gave you, you know like
a little control array kind of a thing for all of your properties and your business objects so that you can easily you know iterate through them all

Ron Jacobs

Yeah, you know years ago when .Net first came out and I was kind of you know exploring it in the very, very beginning. I looked at the attributes and I thought, these attributes look really cool like
there’s lot of potential there, I am not sure what I would do with them, you know and I started thinking about, well, one idea would be to use them to help me with mapping to the database right, so I would start putting an attributes, like a database attribute,
and say what column this thing goes on, on what table and whatever.

Ron Jacobs

Then I can have a helper class that would look and, you know, know where to put the things and I actually built one that did that and it was pretty, pretty easier do but Yeah, you have to get hands a
little dirty with little reflection stuff to do any thing about that.

Deborah Kurata

Well, the other thing would be validation one to be nice to use just attributes and say that the validation properties are required comma max length of 15 comma you know semicolon here you know or whatever
de-limiter you would want to, just as an attribute and not actually have to because right now you either have to build some kind of rules, fancy rules engine for some type for your validation which is what Rocky does in his object binding scenario.

Deborah Kurata

So I just create a validation class and then call separate validate method. So every one of my properties calls whichever validate methods are appropriate for it, but attributes seems like there would
be such a cooler way.

Ron Jacobs

Yeah, that would be. You know that’s pretty doable. May be I will go write one this afternoon

Deborah Kurata

Sell it back to Microsoft; I guess you can't do that if you are an employee.

Ron Jacobs

I guess I have already worked there; they won’t pay me for anything. They’ll say we already own you.

Deborah Kurata

…and anything that comes out of your head.

Ron Jacobs

That’s right Yeah, so well OK. So that’s interesting. Now one thing you mentioned that kind of made some question mark off of my head when you were talking about the radio buttons, kind of acting differently
in web scenario Vs form. Does object binding behave differently in the web scenario?

Deborah Kurata

Yes, and its, I kind of touched it and realized that it was completely different and just decided to drop the whole web chapter out of my book because it was so incredibly Yucky and different and whatever.
So basically it has the ability to do object, what it calls object binding, but it doesn’t use data sources window, it doesn’t use any other same techniques.

Deborah Kurata

And basically it has, forgot what it’s called, it’s not an object I think it’s called just an object source may be that you can bind to. But it doesn’t really bind to your business object unless they
match this whole slew of rules. Like they have to be public, they have to be, I mean they have to be both, read and read-write you can't have public gets and private sets on them for work and there is a whole bunch of limitations on them.

Deborah Kurata

So what people like Rocky did is he actually built his own binding control because again unlike Windows that actually has a control on the tool bar, more like the old DataControls from VB5, you know the
kind that you took off the toolbar and dropped on to your form. It’s more like that and so Rocky wrote his own, and I haven’t actually looked at the inside of it but I understood that it was quite nasty the amount of code that he had to write to actually get
all of that.

Ron Jacobs

And by the way, for people don’t know Rocky, Rocky is Rockford Lhotka who is another author actually a speaker here who will be actually recording one of these sessions with me later this afternoon. So
I will have him ask about that.

Deborah Kurata

Have him talk about that. Yes, have him talk about how much work that there was because I would been interested to know too. I’m dying to download it. His work on this is called the CSLA and it’s downloadable
off of his website. Probably the easiest thing is just to search for Lhotka if you could figure out to spell it and CSLA you can have him spell it for you too, later.

Ron Jacobs

I think he calls his framework CSLA.net or something like that. If you search for that, you probably find it. Of course I can always post the link when we post this episode on ARCast. So I may all do
that if I think about it.

Deborah Kurata

Yeah, because that control is supposed to be up there but it doesn’t, it’s not similar at all in how it works. So I focus just on web one for my book.

Ron Jacobs

Well you know there is some….

Deborah Kurata

I mean on the windows one, what did I just say!!

Ron Jacobs

The Windows one, yeah you are right, you said the Web one

Deborah Kurata

Yeah

Ron Jacobs

Okay but there is some good news here because sometimes people from the outside you know kind of go.

Ron Jacobs

Isn’t that weird that here such things works really great in Winforms while it doesn’t work so great and works very differently on ASP.Net. People don’t understand the kind of way that Microsoft works
on the inside, but the ASP.net team is an amazing team. They have done fabulous job.

Ron Jacobs

People who are web people just totally love ASP.Net, but they were kind of like off doing their own thing and Windows forms guys were off doing their own thing and they were talking little bit probably.

Ron Jacobs

In retrospect I wish they would have talked more, but the good news is that’s got Gut3 who for years and years lead the web team, got promoted after .Net 2.0 because he has done such a fantastic job.
So now he is in-charge of the whole thing. So may be he can pull these guys together and get them better connected so in the next release wont have these kind of works on it.

Deborah Kurata

No, a part of the problem though is that windows and the web don’t work the same. You know so many more issues on the web side with you know because you can’t just keep your instance. I mean you can’t
keep your business object instance just easy as pie and have it just automatically know how to deal with everything.

Deborah Kurata

I mean when you are in a web environment by definition, you are completely disconnected. [I] mean it has no idea who you were once its done giving you whatever page you just requested.

Deborah Kurata

And unless you start sticking your objects and sessions day which then create some additional work cause you has to make everything serializable

Deborah Kurata

So unless you are gonna do something like that, there is really no other way to easily keep your instance. So the fact that they can bind, do 2-way binding on the web is actually, when you really think
about it, it’s absolutely amazing that they could even make it work at all.

Deborah Kurata

So the fact that it doesn’t work like Windows, I’m sure doesn’t seem like it should matter much unless should they actually got it to work

Ron Jacobs

They pulled up a miracle Okay, let’s cut them some slack.

Deborah Kurata

But it is hard when you work like I do where you do a lot of web development and Windows development because its you know twice as much learning. It’s not just learning how to do it one way and then applying
it to the web.

Deborah Kurata

You have to learn how to do everything two ways and with 2005 that’s a one of the most disappointing thing and in general for me is that, the web has changed so much now from Windows. I mean in 2002 and
2003 it was nice. You could pretty much you know leverage everything that you knew about Windows development and pretty much you know other than the controls were a little bit different you can pretty much do a lot of the same things.

Deborah Kurata

But now with file based instead of project based and properties are different, the project properties are different, how you set those up, all the binding is different. I mean its you have to doubly learn
everything and since I have been so focused on learning the one, I haven’t spent too much time learning how to do the binding in the other yet but very soon, because I have to do both in my job so.

Ron Jacobs

Wow! So that you know well, I think they could probably make some improvements in terms of you know at least the experience being similar any way but we’ll see, we’ll have to cut on some slack there but.
Let me ask you one last question and kind of wrap this up because being this is ARCast we think about architecture and so I’m thinking how does object binding change the architecture? Does it change it at all? Do you think, or is there any impact on architecture
of an application?

Deborah Kurata

I think that for me personally most of the systems I had been architecting with like VB5 and 6 for example are very much stateless and that goes back to kind of what we were saying before, and so object
binding changes that in that it does assume that you are going to maintain state.

Deborah Kurata

So I’m not sure that object binding itself changes your architecture as much as some of the tools and features and capabilities of 2005 and you know the deployment features that it has and all of those
kinds of things really can change the way that you architect a system because you have so many more choices.

Deborah Kurata

It doesn’t have to be you know for simpler deployment you have web, for hard impossible deployment you have Windows. So everybody goes web because you don’t want to deal with dll hell, I mean all that
kind of stuff is gone. So I think it almost opens the door for more architectural choices because you can pick a Windows app because you want a Windows app not because you don’t want to have to deploy it. So I think that, that affects the way that you are
going to think about how you gonna build your application.

Ron Jacobs

Well, I think there the one real interesting example to me and this is the one which I spent a lot of time studying which is composite UI application block which uses a model view controller pattern and
that pattern works very well with object binding because your model persists, right. You always have the model and they have this notion of workspaces in the composite UI block.

Ron Jacobs

So there is a place to stick those things that invoice objects, the customer objects and views can just bind to those very, very nicely. So that’s kind of a pre-built architecture if you will, if you
go I don’t know where to start with this. Well, you can pick up something like that composite UI application block and kind of go with that architecture and actually building a much larger thing called smart client baseline architecture around that so have
all the kinds of things, few were like offline support and so forth but. Hey well, they have done some fantastic work there, and so I encourage people to go look at that. But thanks Deborah for coming by today.

Deborah Kurata

Sure, Thank you for having me.

Ron Jacobs

You are welcome. Deborah Kurata, ladies and gentlemen, Deborah we finally got the show on the air. After that failed podcast library first podcast. I don’t know some kind of glitch happened with the recording
thing and later on I went back and looked back at it, it had nothing. We talked, had this nice talk for long time and got nothing. But hey I don’t make those mistakes anymore because now we know what we are doing here on ARCast.

Ron Jacobs

I am so glad to say that. In fact I had a nice note from Patrick out in Greece and Patrick said “Hey Ron I just want to let you know you changed the boring commutes to and from the office in a great way,
learning about all this stuff I should already know." Well, hey thanks Patrick. That’s why we are here that’s all, all about We are trying to just get the knowledge out to you. So keep listening here on ARCast