MS have no managed Application server?
Messages   Related Types
This message was discovered on ASPFriends.com 'aspngarchitecture' list.


Deyan Petrov
Hi guys,

I have been wondering for a long time about something very important - how
can MS offer the .NET Framework for Enterprise developement, when they have
no managed application server?!
I am sure at this point all of you will start saying - how so, there is the
EnterpriseServices namespace, and there is the .NET Server coming.
However both statements have nothing to do with a MANAGED APP Server, which
should be provided for serious enterprise development in .NET. The
EnterpriseServices in .NET use the old COM+ through COM Interop (big
performance issue), while the .NET Server comes with a new version of COM+,
but still unmanaged.
Moreover, some key features are still missing from COM+.
How can .NET match then the J2EE, where a bunch of app servers already
exists??? How are we supposed to develop scalable distributed apps in
.NET??? Using the old and insufficient COM+?? I am really thinking of
developing a framework myself, which will supply some important services to
my application ... But it's a lot of hard work, which is already done in the
J2EE world. So there are "managed" Java app servers, written in Java,
supplying a lot of extra features like Persistence, Caching of data etc, and
there is only the unmanaged good old COM+?

Please tell me what you think about this serious problem!

Regards,
Deyan Petrov

Reply to this message...
 
    
Mitch Denny
Deyan,

What a can of worms! I'm glad you raised this point since I think
the obvious lack of a seperate application server product is one
of the major selling points of the .NET and Windows platform. Its
a sad fact that many of the operating systems out there don't
provide compelling application services without the addition of
third-party software like WebSphere and WebLogic.

Market Comparison:
Vendors that ship J2EE and UNIX variants are beginning to realise
that customers want an integrated platform and are starting to
release offerings with their product sets bundled together. The
funny thing is that Microsoft has been moving in this direction
for quite some time, MTS was certainly available on Windows NT 4.0
although it was truely integrated with the arrival of Windows 2000
Server and Component Services (COM+).

COM+ Issues:
You like many developers (including myself) has issues with many
of the COM+ service offerings. But, put it into perspective, they
are just application services which you may or may not what, in
this case we are talking about distributed and declaritive
transaction support, object pooling and security.

Now, of these I think the one that most developers will avail
themselves of (when they need it) is declaritive transaction
support, but it is not always required. Think of the marshalling
perf hit as the cost of getting a atomic distributed transaction.

Alternative Approach to App Server Hosting:
When we talk about application servers we are talking about
middle-tier components which are made available to other
applications across process and network boundaries. Nothing in
that definition is hard to do, in fact its as simple as building
a Windows service:

    using System;
    using System.ServiceProcess;

    public class MyService : ServiceBase
    {

        public static void Main()
        {

            ServiceBase.Run(new MyService());

        }

    }

And providing a remoting configuration file:

    <?xml version="1.0" encoding="utf-8" ?>

    <configuration>
        <system.runtime.remoting>
            ...
        </system.runtime.remoting>
    </configuration>

In order to get the scalability required in the middle tier it
is usually advisable to implement a singleton pattern, but it
isn't mandatory. You can scale the above out quite easily using
NLB or a dedicated hardware load balancer.

Other Architectures:
Of course, here I outline only one of the possible architectures,
quite often (if not the majority of cases) it is acceptable not
to physically seperate your application components (with the
exception of the database server). Applications like IBuySpy
get great performance simply by running the presentation and
business tiers in the same process space, this is perfectly
valid and advisable if security doesn't demand physical
seperation of components (there is a hybrid mix where you have
robot processes working on the back-end which should run on
your front-end farm).

Persistence:
On the subject of persistence, I guess you are specifically
refering to CMP (Container Managed Persistence for those who
haven't worked with J2EE/EJB before). While CMP is a nice feature
quite often it can be a liability and can be just plain painful
to get it to map correctly to your underlying schema.

BMP is a more practical model at the moment, but I am open
to advancements in the ORM space because I really do like
to think object orientated.

Caching:
Caching? What is a cache? Its just a memory storage facility
with a time-decay (usually) facility, ASP.NET has formalised
the mechanism with its Cache intrinsic, but the functionality
is easily emulated in Windows services etc.

Summary:
I guess the bottom line is that I don't see a serious problem
here at all, its quite simple to build enterprise grade applications
in .NET right now and I would be willing to back the Windows
solution on a price/performance basis over your commerical
J2EE platforms. FWIW, I understand that Fujitsu is working on
something in the .NET App Server space, closely aligned with
their existing Interstage product and I am sure Microsoft is
doing something here as well.

Lets get specific! What challenges do you have right now which
you are hitting a wall with .NET on?

----------------------------------------
- Mitch Denny
- Technical Specialist
- Click here to reveal e-mail address
- http://www.monash.net
- +61 (414) 610-141
-

-----Original Message-----
From: Deyan Petrov [mailto:Click here to reveal e-mail address]
Sent: Monday, 29 July 2002 5:45 PM
To: aspngarchitecture
Subject: [aspngarchitecture] MS have no managed Application server??

Hi guys,

I have been wondering for a long time about something very important -
how can MS offer the .NET Framework for Enterprise developement, when
they have no managed application server?! I am sure at this point all of
you will start saying - how so, there is the EnterpriseServices
namespace, and there is the .NET Server coming. However both statements
have nothing to do with a MANAGED APP Server, which should be provided
for serious enterprise development in .NET. The EnterpriseServices in
.NET use the old COM+ through COM Interop (big performance issue), while
the .NET Server comes with a new version of COM+, but still unmanaged.
Moreover, some key features are still missing from COM+. How can .NET
match then the J2EE, where a bunch of app servers already exists??? How
are we supposed to develop scalable distributed apps in .NET??? Using
the old and insufficient COM+?? I am really thinking of developing a
framework myself, which will supply some important services to my
application ... But it's a lot of hard work, which is already done in
the J2EE world. So there are "managed" Java app servers, written in
Java, supplying a lot of extra features like Persistence, Caching of
data etc, and there is only the unmanaged good old COM+?

Please tell me what you think about this serious problem!

Regards,
Deyan Petrov

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Deyan Petrov
Hi Mitch,

10x for your reply. I like your overview of the general problem, but the
specific problems are more important ;)

The situation now is:
If I want to build an enterprise distributed application I don't have an
appropriate application server to use.
COM+ used in .NET has a number of problems:
1) It requires COM Interop Services to be used, which impedes heavily the
performance.
2) It's an old technology, which has some problems - it allows transaction
attributes only at the class level (not at the method level), in the .NET
Server it will allow to specify isolation level, but now it doesn't. Also
the role-based security means that I have to hardcode the roles in my app,
which I don't want, I want to be able to configure the access permissions of
the roles from the client.
3) It is not easy enough to register your managed components with it.

I need a managed app server, or just a framework of services, which will
allow me to:
1) concentrate on the pure business logic
2) transparent transaction handling, security, logging using the concept of
Interception
3) other scalability/failover services, which at this point are not so
important to me, as I can load balance the interface entry points (the web
servers).
4) persistence management - some form of ORM.
5) transparently distribute even physically my components (for example I
want all the payments to be directed to 2 payment servers in my web farm
using remoting). I will have the presentation and business logic on the same
physical machine, because I fully agree that the cost of
marshalling/unmarshalling is too big.

I intend to use the Facade design pattern, ContextBoundObjects for my Facade
classes with interception, which will add message sinks which will handle
transparently the transaction handling, security and logging. It's too much
work, though. Also I still am not sure what's the best approach to
persistence of my business objects ....

Regards,
Deyan Petrov

"Mitch Denny" <Click here to reveal e-mail address> wrote in message
news:690159@aspngarchitecture...
[Original message clipped]

Reply to this message...
 
    
Damon Allison
[Original message clipped]

You're joking, right? While it is possible to use COM+ services, there is
much room for improvement. I'll give you one concrete example.

I am in the process of making an object available via remoting, so I create
a remoting host (like the service approach you suggest). Unfortunately
there is more to hosting a remoting object than saying "Service.Run". For
starters, I want to incorporate Windows security. Second, I want the host
to be multi-threaded to handle multiple requests simultaneously.

I've been told to host my remoting objects in IIS, which provides both
security and performance improvements. Again, this is a joke, right? Try
telling the network team we want IIS on a middle tier machine. Thier
response: no way, we don't want the potential security breaches nor do we
want to patch another IIS server with the rest of our IIS boxes. IIS is not
meant to host middle tier components, its meant to host web sites. Using
IIS in the middle tier is overkill.

Lets also assume that we create another remoting host without using IIS. We
end up either rewriting much of the same functionality or enhancing our
current remoting host to host multiple objects simultaneously. What we end
up doing is creating our own application server. Every company (like
Deyan's) that deploys remoting will be creating their own hosts with common
functionality, a definite candidate for a 'server' solution product. Our
company doesn't have the time nor the resources to create our own
application server.

I would like to see an "Application Center" like managed application server
from MS in the next year to not only host remoting objects, but provide the
other concerns Deyan proposed such as managed transactions, etc.

Damon

----- Original Message -----
From: "Mitch Denny" <Click here to reveal e-mail address>
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Monday, July 29, 2002 5:54 AM
Subject: [aspngarchitecture] RE: MS have no managed Application server??

[Original message clipped]

Reply to this message...
 
    
James Yang
hmm I don't get what you are complaining about. What's wrong with creating
distributed apps with remoting? or even creating windows service with .NET
??? Why do you "need" to use COM+ ?

Ive deployed a distributed app with .NET using remoting. for failover and
load balancing ive used application center and works fine!

sorry if i sound stupid.. but to me its quiet obvious to use remoting and
app center for distributed app..maybe cuz i don't get the big picture (???)

James Yang

----- Original Message -----
From: "Deyan Petrov" <Click here to reveal e-mail address>
Newsgroups: aspngarchitecture
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Monday, July 29, 2002 10:16 PM
Subject: [aspngarchitecture] Re: MS have no managed Application server??

[Original message clipped]

Reply to this message...
 
    
Damon Allison
The limitation (complaint is too strong a word :-) with remoting in
particular is for every remoting application you create you need to write a
host or use a prebuilt host like IIS. Using IIS is overkill in some
respects and writing multiple hosts to perform multi-threading and security
is repetitive and time consuming.

The key point in your statement was the fact that you use application center
to host your applications. Application center could be enhanced to provide
managed features like acting as a configurable remoting host.

The performance associated with crossing the COM/NET border is unnecessary
and can be avoided with a managed transaction manager. COM relies on old
technology, much of which I don't understand, and seems to be a limiting
factor in managed applications. I'd sure be interested to hear someone
versed in COM give an explanation as to the implications (if any) the
underlying com architecture imposes on managed applications.

Just .02 :-)

Thanks! Damon

----- Original Message -----
From: "James Yang" <Click here to reveal e-mail address>
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Monday, July 29, 2002 7:43 AM
Subject: [aspngarchitecture] Re: MS have no managed Application server??

[Original message clipped]

Reply to this message...
 
    
James Yang
Just note.. i know very little about COM+ ... so the purpose of that mail
was to see what COM+ can do... not criticise him for using COM+ in any way..

James

----- Original Message -----
From: "James Yang" <Click here to reveal e-mail address>
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Monday, July 29, 2002 10:43 PM
Subject: [aspngarchitecture] Re: MS have no managed Application server??

[Original message clipped]

Reply to this message...
 
    
Brian Espey
in what particular respects do you think using IIS is
overkill?

Brian

--- Damon Allison <Click here to reveal e-mail address> wrote:
[Original message clipped]


__________________________________________________
Do You Yahoo!?
Yahoo! Health - Feel better, live better
http://health.yahoo.com

Reply to this message...
 
    
Ben Hyrman
sorry for the long-windedness....but hey, hopefully it touches on some points.

With the advent of COM, Microsoft introduced the Service Control Manager (SCM) to act as the middleman in instantiating objects. You pass the SCM a ProgID, or a class ID, and it handles all of the work of locating and loading the corresponding DLL or out-of-process EXE.

With the introduction of DCOM, the SCM was updated to allow for instantiating objects on remote servers. This helped with building distributed COM applications, but it still wasn't great. DCOM still had some nasty problems that limited scalability and reliability. DCOM would pin requests to a single server. If you went through a load balancer, DCOM would pin to the physical server on the other side. So if a' is the load balancer for a and b, and the request is answered by b, then b has the request for the life of the object. If server b crashes, then the object waits a very long time before timing out...there is a hack to reduce the wait time by modifying the SCM, but it's a hack.

As I understand it, COM+ integrates many one-off solutions into a single package. MTS is now built right in.

It should be noted that COM+ is not COM and .NET does not replace COM+, only COM. Thus, at this point, there is still an interop layer in place....but only at this point.

Application Center introduced Component Load Balancing (CLB). CLB extended the SCM yet again. Where DCOM allowed for remote COM invocation, CLB allowed for dynamic remove COM invocation. Instead of relying on one machine to process all requests, CLB distributes the load across an entire server farm. Application Center constantly monitors the servers in the cluster and distributes work accordingly. App Center does many other wonderful things, but I think it's main worth is in it's CLB abilities.

However, Application Center is a software solution. I do not believe it solves the problems that DCOM had with hardware solutions such as F5's Big/IP load balancer or Cisco's load balancer. With App Center, Microsoft went a far way towards achieving better COM+ scalability. However, I don't think we're there yet.

Notice a trend though, a technology is introduced and then made core to the product. MTS was introduced (anyone remember all the joys and fun of MTS 0.9?) and was eventually bundled in with COM as a solid, and easily managed, offering.

In my opinion, what is missing from .NET that I foresee being bundled into an App Center .NET 2003 Server (or however they're naming things now):

Single deployment to a cluster: Xcopy is great, but it's not fully Microsoft-ized yet. We're spoiled by GUIs and double-clicks. I'd expect to see the ability to deploy to a server cluster, which is what App Center does very well with COM+ today.

Managed component load balancing: A native .NET solution that extends the App Center COM+ support

A remoting server: The two current options, roll your own or use IIS, are not acceptable. I would foresee either a solid standalone remoting server or a stripped down version of IIS 6 that extends the IIS concepts of sites to remoting, but doesn't bring along the need to run a web server.

Things I'd like to see bot expect would come from another vendor: object-relational mapping (good article on C# Today a few weeks ago..and Martin Fowler actually makes this one of the pillars of his upcoming book), tie-in with LDAP for role-based security.

Things I think have come a long way and are at least the building blocks for enterprise development: ASP.NET caching, libraries for thread pooling, ADO.NET connection pooling, better security models.

Ben

---------- Original Message ----------------------------------
From: "James Yang" <Click here to reveal e-mail address>
Reply-To: "aspngarchitecture" <Click here to reveal e-mail address>
Date: Mon, 29 Jul 2002 23:56:45 +1000

[Original message clipped]

Reply to this message...
 
    
Ben Hyrman
In the respect that it is a full web server. It is also a full web server that sees a fair number of security bulletins. At least here, the IIS boxes go in the dirty trunks of the network. I would be beaten rather severely if I asked for IIS on an app server.

I see this as a temporary hack to get us through until a solid solution is delivered. A web server that is tuned for I/O and stateless requests should not be forced to play the part of remoting server.

---------- Original Message ----------------------------------
From: Brian Espey <Click here to reveal e-mail address>
Reply-To: "aspngarchitecture" <Click here to reveal e-mail address>
Date: Mon, 29 Jul 2002 08:07:13 -0700 (PDT)

[Original message clipped]

Reply to this message...
 
    
Damon Allison
[Original message clipped]

I got it! .NET+ Application Center 2003 XP Server :-)

Only kidding,

Damon

----- Original Message -----
From: "Ben Hyrman" <Click here to reveal e-mail address>
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Monday, July 29, 2002 10:26 AM
Subject: [aspngarchitecture] Re: MS have no managed Application server??

> sorry for the long-windedness....but hey, hopefully it touches on some
points.
[Original message clipped]

ProgID, or a class ID, and it handles all of the work of locating and
loading the corresponding DLL or out-of-process EXE.
[Original message clipped]

distributed COM applications, but it still wasn't great. DCOM still had some
nasty problems that limited scalability and reliability. DCOM would pin
requests to a single server. If you went through a load balancer, DCOM would
pin to the physical server on the other side. So if a' is the load balancer
for a and b, and the request is answered by b, then b has the request for
the life of the object. If server b crashes, then the object waits a very
long time before timing out...there is a hack to reduce the wait time by
modifying the SCM, but it's a hack.
[Original message clipped]

place....but only at this point.
[Original message clipped]

for dynamic remove COM invocation. Instead of relying on one machine to
process all requests, CLB distributes the load across an entire server farm.
Application Center constantly monitors the servers in the cluster and
distributes work accordingly. App Center does many other wonderful things,
but I think it's main worth is in it's CLB abilities.
[Original message clipped]

Big/IP load balancer or Cisco's load balancer. With App Center, Microsoft
went a far way towards achieving better COM+ scalability. However, I don't
think we're there yet.
[Original message clipped]

0.9?) and was eventually bundled in with COM as a solid, and easily managed,
offering.
[Original message clipped]

see the ability to deploy to a server cluster, which is what App Center does
very well with COM+ today.
[Original message clipped]

a stripped down version of IIS 6 that extends the IIS concepts of sites to
remoting, but doesn't bring along the need to run a web server.
[Original message clipped]

Martin Fowler actually makes this one of the pillars of his upcoming book),
tie-in with LDAP for role-based security.
[Original message clipped]

ADO.NET connection pooling, better security models.
[Original message clipped]

Reply to this message...
 
    
Russ McClelland
V2VsbCwgbW9zdCBhcHBsaWNhdGlvbnMgZG8gbm90IG5lZWQgYXBwbGljYXRpb24gc2VydmVycy4g
IEFwcCBTZXJ2ZXJzDQphcmUgb25seSBnb29kIGlmIHlvdSBuZWVkIGRpc3RyaWJ1dGVkIHRyYW5z
YWN0aW9ucyhtb3N0IGRvbid0IG5lZWQgdGhpcw0Kb3ZlcmhlYWQgc28ganVzdCB1c2UgbG9jYWwg
dHJhbnNhY3Rpb25zIGF0IHRoZSBEQiBsZXZlbCksIG9iamVjdCBwb29saW5nDQooZGViYXRhYmxl
KSwgc2VjdXJpdHkuICBXaGF0IGZlYXR1cmVzIGFyZSB5b3UgbWlzc2luZyBpbiBDT00rIHRoYXQg
eW91DQp0aGluayBhcmUgYXZhaWxhYmxlIGluIEoyRUU/ICBQZXJzaXN0ZW5jZT8gIA0KIA0KUGVy
c2lzdGVuY2UgKGVpdGhlciB0eXBlKSBpbiBKMkVFIGlzIGEgam9rZS4gIE1QIGluIEoyRUUgaXMg
cHJlZGljYXRlZA0Kb24gdGhlIG5vdGlvbiB0aGF0IHRoZSBhcHAgc2VydmVyIHdpbGwgY2FjaGUg
YSBiZWFuIHdpdGggdGhlICJsYXRlc3QiDQp2ZXJzaW9uIG9mIHRoZSBkYXRhIGluIG1lbW9yeS4g
IFRoaXMgcmVxdWlyZXMgdHdvIHRoaW5nczoNCiANCjEuICBUaGUgZmFsc2UgYXNzdW1wdGlvbiB0
aGF0IHlvdSBjYW4gaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgZGF0YQ0KZnJvbSBhIGRhdGFi
YXNlIGluIG1lbW9yeSBvbiBhIG1hY2hpbmUgb3RoZXIgdGhhbiB0aGUgREIgc2VydmVyIGl0c2Vs
Zi4NClNheSBJIGhhdmUgMSBtaWxsaW9uIGJlYW5zIGNhY2hlZCBpbiBtZW1vcnkgb24gYXBwIHNl
cnZlcnMgaW4gdGhlDQplbnRlcnByaXNlLiAgTm93IGEgc2NlbmFyaW8gc3VjaCBhcyB0aGlzIG9j
Y3VyczogIGV2ZXJ5b25lIGluIHRoZQ0KZm9sbG93aW5nIFpJUCBjb2RlcyBhcmUgaGF2aW5nIHRo
ZSBhcmVhIGNvZGVzIG9mIHRoZWlyIHBob25lIG51bWJlcnMNCmNoYW5nZSBmcm9tIDIxNCB0byA5
NzIuICBBbSBJIGdvaW5nIHRvIHdyaXRlIGEgamF2YSBhcHAgdG8gY2hhbmdlIHRob3NlDQpwaG9u
ZSBudW1iZXJzIGFuZCB0b3VjaCB0aGUgb25lIG1pbGxpb24gYmVhbnMgdGhhdCBhcmUgYWZmZWN0
ZWQgb3IgYW0gSQ0KZ29pbmcgdG8gc3BlbmQgMzAgc2Vjb25kcyB3cml0aW5nIGEgU1FMIHF1ZXJ5
IHRvIHVwZGF0ZSB0aGUgZGF0YS4gIE5vdw0KYWxsIHlvdXIgY2FjaGVkIGJlYW5zIGFyZSBpbnZh
bGlkIGFuZCBoYXZlIHRvIGJlIHJlLXJlYWQuDQogDQoyLiAgVGhlIGFwcCBzZXJ2ZXIgd2lsbCBk
byBhIGJldHRlciBqb2IgY2FjaGluZyBkYXRhIHRoYW4gdGhlIERCIHNlcnZlci4NClNvLCB5b3Ug
Y2hvaWNlcyBhcmU6IGR1bWIgYSB0b24gb2YgbW9uZXkgYnV5aW5nIG1lbW9yeSBmb3IgZG96ZW5z
IG9mIGFwcA0Kc2VydmVycywgb3IgcHV0IG1vcmUgbWVtb3J5IG9uIHRoZSBEQiBzZXJ2ZXIuICBU
aGUgREIgc2VydmVyIGlzIGFscmVhZHkNCmNhY2hpbmcgYXMgbXVjaCBvZiB0aGUgdGFibGVzIGFu
ZCBpbmRpY2VzIGFzIHBvc3NpYmxlLCBzbyB0aHJvdWdocHV0DQpzaG91bGRuJ3QgYmUgYW4gaXNz
dWUgdW5sZXNzIHlvdSBnZXQgdG8gbWFzc2l2ZWx5IHNjYWxhYmxlIHN5c3RlbXMNCih3aGljaCBt
b3N0IHBlb3BsZSBkb24ndCBuZWVkKS4gIElmIHlvdSBkbyBuZWVkIHRoZSBtYXNzaXZlbHkgc2Nh
bGVkDQpzeXN0ZW0sIHJlZmVyIHRvIHBvaW50ICMxIGFib3V0IGhvdyBpbiB0aGUgaGVjayB5b3Ug
cGxhbiB0byBrZWVwIGRhdGENCmNhY2hlZCB3aGVuIHRoZSBkYXRhIGNoYW5nZXMgYW5kIHRoZXJl
IGFyZSBubyBtZWNoYW5pc21zIHRvIHJlZnJlc2ggdGhlDQpkYXRhIG90aGVyIHRoYW4gaGF2aW5n
IHRoZSBiZWFuIGNoZWNrIGVhY2ggdGltZS4NCg0KCS0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t
IA0KCUZyb206IERleWFuIFBldHJvdiANCglTZW50OiBNb24gNy8yOS8yMDAyIDI6NDQgQU0gDQoJ
VG86IGFzcG5nYXJjaGl0ZWN0dXJlIA0KCUNjOiANCglTdWJqZWN0OiBbYXNwbmdhcmNoaXRlY3R1
cmVdIE1TIGhhdmUgbm8gbWFuYWdlZCBBcHBsaWNhdGlvbg0Kc2VydmVyPz8NCgkNCgkNCg0KCUhp
IGd1eXMsDQoJDQoJSSBoYXZlIGJlZW4gd29uZGVyaW5nIGZvciBhIGxvbmcgdGltZSBhYm91dCBz
b21ldGhpbmcgdmVyeQ0KaW1wb3J0YW50IC0gaG93DQoJY2FuIE1TIG9mZmVyIHRoZSAuTkVUIEZy
YW1ld29yayBmb3IgRW50ZXJwcmlzZSBkZXZlbG9wZW1lbnQsDQp3aGVuIHRoZXkgaGF2ZQ0KCW5v
IG1hbmFnZWQgYXBwbGljYXRpb24gc2VydmVyPyENCglJIGFtIHN1cmUgYXQgdGhpcyBwb2ludCBh
bGwgb2YgeW91IHdpbGwgc3RhcnQgc2F5aW5nIC0gaG93IHNvLA0KdGhlcmUgaXMgdGhlDQoJRW50
ZXJwcmlzZVNlcnZpY2VzIG5hbWVzcGFjZSwgYW5kIHRoZXJlIGlzIHRoZSAuTkVUIFNlcnZlcg0K
Y29taW5nLg0KCUhvd2V2ZXIgYm90aCBzdGF0ZW1lbnRzIGhhdmUgbm90aGluZyB0byBkbyB3aXRo
IGEgTUFOQUdFRCBBUFANClNlcnZlciwgd2hpY2gNCglzaG91bGQgYmUgcHJvdmlkZWQgZm9yIHNl
cmlvdXMgZW50ZXJwcmlzZSBkZXZlbG9wbWVudCBpbiAuTkVULg0KVGhlDQoJRW50ZXJwcmlzZVNl
cnZpY2VzIGluIC5ORVQgdXNlIHRoZSBvbGQgQ09NKyB0aHJvdWdoIENPTSBJbnRlcm9wDQooYmln
DQoJcGVyZm9ybWFuY2UgaXNzdWUpLCB3aGlsZSB0aGUgLk5FVCBTZXJ2ZXIgY29tZXMgd2l0aCBh
IG5ldw0KdmVyc2lvbiBvZiBDT00rLA0KCWJ1dCBzdGlsbCB1bm1hbmFnZWQuDQoJTW9yZW92ZXIs
IHNvbWUga2V5IGZlYXR1cmVzIGFyZSBzdGlsbCBtaXNzaW5nIGZyb20gQ09NKy4NCglIb3cgY2Fu
IC5ORVQgbWF0Y2ggdGhlbiB0aGUgSjJFRSwgd2hlcmUgYSBidW5jaCBvZiBhcHAgc2VydmVycw0K
YWxyZWFkeQ0KCWV4aXN0cz8/PyBIb3cgYXJlIHdlIHN1cHBvc2VkIHRvIGRldmVsb3Agc2NhbGFi
bGUgZGlzdHJpYnV0ZWQNCmFwcHMgaW4NCgkuTkVUPz8/IFVzaW5nIHRoZSBvbGQgYW5kIGluc3Vm
ZmljaWVudCBDT00rPz8gSSBhbSByZWFsbHkNCnRoaW5raW5nIG9mDQoJZGV2ZWxvcGluZyBhIGZy
YW1ld29yayBteXNlbGYsIHdoaWNoIHdpbGwgc3VwcGx5IHNvbWUgaW1wb3J0YW50DQpzZXJ2aWNl
cyB0bw0KCW15IGFwcGxpY2F0aW9uIC4uLiBCdXQgaXQncyBhIGxvdCBvZiBoYXJkIHdvcmssIHdo
aWNoIGlzIGFscmVhZHkNCmRvbmUgaW4gdGhlDQoJSjJFRSB3b3JsZC4gU28gdGhlcmUgYXJlICJt
YW5hZ2VkIiBKYXZhIGFwcCBzZXJ2ZXJzLCB3cml0dGVuIGluDQpKYXZhLA0KCXN1cHBseWluZyBh
IGxvdCBvZiBleHRyYSBmZWF0dXJlcyBsaWtlIFBlcnNpc3RlbmNlLCBDYWNoaW5nIG9mDQpkYXRh
IGV0YywgYW5kDQoJdGhlcmUgaXMgb25seSB0aGUgdW5tYW5hZ2VkIGdvb2Qgb2xkIENPTSs/DQoJ
DQoJUGxlYXNlIHRlbGwgbWUgd2hhdCB5b3UgdGhpbmsgYWJvdXQgdGhpcyBzZXJpb3VzIHByb2Js
ZW0hDQoJDQoJUmVnYXJkcywNCglEZXlhbiBQZXRyb3YNCgkNCgkNCgkNCgkNCgkNCgl8IFthc3Bu
Z2FyY2hpdGVjdHVyZV0gbWVtYmVyIHJ1c3MubWNjbGVsbGFuZEBzbWFydG9ianguY29tID0NCllP
VVIgSUQNCgl8IGh0dHA6Ly93d3cuYXNwbGlzdHMuY29tL2FzcGxpc3RzL2FzcG5nYXJjaGl0ZWN0
dXJlLmFzcCA9DQpKT0lOL1FVSVQNCgl8IGh0dHA6Ly93d3cuYXNwbGlzdHMuY29tL3NlYXJjaCA9
IFNFQVJDSCBBcmNoaXZlcw0KCQ0KCQ0KDQo
Reply to this message...
 
    
Ben Hyrman
I guess I haven't seen many deployments where an application had millions of
beans...much less needing all of those beans to be invalidated at the same
time. Nor have I seen many architectures where a call through a firewall to
a database and back has been faster than a local object call.

I definiately agree with you that most people don't need massively scalable
systems. Heck, most people could probably use Access for all of their needs.
However, many businesses, especially the larger enterprises that Microsoft
has started getting serious about targeting, appear to need scalable
systems. There's a reason that Windows 2000 Datacenter can scale to 32
processors, Cisco still insists on making load balancers, and companies like
Best Buy and Sony are deploying on ATG Dynamo.

As far as how do you keep things in sync...the more elegant solutions I have
seen allow for updates in two ways.

"Small" updates are made through an application API that will write to the
database and invalidate only the objects that need to be reloaded
"Large" updates are made directly against the database and then the
application API is called to invalidate the entire cache for that particular
object

Ben

----- Original Message -----
From: "Russ McClelland" <Click here to reveal e-mail address>
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Monday, July 29, 2002 5:22 PM
Subject: [aspngarchitecture] RE: MS have no managed Application server??

[Original message clipped]

----------------------------------------------------------------------------
----

[Original message clipped]

Reply to this message...
 
    
Deyan Petrov
Hi,

You guys must be definitely kidding. I was refering to building ENTERPRISE
DISTRIBUTED applications, and statements that "most" applications don't need
an app server are hilarious. I don't care about "applications" consisting of
1 winform, or apps written with the business logic in the sprocs in the
database etc. I am talking about apps which have a well defined object
design, consisting of encapsulated in classes business logic, which should
be very scalable.

Persistence in J2EE is not a joke. If you are really well acquainted with
the EJBs you will know that they try to hide the persistence stuff from the
programmer of business objects. So persistence/transaction/security etc.
logic is not sprinkled everywhere in your code, but is HIDDEN and applied
using interception, which leaves your business code clean and pure, i.e.
easy to maintain.

Data caching on the app server is a good thing. If you rely on your
database, then you'll end up unable to scale your application any more
sooner or later. The statements which are made in relation to this point
make me understand, that you really haven't programmed large enterprise
systems.

The functions of an app server are numerous and I don't want to go into
detail. Please reread my second email in this thread, where I specify my
concrete requirements, which are only a very small subset of an app server
functionality.

I am really sorry that so far I haven't heard the opinions of people who
have really dealt with problems specific to the distributed enterprise
application development. Once again I want to state, that the emphasis is
not so much on distributed, as I refer more to a logical distribution and a
physical one, although the latter should be possible. A framework should
make simple things simpler and complex things possible ...

Regards,
Deyan Petrov

"Russ McClelland" <Click here to reveal e-mail address> wrote in message
news:690643@aspngarchitecture...
[Original message clipped]

Reply to this message...
 
    
Wolfgang Baeck
Deyan,

I've been following this for a while and still don't have the time to devote
to it as much as it needs to so that you get an idea of where I'm coming
from. But, here is a short history.

I've, together with a team, designed and architected a large enterprise
system for mortgage and refinance applications for a large bank. The system
needed to get information from about 6 major data sources (FDR Omaha
Nebraska, Altell NJ, 4 internal database systems such as savings, checkings,
fraud, etc).

The system was designed fully OO and rule based, implemented in Smalltalk
and is in operation for 6 years now.

The data access was completely intercepted and hidden from the business
object developer, cached where necessary. It was an off the shelf first
class system that was originally developed commercially in Smalltalk is now
available for Java.

The database grew by about 2 GB per week, everything was versioned and we
had to be able to show data as it was on a certain date in the past due to
auditing reasons. No address of an individual, no information was ever
overwritten, we always had to create an new version of everything.

Impressions:

The hidden, automatic intercepted dealing with the data store was a pain. In
order to accomplish that, one has to have the "Schema" at least in two
places. First, in the data base, and second, in the data access components.
Since it was hidden, every newcomer to the project broke it in some fashion.
Either the new programmer did something to the business object that wasn't
represented in the db schema, or vice versa, or they did something to the BO
and the DB and forgot the "Hidden" layer.

The performance requirements where such that the hidden and caching layer
needed tons of help. We couldn't rely on it to suck certain information
asynchronously in because sometimes that was much to slow for the user who
had a customer on the phone and needed within 7 seconds to have basic
information from all systems up on his window. So we had to write special
stored procs that sucked in just text strings that got thrown onto the
window for immediate feedback while the system built the business objects in
a separate thread.

As a side note, we had our leading designers sit with the user through
customer service calls to see how their beloved system "sucked" from the
user's perspective because when you have a customer on the phone, seconds
count.

I could go on for a long time but I'm not sure what value it would provide
other than saying: I have worked on more than one LARGE ENTERPRISE system
with 300 to 3000 LAN and WAN users and have NEVER found the silver bullet.
All of them needed special treatment and I'm not sure that I keep on looking
for THE solution. I personally have gone from the business object extreme
with all data access hidden to the stateless object extreme just to see it
working.

So, while I agree that many things need to be done and in some respects the
advances of the hardware will make things possible in the future that are a
drag right now, I object to the tenor of your posts that seems to imply that
J2EE and EJB has all that that is missing everywhere else and seems to
belittle some of the people here who may have a bit less OO experience but
are nice to give it a try and post their understanding and experience.

With my many years of OO Experience in Smalltalk and Object Prolog were we
designed systems for IDS Financial (American Express), Fidelity of Boston,
USAA Federal Savings Bank, NationsBank now Wells Fargo that were the core
systems for their business, we wouldn't have touched Java to accomplish some
of the things that we did.

Wolfgang

-----Original Message-----
From: Deyan Petrov [mailto:Click here to reveal e-mail address]
Sent: Tuesday, July 30, 2002 1:42 AM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

Hi,

You guys must be definitely kidding. I was refering to building ENTERPRISE
DISTRIBUTED applications, and statements that "most" applications don't need
an app server are hilarious. I don't care about "applications" consisting of
1 winform, or apps written with the business logic in the sprocs in the
database etc. I am talking about apps which have a well defined object
design, consisting of encapsulated in classes business logic, which should
be very scalable.

Persistence in J2EE is not a joke. If you are really well acquainted with
the EJBs you will know that they try to hide the persistence stuff from the
programmer of business objects. So persistence/transaction/security etc.
logic is not sprinkled everywhere in your code, but is HIDDEN and applied
using interception, which leaves your business code clean and pure, i.e.
easy to maintain.

Data caching on the app server is a good thing. If you rely on your
database, then you'll end up unable to scale your application any more
sooner or later. The statements which are made in relation to this point
make me understand, that you really haven't programmed large enterprise
systems.

The functions of an app server are numerous and I don't want to go into
detail. Please reread my second email in this thread, where I specify my
concrete requirements, which are only a very small subset of an app server
functionality.

I am really sorry that so far I haven't heard the opinions of people who
have really dealt with problems specific to the distributed enterprise
application development. Once again I want to state, that the emphasis is
not so much on distributed, as I refer more to a logical distribution and a
physical one, although the latter should be possible. A framework should
make simple things simpler and complex things possible ...

Regards,
Deyan Petrov

"Russ McClelland" <Click here to reveal e-mail address> wrote in message
news:690643@aspngarchitecture...
[Original message clipped]

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Mark Feinholz
On the topics of data/object state caching and scalability...

Web Application: I've always had a very hard time coming up with a
scenario where a physically separated application layer makes any sense.
Does anyone have an example of a system that is designed with the
application layer physically separated from the web server - and why
they architected it that way? When it comes time to scale it always
seems to make sense to just add more servers to the web farm. There are
application processes I suppose though that are better suited to be
shipped off to a farm of application servers that are configured to meet
the specific processing needs of the application better. But if adding
a new server to the web farm is the scaling solution, then it seems that
Asp.Net's caching functionality takes care of the caching needs. It is
certainly not automatic though - you need to design your system around
this approach - including coming up with a way to invalidate the cache
when "mostly static" info in the db is changed.

WinForm applications: It is much easier for me to come up with
scenarios where application servers - separated from the client machine
would be useful. It seems that the .Net answer to this is remoting -
and I agree that the lack of an application server to help out here
seems like a missing piece of the architecture. I have to build my own
multi-threaded server to host the remote process? And where is the
caching? It doesn't feel right (at least not yet - maybe I just need
time to be convinced) for a web server to be the answer to this need.

On the topic of distributed transactions:

I am very concerned that this is not available without resorting to
com+. I keep hearing comments like: "no one hardly ever needs
distributed transactions". I consistently architect applications that
talk to 2 or more databases - purposely separating some tables in the db
to a separate db. For example I just built a report archiving component
that pounds gigs upon gigs of report images out to a sql server db - a
separate db from the apps main db because it has different back up
needs, can be put on a separate server to not overburden the transaction
oriented primary db, etc. I'm amazed that MS didn't implement cross db
transactions in .Net - at least for 2 or more SQL Servers right away.
If a stored proc can do it via a linked server, why can't ADO.Net do it?

Mark.

-----Original Message-----
From: Deyan Petrov [mailto:Click here to reveal e-mail address]
Sent: Tuesday, July 30, 2002 12:42 AM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

Hi,

You guys must be definitely kidding. I was refering to building
ENTERPRISE
DISTRIBUTED applications, and statements that "most" applications don't
need
an app server are hilarious. I don't care about "applications"
consisting of
1 winform, or apps written with the business logic in the sprocs in the
database etc. I am talking about apps which have a well defined object
design, consisting of encapsulated in classes business logic, which
should
be very scalable.

Persistence in J2EE is not a joke. If you are really well acquainted
with
the EJBs you will know that they try to hide the persistence stuff from
the
programmer of business objects. So persistence/transaction/security etc.
logic is not sprinkled everywhere in your code, but is HIDDEN and
applied
using interception, which leaves your business code clean and pure, i.e.
easy to maintain.

Data caching on the app server is a good thing. If you rely on your
database, then you'll end up unable to scale your application any more
sooner or later. The statements which are made in relation to this point
make me understand, that you really haven't programmed large enterprise
systems.

The functions of an app server are numerous and I don't want to go into
detail. Please reread my second email in this thread, where I specify my
concrete requirements, which are only a very small subset of an app
server
functionality.

I am really sorry that so far I haven't heard the opinions of people who
have really dealt with problems specific to the distributed enterprise
application development. Once again I want to state, that the emphasis
is
not so much on distributed, as I refer more to a logical distribution
and a
physical one, although the latter should be possible. A framework should
make simple things simpler and complex things possible ...

Regards,
Deyan Petrov

"Russ McClelland" <Click here to reveal e-mail address> wrote in message
news:690643@aspngarchitecture...
[Original message clipped]

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Ben Hyrman
Tell us what you're after Deyan,

You posted asking about building enterprise systems with .NET, and talked a
bit about COM+. You got plenty of replies talking about the issues with the
current solution from Microsoft. If you're looking for a .NET managed app
server, then I think the answer is that there isn't one, at least from
Microsoft, at this point. If you're looking for enterprise development
frameworks in .NET, I'm not aware of any robust frameworks in mass use at
this point. If you're asking people on this list about building these
frameworks, I think you can tell by the lack of replies that those people
are too busy building the frameworks to bother writing about them at this
point ;-)

So, before belittling the subset of people that are trying to help out, or
at least willing to reply to your posts, maybe tell us exactly what it is
you're looking for.

I can't personally speak to "ENTERPRISE DISTRIBUTED applications" with
regards to .NET as my company has not started any .NET development. When we
do, I can assure you that enterprise solutions will not be our first focus
;-) Currently, we utilize a few specialized frameworks that have a focused
solution for a specific domain. These frameworks reside on top of a J2EE app
server. Lighter load apps do not take advantage of the framework and simply
use the J2EE app server.

I agree with you completely, a framework should make simple things simpler
and complex things possible. However, I suppose we might differ here. I
think that the .NET 1.0 framework has done exactly this. All I feel that is
missing is a solid application server to extend the usefulness of the
existing framework. While no one who can speak without breaking an NDA knows
the hand of Microsoft, I'm guessing you'll see the full featureset you're
looking for fairly soon. You seem to forget that J2EE wasn't released until
1999, 3 years after JDK 1.0 was available for download.

If you're upset that Microsoft named a product "Visual Studio Enterprise
Developer", well, consider it a naming scheme that paves the way for future
products.

Regards,

Ben

----- Original Message -----
From: "Deyan Petrov" <Click here to reveal e-mail address>
Newsgroups: aspngarchitecture
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Tuesday, July 30, 2002 2:41 AM
Subject: [aspngarchitecture] Re: MS have no managed Application server??

[Original message clipped]

Reply to this message...
 
    
Jonathan Green
I have a problem not seeing Deyan as a Java troll, personally.

I really don't see the difficulty here, regarding Enterprise
development, and I think we put the cart before the horse by forgetting
that what makes Enterprise systems fly is proper Architecture, much more
than which Framework used.

Put me down on the side that sees no merit in a physically separate
Application Server. I believe that Business Logic performs best as
storedprocs on the data layer, not residing on some app server. Towards
that end, I think that .NET does wonders with the new DataSet paradigm
compared to the old ADO.

I get a little sick of all these Framework wars, where we seem to forget
that whether J2EE or .NET, they are TOOLS, not SOLUTIONS. I see any area
where either falls short, as an opportunity to use a little creativity
and imagination, instead of so much whining about what isn't getting
solved for me right out of the box.

I think a framework should make cool things possible. Whether it makes
things easier or not depends on how prepared we are for the strengths or
weaknesses of the platform we choose. I don't think there are too many
things impossible on either platform, personally.

Maybe instead of focusing so much on what's missing in the available
frameworks, we might consider what is lacking in our own skill and
imagination?

</rant>

Jonathan

-----Original Message-----
From: Ben Hyrman [mailto:Click here to reveal e-mail address]
Sent: Tuesday, July 30, 2002 2:40 PM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

Tell us what you're after Deyan,

You posted asking about building enterprise systems with .NET, and
talked a
bit about COM+. You got plenty of replies talking about the issues with
the
current solution from Microsoft. If you're looking for a .NET managed
app
server, then I think the answer is that there isn't one, at least from
Microsoft, at this point. If you're looking for enterprise development
frameworks in .NET, I'm not aware of any robust frameworks in mass use
at
this point. If you're asking people on this list about building these
frameworks, I think you can tell by the lack of replies that those
people
are too busy building the frameworks to bother writing about them at
this
point ;-)

So, before belittling the subset of people that are trying to help out,
or
at least willing to reply to your posts, maybe tell us exactly what it
is
you're looking for.

I can't personally speak to "ENTERPRISE DISTRIBUTED applications" with
regards to .NET as my company has not started any .NET development. When
we
do, I can assure you that enterprise solutions will not be our first
focus
;-) Currently, we utilize a few specialized frameworks that have a
focused
solution for a specific domain. These frameworks reside on top of a J2EE
app
server. Lighter load apps do not take advantage of the framework and
simply
use the J2EE app server.

I agree with you completely, a framework should make simple things
simpler
and complex things possible. However, I suppose we might differ here. I
think that the .NET 1.0 framework has done exactly this. All I feel that
is
missing is a solid application server to extend the usefulness of the
existing framework. While no one who can speak without breaking an NDA
knows
the hand of Microsoft, I'm guessing you'll see the full featureset
you're
looking for fairly soon. You seem to forget that J2EE wasn't released
until
1999, 3 years after JDK 1.0 was available for download.

If you're upset that Microsoft named a product "Visual Studio Enterprise
Developer", well, consider it a naming scheme that paves the way for
future
products.

Regards,

Ben

----- Original Message -----
From: "Deyan Petrov" <Click here to reveal e-mail address>
Newsgroups: aspngarchitecture
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Tuesday, July 30, 2002 2:41 AM
Subject: [aspngarchitecture] Re: MS have no managed Application server??

> I am really sorry that so far I haven't heard the opinions of people
who
[Original message clipped]

a
> physical one, although the latter should be possible. A framework
should
[Original message clipped]

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Damon Allison
[Original message clipped]

I work with an insurance company right now and we are rolling out an
application layer to be accessed via remoting. The middle tier is
responsible for retrieving data (via ODBC) from an AS400 and retrieving text
files from the filesystem to display online.

The reason we designed this as an application server piece is because the
DMZ where are web servers are stored does not have permissions to read the
internal network's filesystem, nor do we want to open up a link between our
DMZ and AS400 systems. For us, physical separation made sense for security
reasons.

Damon

Reply to this message...
 
    
Mitch Denny
Mark,

I tend to agree with you regarding physical partitioning, although
it has been made abundantly clear to me on more than one occasion
that physical seperation increases the perception of tighter
security. Whether the slight security enhancement is worth the
perf hit will be debated through the ages.

Sometimes physical application partitioning is dictated by
security teams. Recently I was in a meeting with the security
manager though and he told me that he was more concerned about
the crypto applied to inter node communications in the
distributed application that I was working on. This was at
one of Australia's major financial institutions.

Microsoft still may do something in the distributed database
transaction space. The architecture of ADO.NET doesn't rule
it out below the DataAdapter line.

When most people talk about little need for distributed
transactions (or rather a unified approach to it), is because
most people understand that ultimately the data needs to be
persisted to a database or some form of message queue.

----------------------------------------
- Mitch Denny
- Technical Specialist
- Click here to reveal e-mail address
- http://www.monash.net
- +61 (414) 610-141
-

-----Original Message-----
From: Mark Feinholz [mailto:Click here to reveal e-mail address]
Sent: Wednesday, 31 July 2002 3:13 AM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

On the topics of data/object state caching and scalability...

Web Application: I've always had a very hard time coming up with a
scenario where a physically separated application layer makes any sense.
Does anyone have an example of a system that is designed with the
application layer physically separated from the web server - and why
they architected it that way? When it comes time to scale it always
seems to make sense to just add more servers to the web farm. There are
application processes I suppose though that are better suited to be
shipped off to a farm of application servers that are configured to meet
the specific processing needs of the application better. But if adding
a new server to the web farm is the scaling solution, then it seems that
Asp.Net's caching functionality takes care of the caching needs. It is
certainly not automatic though - you need to design your system around
this approach - including coming up with a way to invalidate the cache
when "mostly static" info in the db is changed.

WinForm applications: It is much easier for me to come up with
scenarios where application servers - separated from the client machine
would be useful. It seems that the .Net answer to this is remoting -
and I agree that the lack of an application server to help out here
seems like a missing piece of the architecture. I have to build my own
multi-threaded server to host the remote process? And where is the
caching? It doesn't feel right (at least not yet - maybe I just need
time to be convinced) for a web server to be the answer to this need.

On the topic of distributed transactions:

I am very concerned that this is not available without resorting to
com+. I keep hearing comments like: "no one hardly ever needs
distributed transactions". I consistently architect applications that
talk to 2 or more databases - purposely separating some tables in the db
to a separate db. For example I just built a report archiving component
that pounds gigs upon gigs of report images out to a sql server db - a
separate db from the apps main db because it has different back up
needs, can be put on a separate server to not overburden the transaction
oriented primary db, etc. I'm amazed that MS didn't implement cross db
transactions in .Net - at least for 2 or more SQL Servers right away. If
a stored proc can do it via a linked server, why can't ADO.Net do it?

Mark.

-----Original Message-----
From: Deyan Petrov [mailto:Click here to reveal e-mail address]
Sent: Tuesday, July 30, 2002 12:42 AM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

Hi,

You guys must be definitely kidding. I was refering to building
ENTERPRISE DISTRIBUTED applications, and statements that "most"
applications don't need an app server are hilarious. I don't care about
"applications" consisting of 1 winform, or apps written with the
business logic in the sprocs in the database etc. I am talking about
apps which have a well defined object design, consisting of encapsulated
in classes business logic, which should be very scalable.

Persistence in J2EE is not a joke. If you are really well acquainted
with the EJBs you will know that they try to hide the persistence stuff
from the programmer of business objects. So
persistence/transaction/security etc. logic is not sprinkled everywhere
in your code, but is HIDDEN and applied using interception, which leaves
your business code clean and pure, i.e. easy to maintain.

Data caching on the app server is a good thing. If you rely on your
database, then you'll end up unable to scale your application any more
sooner or later. The statements which are made in relation to this point
make me understand, that you really haven't programmed large enterprise
systems.

The functions of an app server are numerous and I don't want to go into
detail. Please reread my second email in this thread, where I specify my
concrete requirements, which are only a very small subset of an app
server functionality.

I am really sorry that so far I haven't heard the opinions of people who
have really dealt with problems specific to the distributed enterprise
application development. Once again I want to state, that the emphasis
is not so much on distributed, as I refer more to a logical distribution
and a physical one, although the latter should be possible. A framework
should make simple things simpler and complex things possible ...

Regards,
Deyan Petrov

"Russ McClelland" <Click here to reveal e-mail address> wrote in message
news:690643@aspngarchitecture...
[Original message clipped]

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Mitch Denny
Deyan,

DP> The statements which are made in relation to this point make me
DP> understand, that you really haven't programmed large enterprise
DP> systems.

Sounds like a pretty big assumption, and somewhat insulting. Anyway,
lets proceed with the discussion. Can you give us some metrics on the
sort of load that you application is required to handle?

Nothing that has been said about application architecture thus far
has indicated to me that it will perform less admirably than in a
theorhetical managed application server. Try grading the archtiecture
on the following grounds:

    Security
    Maintainability
    Useability
    Scalability
    Performance
    Managability
    Extensibility
    Reliability
    
    (no particular order)

In fact it would be interesting to see how you graded the above
priority wise given your current requirements.

----------------------------------------
- Mitch Denny
- Technical Specialist
- Click here to reveal e-mail address
- http://www.monash.net
- +61 (414) 610-141
-

-----Original Message-----
From: Deyan Petrov [mailto:Click here to reveal e-mail address]
Sent: Tuesday, 30 July 2002 5:42 PM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

Hi,

You guys must be definitely kidding. I was refering to building
ENTERPRISE
DISTRIBUTED applications, and statements that "most" applications don't
need
an app server are hilarious. I don't care about "applications"
consisting of
1 winform, or apps written with the business logic in the sprocs in the
database etc. I am talking about apps which have a well defined object
design, consisting of encapsulated in classes business logic, which
should
be very scalable.

Persistence in J2EE is not a joke. If you are really well acquainted
with
the EJBs you will know that they try to hide the persistence stuff from
the
programmer of business objects. So persistence/transaction/security etc.
logic is not sprinkled everywhere in your code, but is HIDDEN and
applied
using interception, which leaves your business code clean and pure, i.e.
easy to maintain.

Data caching on the app server is a good thing. If you rely on your
database, then you'll end up unable to scale your application any more
sooner or later. The statements which are made in relation to this point
make me understand, that you really haven't programmed large enterprise
systems.

The functions of an app server are numerous and I don't want to go into
detail. Please reread my second email in this thread, where I specify my
concrete requirements, which are only a very small subset of an app
server
functionality.

I am really sorry that so far I haven't heard the opinions of people who
have really dealt with problems specific to the distributed enterprise
application development. Once again I want to state, that the emphasis
is
not so much on distributed, as I refer more to a logical distribution
and a
physical one, although the latter should be possible. A framework should
make simple things simpler and complex things possible ...

Regards,
Deyan Petrov

"Russ McClelland" <Click here to reveal e-mail address> wrote in message
news:690643@aspngarchitecture...
[Original message clipped]

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Mitch Denny
Deyan,

DP> I need a managed app server, or just a framework of services,
DP> which will allow me to:

Excellent! Here we are making progress, you have identified
that an app server is just some services.

DP> 1) concentrate on the pure business logic

Its generally not wise to possible implications on a system
level when implementing business logic, and while it is nice
to abstract away as much of the plumbing as possible the
current state of technology dictates that we deal with our
supporting infrastructure at some point. My point? At some
point you are going to have to deal with technology.

DP> 2) transparent transaction handling, security, logging using
DP> the concept of Interception

This is what COM+ provides at a cost, anything you do here
will likely involve a performance hit of some kind. Depending
on the true nature of your problem you might be able to design
around this. Most of the time we are after short-lived transactions
on the database or some kind of a message queue, so why not
talk to those services directly? For longer running transactions
you generally have to look at some kind of work-flow enabled tool.

Assuming I haven't been living in a parallel universe for
the last twelve months, in most cases you can avail yourself
of system services such as Event Logging, either wired up
through tracing functionality (nice) or directly.

Look, its not all there yet the way you want it, but its
coming and realistic and architecturally sound alternatives
exist today which you can implement. Remember that there
is not a 1 to 1 mapping between J2EE and .NET.

DP> 3) other scalability/failover services, which at this point
DP> are not so important to me, as I can load balance the
DP> interface entry points (the web servers).

You can load balance with remoting using NLB, binary formatters
over a TCP channel. No worries.

DP> 4) persistence management - some form of ORM.

Still need some convincing that this is a good idea, there
are certainly instances where it is useful but once you get
over a certain scale concurrency and other tuning issues
make it so that it is not feasible. Its much easier to scale
with a database upgrade and putting a few more app blades
in a rack then managing ORM persistence issues.

If you still want it then it might be worth looking into
the ObjectSpaces project that Microsoft was working on, I'm
not sure what stage they are at, the last I heard was that
they had taken the work back in house and were working on
a polished product. If you search the newsgroups and the
archives here at ASPFriends you will probably find some
references to other efforts that people have made in
this space. The problem you are likely to find is that
many people abandon this sort of work because of the hard
to solve scalability issues.

Alot of people that I talk to are actually working
with DataSets for relational data and they find that
in most cases they do the job very nicely. If you have
business rules then you can configure the business
rules to work with DataRows representing the business
entities, its a very .NET design :)

This gives you the added benefit that DataSets and
DataTables are very easy to persist to the database
and they are already in a disconnected model.

DP> 5) transparently distribute even physically my components (for
DP> example I want all the payments to be directed to 2 payment
DP> servers in my web farm using remoting). I will have the
DP> presentation and business logic on the same physical machine,
DP> because I fully agree that the cost of marshalling/unmarshalling
DP> is too big.

This is a requirements decision, but .NET out of the box will
support both approaches very well. Just configure your remoting
servers behind a NLB setup and away you go. For many expensive
operations it can be cheaper to push them to a backend server
to avoid the processing impacting concurrent requests on the
front end presentation and app servers.

I hope I answered your questions. Let me know if you strike
a business requirement that you can't map to .NET technology.

----------------------------------------
- Mitch Denny
- Technical Specialist
- Click here to reveal e-mail address
- http://www.monash.net
- +61 (414) 610-141
-

-----Original Message-----
From: Deyan Petrov [mailto:Click here to reveal e-mail address]
Sent: Monday, 29 July 2002 10:16 PM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

Hi Mitch,

10x for your reply. I like your overview of the general problem, but the
specific problems are more important ;)

The situation now is:
If I want to build an enterprise distributed application I don't have an
appropriate application server to use.
COM+ used in .NET has a number of problems:
1) It requires COM Interop Services to be used, which impedes heavily
the performance.
2) It's an old technology, which has some problems - it allows
transaction attributes only at the class level (not at the method
level), in the .NET Server it will allow to specify isolation level, but
now it doesn't. Also the role-based security means that I have to
hardcode the roles in my app, which I don't want, I want to be able to
configure the access permissions of the roles from the client.
3) It is not easy enough to register your managed components with it.

I need a managed app server, or just a framework of services, which will
allow me to:
1) concentrate on the pure business logic
2) transparent transaction handling, security, logging using the concept
of Interception
3) other scalability/failover services, which at this point are not so
important to me, as I can load balance the interface entry points (the
web servers).
4) persistence management - some form of ORM.
5) transparently distribute even physically my components (for example I
want all the payments to be directed to 2 payment servers in my web farm
using remoting). I will have the presentation and business logic on the
same physical machine, because I fully agree that the cost of
marshalling/unmarshalling is too big.

I intend to use the Facade design pattern, ContextBoundObjects for my
Facade classes with interception, which will add message sinks which
will handle transparently the transaction handling, security and
logging. It's too much work, though. Also I still am not sure what's the
best approach to persistence of my business objects ....

Regards,
Deyan Petrov

"Mitch Denny" <Click here to reveal e-mail address> wrote in message
news:690159@aspngarchitecture...
[Original message clipped]

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Mitch Denny
Damon,

Absolutely! Everything can be improved, but it definately can't
be characterised as a show stopper. The point I was trying make
was it depends on what is more important to you. Staying clear
of COM+ or getting declaritive/distributed transactions for free.

Remoting and Security:
Are you having trouble passing the principal in a remoting
channel? Have you looked at ILogicalThreadAffinative as a
mechanism for doing that. One point that was raised in a mailing
list post somewhere was that .NET Security is independent of
Windows Security which is nice considering the cross platform
implications of that design decision.

Remoting and Threading:
Anyway, look at the above interface as a way of getting around
those sorts of issues. As for handling multiple requests simultaneously,
as I understand it, threads for remoting requests are allocated
from the threadpool which means requests at peak times are queued
up, why is this not sufficient? How many concurrent requests are you
sending through and in what time frame do they need to be responded
to, how long does the average request take?

Windows Service Hosting:
It pretty much is a matter of calling ServiceBase.Run(...) with
the exception of the issues above. In fact you could probably
template the code. I'm assuming that you have done a bit of J2EE
programming before and can appreciate that sometimes deploying
an EJB can become quite involved and quite complex. I think that
the .NET solution is quite elegant myself.

Candidate for an App Server:
For sure! But its not necessary, I'm sorry, but its not, people
were able to build extremely scalable solutions before applications
servers (as we know them today), in many cases they simply out
perform our current technology set still!

I'm not going to say no to an application server where I can just
drop an assembly into and walk away, but programmers still need
to be programmers and understand the technology platform that
they are working with. Occasionally that means doing something
slightly technical as well.

Anyway, I hope that you can use the existing technology
offering to get the job done and hope that when Microsoft
and other vendors come to market with .NET app servers that
it is everything that you hoped for.

----------------------------------------
- Mitch Denny
- Technical Specialist
- Click here to reveal e-mail address
- http://www.monash.net
- +61 (414) 610-141
-

-----Original Message-----
From: Damon Allison [mailto:Click here to reveal e-mail address]
Sent: Monday, 29 July 2002 10:13 PM
To: aspngarchitecture
Subject: [aspngarchitecture] RE: MS have no managed Application server??

[Original message clipped]

You're joking, right? While it is possible to use COM+ services, there
is much room for improvement. I'll give you one concrete example.

I am in the process of making an object available via remoting, so I
create a remoting host (like the service approach you suggest).
Unfortunately there is more to hosting a remoting object than saying
"Service.Run". For starters, I want to incorporate Windows security.
Second, I want the host to be multi-threaded to handle multiple requests
simultaneously.

I've been told to host my remoting objects in IIS, which provides both
security and performance improvements. Again, this is a joke, right?
Try telling the network team we want IIS on a middle tier machine.
Thier
response: no way, we don't want the potential security breaches nor do
we want to patch another IIS server with the rest of our IIS boxes. IIS
is not meant to host middle tier components, its meant to host web
sites. Using IIS in the middle tier is overkill.

Lets also assume that we create another remoting host without using IIS.
We end up either rewriting much of the same functionality or enhancing
our current remoting host to host multiple objects simultaneously. What
we end up doing is creating our own application server. Every company
(like
Deyan's) that deploys remoting will be creating their own hosts with
common functionality, a definite candidate for a 'server' solution
product. Our company doesn't have the time nor the resources to create
our own application server.

I would like to see an "Application Center" like managed application
server from MS in the next year to not only host remoting objects, but
provide the other concerns Deyan proposed such as managed transactions,
etc.

Damon

----- Original Message -----
From: "Mitch Denny" <Click here to reveal e-mail address>
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Monday, July 29, 2002 5:54 AM
Subject: [aspngarchitecture] RE: MS have no managed Application server??

[Original message clipped]

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Mitch Denny
Ben,

The reaction to IIS is typical at the moment, perhaps with IIS 6.0
around the corner Microsoft can win back some faith, perhaps, perhaps
not. I generally think of applications as free standing entities
isolated from the rest of the network by firewalls with fairly strick
rules, sometimes even stateful inspect of of packets via hardware
devices.

In a web-services architecture IIS plays an interesting role because
it is certainly one of the easiest ways to deploy a web-service. Using
an arrangement of IIS servers can result in an extremely loosely
coupled design. Whether it is practical depends on your requirements.

----------------------------------------
- Mitch Denny
- Technical Specialist
- Click here to reveal e-mail address
- http://www.monash.net
- +61 (414) 610-141
-

-----Original Message-----
From: Ben Hyrman [mailto:Click here to reveal e-mail address]
Sent: Tuesday, 30 July 2002 1:51 AM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

In the respect that it is a full web server. It is also a full web
server that sees a fair number of security bulletins. At least here, the
IIS boxes go in the dirty trunks of the network. I would be beaten
rather severely if I asked for IIS on an app server.

I see this as a temporary hack to get us through until a solid solution
is delivered. A web server that is tuned for I/O and stateless requests
should not be forced to play the part of remoting server.

---------- Original Message ----------------------------------
From: Brian Espey <Click here to reveal e-mail address>
Reply-To: "aspngarchitecture" <Click here to reveal e-mail address>
Date: Mon, 29 Jul 2002 08:07:13 -0700 (PDT)

[Original message clipped]

| [aspngarchitecture] member Click here to reveal e-mail address = YOUR ID
| http://www.asplists.com/asplists/aspngarchitecture.asp = JOIN/QUIT
| http://www.asplists.com/search = SEARCH Archives

Reply to this message...
 
    
Russ McClelland
What difference does it make if you go from:=20

1. server1 with a web server/app server combination to server2 with a
DB server
2. server1 with web to server2 with app server to server3 with DB
server

You still have to have a port open between a DMZ server and your DB
server. If someone hacks your web server to access your 400 as in
solution 1, its not much different than if they hack the app server in
solution 2...

-----Original Message-----
From: Damon Allison [mailto:Click here to reveal e-mail address]=20
Sent: Tuesday, July 30, 2002 8:53 PM
To: aspngarchitecture
Subject: [aspngarchitecture] Re: MS have no managed Application server??

[Original message clipped]

I work with an insurance company right now and we are rolling out an
application layer to be accessed via remoting. The middle tier is
responsible for retrieving data (via ODBC) from an AS400 and retrieving
text files from the filesystem to display online.

The reason we designed this as an application server piece is because
the DMZ where are web servers are stored does not have permissions to
read the internal network's filesystem, nor do we want to open up a link
between our DMZ and AS400 systems. For us, physical separation made
sense for security reasons.

Damon

| [aspngarchitecture] member Click here to reveal e-mail address =3D YOUR ID=20
| http://www.asplists.com/asplists/aspngarchitecture.asp =3D JOIN/QUIT=20
| http://www.asplists.com/search =3D SEARCH Archives

Reply to this message...
 
    
Ben Hyrman
If I were a betting man, well, I'd be broke by now. But that's beside the
point. Looking at Microsoft's track record, I can foresee something just
after IIS 6.0 that starts to take on a more "enterprise" role. I'm not sure
what enterprise is, but it's certainly more than just a web server.

I think we're getting there, just not quite yet. I have read many articles
that the app tier is dead and no longer needed with .net. I disagree, I
don't think the app tier is dead. I think the app tier will become IIS with
a few more additions...maybe IIS+? The app tier then becomes a logical
combination with the presentation tier. For companies that demand it, the
two are simply deployed on separate physical boxes.

Damon pointed out to me that, many years ago, Sun said that the network was
the computer. Microsoft resisted, for a long time. Microsoft came back in
spades. We have SOAP (yes, I know they didn't create the standard, but damn
did they back it). We have web services. We have what seems to be an
adequate solution for many scenarios. All we need now is a standard for web
services to be able to participate in an XA transaction and we're done.

I'm not sure what environments will look like in a few years. The bulk of
web services, at least for internal applications, still seem to be a good
amount of hype. From an application to application perspective, I am getting
fewer features than I could have had with Corba. However, industry momentum
and even the lightweightness of web services are leading towards rapid
adoption.

I'm working as the integration architect on a "large" project right now.
Even for our integration needs between Java applications, , we're finding
XML calls over HTTP from a Java client to a servlet to be preferrable even
to RMI or RMI/IIOP integration. The impact is lighter, I can secure things
with SSL on the server and SSL certs on the client, and it fits well with
our existing firewall policies.

I foresee IIS moving to offer more of this same type of integration in a
GUIed environment. After all, it's not Microsoft until I have a wizard to
walk me through set up. In summary (not that you really can summarize a
ramble like that), IIS will become more of an app server. I would bet on
ISV's and other third-party vendors to be first to market with frameworks to
support a more enterprise scope, and Microsoft to start folding parts of
these frameworks into their app server services....and you'll need to use
Passport for all of it!

Ben

----- Original Message -----
From: "Mitch Denny" <Click here to reveal e-mail address>
To: "aspngarchitecture" <Click here to reveal e-mail address>
Sent: Tuesday, July 30, 2002 7:06 PM
Subject: [aspngarchitecture] Re: MS have no managed Application server??

[Original message clipped]

Reply to this message...
 
    
Deyan Petrov
Hi Ben,

I want to apologise to all of you, who feel offended by my last post. What I
wanted to do was merely to provoke you and get response on the problems
which I am dealing with currently (with 12 new posts over the night I might
have succeeded ;).
For 2 years now I have been delving in the .NET Framework (since Beta 1). I
am not a Java troll (like Luke, asj, Cameron Purdy etc ;). I am too
technically oriented to be a such, however for the last several months I
have been reading the java specs/books/blueprints etc., so that I know where
the competition is ... The company I am currently working for has started to
wonder what platform to use for the next version of its software - J2EE or
.NET.

What I am after? Well, my ultimate goal is to make you, guys, share with me
your ideas about an application framework in .NET. I want to know exactly
how you (plan to) write your transaction/security/logging and most
importantly persistence code.
One way is to make several classes with static methods and call them in all
your business methods. This will result however in sprinkled service code
all over your business logic.
Another way is to hide this service layer and keep it away from your
business logic as much as possible. This is the pattern used in Java app
servers, as well as COM+. I like this approach.

SO ...
Please, guys, write about your "best" way of writing apps in .NET ... way,
framework, app server, all of these sound interchangeable to me ... I am
talking about these four services - how will you incorporate them in your
.NET app:
1) transactions, spanning several business methods of several classes. It
should be possible that the business methods can be executed in different
order and still take advantage of transactions, without explicitely coding
to a connection etc (as it's in COM+). As you know, these are the so-called
declarative transactions. I don't want them necessarily distributed ;), but
they should be able to span several databases ;)

2) Security - I want to secure my business components, so that they can be
called only by authorized users. I will use my custom security, where each
action will be made available to different roles, in which different users
are involved.

3) Logging - I want to log the users actions in a table in the DB or
somewhere else.

4) Persistence - I want to find the best approach here. I can write the
persistence logic in the business classes themselves, I can delegate it to
persistence classes, called from the business classes or I can externalize
it, so that the business classes know nothing about it. I am familiar with
the approach used in ObjectSpaces and CMP 2.0, where the properties, which
should be persisted are made abstract, and then at run time (objectspaces)
or when deployed (J2ee app servers) another class is generated, inheriting
from the business class and providing implementation (persistence) of the
abstract properties according to some form of persistence descriptor.

I hope that I receive a lot of comments on the above technical points,
Thanks in advance,

Deyan Petrov

"Ben Hyrman" <Click here to reveal e-mail address> wrote in message
news:691275@aspngarchitecture...
[Original message clipped]

Reply to this message...
 
    
Deyan Petrov
Hi Jonathan,

Well, I am NOT a Java troll ;) Unlike luke, asj etc. in the
microsoft.public.dotnet.* newsgroups I don't quote news articles all the
time and compare job results ;))) I apologize for offending you (if I have),
I only wanted to provoke the newslist ;)
For the last 2 years I've been playing with the .NET Framework, and for the
last several months with J2EE in parallel.
If I mention J2EE, it's only from a technical point of view, where I want to
illustrate some of my points with ready examples. I am sure you'll agree
with me, that there are some nice features in J2EE, as well as in .NET, so I
want to combine them somehow ;)
So you have experience with both extremes - with a too OO enterprise
architecture and with a completely stateless one. So pls share your insights
on the problems of transactions/security/logging/persistence, which I point
out, in greater detail.

10x in advance,
Deyan Petrov

"Jonathan Green" <Click here to reveal e-mail address> wrote in message
news:691325@aspngarchitecture...
[Original message clipped]

Reply to this message...
 
    
Deyan Petrov
Hi Mitch,

I can't really grade those grounds ... I doubt if anyone can do that
precisely. I think that all of us want all of them ;) Without performance
and scalability, of course reliability you are dead, your clients will kill
you ;) Without maintainability, extensibility, managability whatever, you
are again dead, because you will not be able to easily (without month long
development efforts per new feature) extend/maintain your app later...
I target the load of "my" application to be 1000 concurrent users.

Regards,
Deyan Petrov

"Mitch Denny" <Click here to reveal e-mail address> wrote in message
news:691328@aspngarchitecture...
[Original message clipped]

Reply to this message...
 
    
Deyan Petrov
Hi Mitch,

What is the balance, Mitch, between incorporating all the services
(transactions/security/logging/persistence) in yout business classes and
externalizing them completely?
As for ObjectSpaces, I have spent some time reading the
microsoft.public.objectspaces newsgroup, as well read some stuff on EJB CMP
2.0 ... I am aware of the approach they both are using, in slightly
different ways, of course.
DataSets etc are good things, if you use them appropriately, and not basing
all your design on them, to server as business classes etc., in my opinion,
So I rule them out of the discussion about the class design of a big
application ...

Regards,
Deyan Petrov

"Mitch Denny" <Click here to reveal e-mail address> wrote in message
news:691329@aspngarchitecture...
[Original message clipped]

Reply to this message...
 
    
Ben Hyrman
From: "Jonathan Green" <Click here to reveal e-mail address>

[Original message clipped]

Overall, I agree with the sentiment in your email, but this gave me
indigestion. =)

Long winded reply:

I will try and provide a few academic, but hopefully useful, counters to
this statement.

There are two things that seem to be constant sources of philosophical
debate among programmers. Stateful versus stateless business objects; and
stored procedures versus prepared SQL. Oh, there is one more contentious
debate, Star Wars versus Star Trek, but that discussion calls for arm
waving and beer.

Here's my first argument against business logic in stored
procedures...operational cost.

Let's say my user base grows. This probably means my application is handling
more requests and transactions. I will likely reach a point where I need
more hardware. Let's just pretend there is no physical app server...there is
just a web server and a database server.

If I placed all of my business logic and validation on the web server, even
if it is in business objects on the web server, then I can easily scale
simply by adding more web servers. If I'm using Windows 2000 and a hardware
load balancer, I can get away with just adding another server....for a total
cost of ~$5000. If I'm using Network Load Balancing, then I need Windows
2000 Advanced Server, but my entry cost is still fairly low.

If I placed all of my business logic and validation in the database server,
then I need to worry about getting a new database server and getting it in
to the clustered, load-balanced environment with the other solutions.
Frankly, I'm not sure how well SQL Server 2000 and Datacenter handles this,
although I'm assuming it's fairly straightforward. However, not every
front-end will be accessing SQL Server, and I can attest to the joys of
anything clustered on Oracle before 9i RAC. Typically, these costs are not
in the $5000 range, either.

Secondly, support costs:

At my company, let's say my production DBAs make $90,000 a year. My
application support people make $43,000 a year. If business rules change, it
would need to take the application team at least twice as long to implement
the changes for it to be cheaper to use the DBA. Plus, in order to test, the
DBA still needs to involve the application support team, which will cost
money, while the app support team can likely handle testing without the DBA.

Of course, we could save even more if some business logic could be
abstracted out of the business objects and placed in a format that a
business user could readily update.

Third:

What are you really gaining from this approach? Network traffic is slightly
reduced. What are you losing? No integration to SNMP for monitoring, no
automated paging or notification when applying the business rules fails. Of
course, you can put hacks into the database to accomplish this, and I have
in the past, but then you are placing an even greater load on the database
server..the need for beefier hardware then zeros out the benefit of the
reduced network load.

Now, an analogy...or allegory...or parable, I'm not sure which...but let's
say that it's a true story, but the names have been changed to protect the
stupid.

Let's say a company purchased a product that was built on Oracle 8i. The
foundation for the product was a solid one. However, the vendor made a
crucial mistake, they embedded business logic into stored procs. The
solution had clients for presentation and everything else was in stored
procs. Now, this wasn't a cheap solution that they sold either.

Like all packaged solutions, the application needed to be extended. So, the
consulting company that the customer brought in got right to work on
tailoring the application. Of course, the stored procs housed all of the
business logic, so these were customized right away. T