import-bot (20212) [Avatar] Offline
#1
[Originally posted by vuzlaner]

Hi, Mike

I read chapters related to Naming services. I am totaly confuse why does
somebody need it?
3-4 years ago I read article about SBA( Service Based Architecture ) there was
claimed that PFC designed as 'tightly coupled' SBA. I don't remember exact
definition, but by these words there was called an architecture when we need
declare instance variables of all services we may use in our code( I call it
pointers), then we CREATE instance of the service object and then we can use
its functions.

Later ORB architecture was mention( so called "lously coupled"(?)), in this
case we don't have to decalare pointers of any services. ORB care about
finding appropriate component. Theoretically it was sound very good.

Finally, I am on practice faced with ORB through Jaguar. We used as you called
it first scenario, using CreateInstance() function and delcaring pointers. I
was little bit frastrated, where is promissed "lously coupled" pointer-less
design?

And I found in you book the description of how practically implement it in
PowerBuilder for involving Jaguar components using Naming service, Factory
etc.

Sorry for long prologue, but now I have some questions, related to usefullness
of this approach:

1. About pointer-less, we still need declare variable of component type to
call its function( see p.185, ch.7.1, for example ComponentA lnv_comp
declaration to call later lnv_comp.of_doSomething() function). You claim in
ch.5.5,p.141:
"... client is not required to have formally declared a variable of the type
of the concrete class". Fax lnv_fax isn't it 'declared a variable of the type
of the concrete class'?

2. As far as I understand the main feature of naming services is '... client
only knew about the name servers of the cluster, and did not use hard coded
component location information'. What part you mean hard coded? Parameters for
Connection object Location, Driver etc. we can define in .ini file or
Registry.

3. After reading these chapters I had a feeling that we can't use
load-balanced or high availablity features without such complicated coding
using Factory, CORBAObject and NameComponent staff. Actually we developed an
application using 'CreateInstance' approach and tested how it work in the
Jaguar cluster. We shutdown first Jaguar server, stream of client request
automatically was redirected to alive server( fail over feature ), then we
restart first server and shuted down second server, stream of client request
automatically were redirected to revived server. Yes, we had to define Name
server, list servers by comma in location parameter, but it is on servers side
and did not change anything on the client side.

I am sure I don't dig something and probaly my points will seemed to you very
strange. Well, maybe, I first time face with this kind of approach and
something I defenetely don't understand. I sorry I take your time, but
probably other guys have similar problem.

Thank you in advance.
import-bot (20212) [Avatar] Offline
#2
Re: ORB Naming Services
[Originally posted by jasonweiss]

See below...

> Hi, Mike
>
> I read chapters related to Naming services. I am totaly confuse why does
> somebody need it?
> 3-4 years ago I read article about SBA( Service Based Architecture ) there was
> claimed that PFC designed as 'tightly coupled' SBA. I don't remember exact
> definition, but by these words there was called an architecture when we need
> declare instance variables of all services we may use in our code( I call it
> pointers), then we CREATE instance of the service object and then we can use
> its functions.
>
> Later ORB architecture was mention( so called "lously coupled"(?)), in this
> case we don't have to decalare pointers of any services. ORB care about
> finding appropriate component. Theoretically it was sound very good.
>
> Finally, I am on practice faced with ORB through Jaguar. We used as you called
> it first scenario, using CreateInstance() function and delcaring pointers. I
> was little bit frastrated, where is promissed "lously coupled" pointer-less
> design?
>
> And I found in you book the description of how practically implement it in
> PowerBuilder for involving Jaguar components using Naming service, Factory
> etc.
>
> Sorry for long prologue, but now I have some questions, related to usefullness
> of this approach:
>
> 1. About pointer-less, we still need declare variable of component type to
> call its function( see p.185, ch.7.1, for example ComponentA lnv_comp
> declaration to call later lnv_comp.of_doSomething() function). You claim in
> ch.5.5,p.141:
> "... client is not required to have formally declared a variable of the type
> of the concrete class". Fax lnv_fax isn't it 'declared a variable of the type
> of the concrete class'?


Re-read section 5.2-- there is a concrete example of programming to an
interface as opposed to an implementation. In that example, I use
n_cst_broadcaster, which is the super class of e-mail, fax, print, and pager
classes. It shows that you can code to an abstract class, more specifically,
an interface.



>
> 2. As far as I understand the main feature of naming services is '... client
> only knew about the name servers of the cluster, and did not use hard coded
> component location information'. What part you mean hard coded? Parameters for
> Connection object Location, Driver etc. we can define in .ini file or
> Registry.


The main purpose of naming services is location transparency. You ask the
name server for a component, it gives you a list of servers that can fulfill
the request. In this design, for example, an application only has to know
about 3 name servers, but there could be 100 servers capable of fulfilling the
request. Also, consider this point. If the app needs to scale to more users,
using name servers one merely adds more member servers-- nothing, not even an
.ini file, on the client needs to be changed. The requests would come into
one of the three name servers and be redirected to one of maybe, now 150
servers capable of fulfilling the request.

>
> 3. After reading these chapters I had a feeling that we can't use
> load-balanced or high availablity features without such complicated coding
> using Factory, CORBAObject and NameComponent staff. Actually we developed an
> application using 'CreateInstance' approach and tested how it work in the
> Jaguar cluster. We shutdown first Jaguar server, stream of client request
> automatically was redirected to alive server( fail over feature ), then we
> restart first server and shuted down second server, stream of client request
> automatically were redirected to revived server. Yes, we had to define Name
> server, list servers by comma in location parameter, but it is on servers side
> and did not change anything on the client side.

This is completely false. Re-read page 138, it stresses:

"At this point it is worthwhile to emphasize that an overwhelming majority of
PowerBuilder clients do _not_ need to utilize either the JaguarORB or
CORBAObject objects. In fact, the majority of apps will work just fine using
the more traditional Connection object to interact with remote Jaguar
components from a PB client."

The traditional connection object inside of PB can provide all of the features
of HA and LB transparently, as long as you list more than one name server and
have a Jag environment licensed and setup for HA/LB.



>
> I am sure I don't dig something and probaly my points will seemed to you very
> strange. Well, maybe, I first time face with this kind of approach and
> something I defenetely don't understand. I sorry I take your time, but
> probably other guys have similar problem.
>
> Thank you in advance.