Hello BravesCharm,
B> 1)Request comes into Web Service for product “Speakersâ€
B> 2)Product/Service code for product “Speakers†is hard coded in the
B> Web
B> Service as SPK (One of the bad designs because it’s hard coded.).
B> The web
B> service takes product/service code SPK along with information about
B> that
B> product and passes it to the Application server via remoting (HTTP
B> remoting.).
B> 3)The remoting object looks up product/service code SPK in a table in
B> SQL
B> Service to get product assembly name, class name (this class has to
B> be
B> inherited off a business base class and overrides a virtual method.)
B> and
B> namespace that has the business logic for this product.
What's likely should be changed to be on the SOA path is the way of discovering
of your new components. If you use COM+ and wrap it into BusinessProcess
or BusinessOperation (BPEL spec) you shoud ask for the name of you component
and you system should find it (you can use some kind of business server for
this like webMethods, BizTalk or smth else from open-source, we use webMethods
for this)
Using XML is the way of communication - ask to find, instant and communicate
with you service.
B> 4)The remoting object loads the assembly and creates an instance of
B> the
B> class and calls the override method. The method handles the business
B> logic
B> for that product and returns to the remoting object and everything is
B> done.
B> This method is great because you can easily add a new product, insert
B> a new row for the product/service into a table and it can be called
B> easily without having to recompile anything. The disadvantage is it
B> becomes maintence hell because there are so many assemblies because
B> the amount of products we have.
That's why shifting to the SOA diminish this effect
B> I’m going to look deeper into SOA but I figured we were pretty doing
B> this.
B> I never really thought about COM+ to host our business objects. That
B> would
B> allow us to plus and unplug new objects.
Sure, just install new component to GAC.
B> I don’t know anything at all about BPEL so I’ll have to do some research
on it.
This is one of the WSE specifications. BPEL describes you dependencies between
logic. The idea is to wrap you COM+ logic into single business operation
or into the business process - the workflow of the several business operations.
You clients should interact directly with WebServices, not the COM+.
B> I’m also not sure how XML/XSLT will help much?
it's the way to communicate between client, webServices and server logic,
because all messages are open, you can change or transfer to any message
in any time.
For example, you have a customer table, where you got new request to show
the day of the last client's purchase. In this case you should change only
XML/XSLT messages for this.
On client side you change request XML message, and add node about lastDate.
In server, where you generate SQL query based on incoming XML and XSLT to
get SQLQuery, you just add new node and new lines to get correct SQL and
fix output XML messages.
In result, on the client side, you got new field to show client's last purchage
date - without recompiling you app.
B> Anyway, thanks for a quick response.
You are welcome.
---
WBR,
Michael Nemtsev :: blog:
http://spaces.msn.com/laflour
"At times one remains faithful to a cause only because its opponents do not
cease to be insipid." (c) Friedrich Nietzsch