architecture question

G

Guest

Hello everyone,

A few of my co-workers and I are working on a concept architecture at work
because our current system has many limitations and really hardly any
documentation.

Currently we have a 2 tier system and they are the presentation tier and
business and data tier that are together. Our current system allows us to
add a new product anytime we want. Our current system passes a service code
and gets all the information needed to load that product, including the
assembly, namespace and the class that has the logic for the product and this
assembly is loaded using reflection.

I was wondering if there’s a 3rd party product from Microsoft or anyone else
that will accomplish this exact same thing or if there is a better way of
doing it? If anyone can answer my question I would really appreciate it.

Thanks,
BravesCharm
 
G

Guest

Currently we have a 2 tier system and they are the presentation tier
and business and data tier that are together. Our current system
allows us to add a new product anytime we want. Our current system
passes a service code and gets all the information needed to load that
product, including the assembly, namespace and the class that has the
logic for the product and this assembly is loaded using reflection.

Rather then passing assemblies around, you might want to take a look at
Service Oriented Architecture. Microsoft's Practice and Patterns website
has information about it.

Basically you expose a set of objects via remoting (or web services).
Applications (Presentation Tier, Custom apps, client apps, etc) connect to
these objects to perform work.

This architecture is pretty flexible and allows for failover and clustering
too (assuming you have no persisent state between requests).
 
M

Michael Nemtsev

Hello BravesCharm,

As was recomended the SOA is the solution for you.
All your product shoul be the services, any time you can add/remove new service
and you system by request should discover this service and use it

SOA is not an product, it's just guideline and policy. What concern technology
you probably will use COM+, WebServices (BPEL), XML/XSLT

B> A few of my co-workers and I are working on a concept architecture at
B> work because our current system has many limitations and really
B> hardly any documentation.
B>
B> Currently we have a 2 tier system and they are the presentation tier
B> and business and data tier that are together. Our current system
B> allows us to add a new product anytime we want. Our current system
B> passes a service code and gets all the information needed to load
B> that product, including the assembly, namespace and the class that
B> has the logic for the product and this assembly is loaded using
B> reflection.
B>
B> I was wondering if there’s a 3rd party product from Microsoft or
B> anyone else that will accomplish this exact same thing or if there is
B> a better way of doing it? If anyone can answer my question I would
B> really appreciate it.
B>
B> Thanks,
B> BravesCharm
---
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 Nietzsche
 
G

Guest

Thanks guys for your help. We are using a 2 Tier environment and kind of
using SOA. Let me explain the architecture a bit more.

1)Request comes into Web Service for product “Speakersâ€
2)Product/Service code for product “Speakers†is hard coded in the Web
Service as SPK (One of the bad designs because it’s hard coded.). The web
service takes product/service code SPK along with information about that
product and passes it to the Application server via remoting (HTTP remoting.).
3)The remoting object looks up product/service code SPK in a table in SQL
Service to get product assembly name, class name (this class has to be
inherited off a business base class and overrides a virtual method.) and
namespace that has the business logic for this product.
4)The remoting object loads the assembly and creates an instance of the
class and calls the override method. The method handles the business logic
for that product and returns to the remoting object and everything is done.

This method is great because you can easily add a new product, insert a new
row for the product/service into a table and it can be called easily without
having to recompile anything. The disadvantage is it becomes maintence hell
because there are so many assemblies because the amount of products we have.

I’m going to look deeper into SOA but I figured we were pretty doing this.
I never really thought about COM+ to host our business objects. That would
allow us to plus and unplug new objects. I don’t know anything at all about
BPEL so I’ll have to do some research on it. I’m also not sure how XML/XSLT
will help much? Anyway, thanks for a quick response.
Bravescharm
 
M

Michael Nemtsev

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top