Groups | Blog | Home
all groups > dotnet distributed apps > july 2005 >

dotnet distributed apps : Designing .NET applications


Rafael Gómez
7/20/2005 10:33:12 AM
Hi,

I'm considering to develop a .NET application.

I have read a lot about 3-tier model, n-tier model and distributed
application design, and conceptually I think I understand it.

The goal of the design that I want is deploy business components one time,
to allow reuse its in windows forms application and ASP.NET application.

It is not important if presentation and business layers are running in the
same client or business layer is running in the server, the most important
thing is when I need to offer a web-broser interface, only deploy the
interface and put my business objects in a IIS (for example).

The problem occurs when you consider to implement it.

What kind of technology I have to use to develop business components ?

classes in the same project application, dll's, ActiveX...

What Kind of comunication I have to use between presentation layer and
business layer to achieve de initial goal ?


Thanks in advanced.
--
Rafael Gómez
Technical Project Manager
Roy
7/20/2005 1:34:02 PM
I would start by by reading the documents at:

http://msdn.microsoft.com/architecture/

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/BOAGag.asp

http://msdn.microsoft.com/architecture/soa/default.aspx?pull=/library/en-us/dnmaj/html/aj1soa.asp
James
7/20/2005 1:37:06 PM
..NET makes it relatively easy to develop a set of logical business components
to be used by several applications. A fairly efficient and straight forward
route you could take would be to look into the Global Assembly Cache (or GAC
for short). This allows you to develop your components and register them for
machine-wide use. This same mechanism also allows you to have multiple
version of the same component installed on one machine and all in the same
location so you can gradually improve the business components as well as the
applications consuming them. This also satifies your requirement of using the
same set of business components for a web application and winforms
application (or any other .NET application type for that matter).

- James

[quoted text, click to view]
Ben Kloosterman
7/21/2005 12:00:00 AM
Hi Rafael ,



[quoted text, click to view]

Actually this is critical in terms of maintenance. Do you distribute the
same logic assembly to all desktops + a server ?

I had a customer who thought he needed webaccess for remote users , instead
we build a smart client and it works brilliantly . For larger sites i put
business logic in a seperate Tier and access it with Remoting or Web
services.

If you feel comfortable with web services you could ensure all the clients +
web communicatre through a common web service . This works well but you have
to remember Web service calls are expensive so you dont want to make many

Regards ,

Ben

[quoted text, click to view]

Rafael Gómez
7/22/2005 6:07:02 AM
Thank for your comments James.

A question derived for your explanation:

The process triggered by the business component is running in the machine
where they are located (say server), or in the client that invokes the
component ?

Thanks.

--
Rafael Gómez
Technical Project Manager
NewGen (Spain)


[quoted text, click to view]
Rafael Gómez
7/22/2005 6:28:02 AM
Thanks for your comments Ben.

Logically, I prefer logic assembly in a server.

Web Services may be expensive for the type of application, and I think is
more service-oriented.

Remoting ¿? Could you get more information.

Imagine, you develop an object-oriented application, and business components
are in a server for two reasons:

1. Maintance. Only one copy.
2. the interaction between business process and database is running in
the server.
3. Potentially, you can reuse object in others platforms.

But, what technology o paradigme is needed to allow instances of objects,
created in the server by the client, where data object could persist (of
persistency) during all execution of the client. ¿?

Because I think that web services doesn't keep data: you ask some, it runs
the query and returns the result.

Thanks.

--
Rafael Gómez
Technical Project Manager
NewGen (Spain)


[quoted text, click to view]
Ben Kloosterman
7/24/2005 12:00:00 AM
<snip>
[quoted text, click to view]

Have a look at the Quick Starts .. lots of info out there.

[quoted text, click to view]

Singletons or anything marked static will persist. Though they will get
flushed on an iireset so do need the abbility to handle the data going to
null..


[quoted text, click to view]

You can do all of the following with web servcies
- Use Web.Cache to cache results and return them to other callers.
- Output caching
- Singletons and Static memory objects which all queries can access (
remember its multi threaded !)
- Load the enetire table into memory and and server requests .
etc , each have pros and cons.

Web services should never be a thin layer over the DB , that is almost
pointless.

Regards ,

Ben




[quoted text, click to view]

Naveen
7/27/2005 3:56:01 AM

Hi...

I wouuld suggest you to use Service Oriented architecture for your project
when it comes in terms of having a separate Business layer hosted on IIS.

You should consider desigining a layered architecture with clear diference
of Presentation, Business and other layers. These layers in turn can be
deployed apporpriately...assuming that if yo have no problem of having
business & presentation layer in same machine deploy both at a time ....with
appropriate calls to business logics

if you want to invoke those through IIS then invoke a webservice from
presentation layer to call Business logic layer...

Nevertherless .net definately brings lots of advantage when you considered
desinging using layered or SOA architecture.

HTH

With Best Regards
Naveen K S

[quoted text, click to view]
AddThis Social Bookmark Button