473,625 Members | 2,733 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

OO Design Debate

Scenario:

In a commerce application, there is a Product class. Along with the Product
class there is a form (the text that goes in the labels of the input
controls) for inputting and updating existing instances of existing Product
objects. We'll call the second a ProductForm. Both would be data-driven.

I view these as 2 distinct classes. Product and ProductForm. Where Product
contains the business end and ProductForm contains the presentation end.

My coworker vehemently disagrees with me on this. He believes they should
be in the same class since they deal with one object, the Product. And he
has good arguments.

So, we figure perhaps hearing arguments from outside experts would shed some
light on the subject. Things that we are considering is readability,
maintainability , accessibility, and scalability.
Jun 2 '06 #1
34 2176

Nate wrote:
Scenario:

In a commerce application, there is a Product class. Along with the Product
class there is a form (the text that goes in the labels of the input
controls) for inputting and updating existing instances of existing Product
objects. We'll call the second a ProductForm. Both would be data-driven.

I view these as 2 distinct classes. Product and ProductForm. Where Product
contains the business end and ProductForm contains the presentation end.

My coworker vehemently disagrees with me on this. He believes they should
be in the same class since they deal with one object, the Product. And he
has good arguments.

So, we figure perhaps hearing arguments from outside experts would shed some
light on the subject. Things that we are considering is readability,
maintainability , accessibility, and scalability.


I don't want to misunderstand, here: Is ProductForm an instance of
Form? Is it an actual WinForms (or ASP.NET) form?

Or is it some class providing information to a generic form for
maintaining products?

All I can offer is the architecture I have used in my (small) WinForms
system: I have _three_ classes:

1. Product, which contains purely the business logic for a product. In
particular, Product does not permit any of its fields to have invalid
contents, nor does it permit invalid combinations of fields. So, every
Product is a valid product that you could use in the business.

2. ProductForm, which is the actual WinForms form:

public class ProductForm : Form { ... }

3. ProductValidato r, which is the "brains" behind ProductForm.
ProductValidato r tells ProductForm when fields should be enabled or
disabled, shown or hidden. It allows invalid values for the Product
fields, and returns nicely worded error messages to the ProductForm
whenever the user enters something invalid.

When ProductValidato r gives the thumbs up on user input, the calling
application can then ask it to return the Product instance
corresponding to the user inputs.

An important point here is that you don't really want all sorts of
heavy user input validation floating around with all of your Products
that you use day-to-day. Neither do you want those Products to be
allowed to contain invalid information, and force all of your business
logic to check myProduct.IsVal id at every turn. By splitting the user
input checking / validation out into a separate object I can create
simple Products that are only concerned with business rules and that
can never contain invalid information, which simplifies my business
layer.

Anyway, I'm not sure if that answered your question.

You may want to look into the "Model / View / Presenter" design pattern
for some industry standard avice on these points.

Jun 2 '06 #2
I will disagree with him (and recommend also recommend a look at the MVP/MVC
design patterns).

here are some reasons. btw I do not believe he is talking about form in the
context of a winform/webform ..

1) The product form can be re-used I don't need a new instance every time I
draw a screen

public class ProductForm {
private static ProductForm engish;
public static ProductForm English {
get { return english; }
}
//all product form behaviors .. I would also make ProductForm an
immutable object.
}

Product p = ProductReposito ry.GetProduct(S omeCriteria);
CreateViewFor(p , ProductForm.Eng lish)

This is a simple example .. more likely you would end up with a method that
takes culture to get the correct object (but you get the point).

By doing this we only create a new object for the product itself (and save a
good deal of memory by not continually re-creating all of the strings which
will remain the same).
2) The product form is not describing the product .. it is describing the
metadata for the editting interface for the product. These two items should
be able to differ independently (I should be able to have a product with a
different editting interface)

3) What if other business logic lets say logic in another class needs to
access product information (i.e. get a product object)? Kind of silly for it
to go through the overhead of also acquiring the the product form info (that
it will never use)

4) I under a number of circumstances might want to serialize a product (or
the information describing the product form) putting them together forces me
to serialize both (even if I only need one or the other)

5) as I mentioned I would make product form immutable, product would be
mutable ...

Cheers,

Greg Young
MVP - C#
http://geekswithblogs.net/gyoung

"Nate" <Na**@discussio ns.microsoft.co m> wrote in message
news:AD******** *************** ***********@mic rosoft.com...
Scenario:

In a commerce application, there is a Product class. Along with the
Product
class there is a form (the text that goes in the labels of the input
controls) for inputting and updating existing instances of existing
Product
objects. We'll call the second a ProductForm. Both would be data-driven.

I view these as 2 distinct classes. Product and ProductForm. Where
Product
contains the business end and ProductForm contains the presentation end.

My coworker vehemently disagrees with me on this. He believes they should
be in the same class since they deal with one object, the Product. And he
has good arguments.

So, we figure perhaps hearing arguments from outside experts would shed
some
light on the subject. Things that we are considering is readability,
maintainability , accessibility, and scalability.

Jun 3 '06 #3
"Nate" <Na**@discussio ns.microsoft.co m> a écrit dans le message de news:
AD************* *************** **...icrosof t.com...

| In a commerce application, there is a Product class. Along with the
Product
| class there is a form (the text that goes in the labels of the input
| controls) for inputting and updating existing instances of existing
Product
| objects. We'll call the second a ProductForm. Both would be data-driven.
|
| I view these as 2 distinct classes. Product and ProductForm. Where
Product
| contains the business end and ProductForm contains the presentation end.
|
| My coworker vehemently disagrees with me on this. He believes they should
| be in the same class since they deal with one object, the Product. And he
| has good arguments.
|
| So, we figure perhaps hearing arguments from outside experts would shed
some
| light on the subject. Things that we are considering is readability,
| maintainability , accessibility, and scalability.

From many years of experience "helping" "co-workers", I can honestly say,
this one is definitely wrong!

Although the Product and the form are dealing with the same type of thing,
they are dealing with different aspects of that thing.

As Bruce and Greg have both recommended, MVP is an ideal example of how the
UI should be separated from the business layer.

In MVP, the Model holds the Value, in this case a Product. It can also hold
a Command Set and a Selection, although this is more common when dealing
with lists of objects.

The View holds a reference to the UI element and "adapts" the UI control to
fit the requirements of being an Observer to the Value in the Model, so that
when the Value changes state, the View is notified and updates itself.

The Presenter hold both the Model and the View and is responsible for
creating the Observer relationship between them. The Presenter also holds
one or more Interactors, which are responsible for translating user
"gestures" (clicks, mouse moves, etc) in the UI into calls to the
Model/Value.

Following the MVP pattern, at least as I implement it, means that there is
absolutely *no* code on the form apart from that put there by the designer.

The benefits of designing applications using this "layering" technique is
that you would be able to replace anything to do with the UI without having
to touch your tried and tested business classes.

Having said all this, you'd better not tell your colleague about the idea of
creating Object Persistence Frameworks so that the database code is entirely
separate from the business class. He could have an apoplectic fit ! :-))

Joanna

--
Joanna Carter [TeamB]
Consultant Software Engineer
Jun 3 '06 #4
I would also suggest that I would architect my app to have a 'forms
manager' class that created forms, managed their hosting, and stood
between the UI and the Application Framework.

In simplified terms: The form would raise a new, changed, deleted etc.
event which would be caught by the form manager class that could then
refer the event data to a validator class - and if okay - raise a
request event back to the Application Framework for all its interested
listeners to respond to.

One of those Framework listeners would (in this example) be the Product
Manager (or it's relevant manager!), that would attempt to make the
requested product change.

When the request succeeded (or failed), the product manager would raise
an event that would be consumed by the forms manager and in turn
relayed back the UI. I would also make sure that all of this activity
was via versioned interfaces that would allow the maximum flexibility
in change of architecture and reuse of assemblies / classes. For
instance: the form data might in future come in via a web service call
from an internet source and that manager would want to follow the same
procedure as the UI forms manager. The product manager simply
implements its advertised IProductManager X interface. The losely
coupled publish and subscribe framework is the key to maximum
flexibility, in my opinion, and naturally encourages the use of mvc
type patterns.

Jun 3 '06 #5
Yes, not to disagree with the others that the MVC (not MVP by the way) model
is the best, I'd take into account the scale and complexity of the app. If
it's a two line app what's the sense of the overkill with an MVC hammer? MVC
brings a level of complexity that can easily increase the burden of
maintainability on the project that may simple by unnecessary. On the other
hand, if you are building with some intention to scale or this is a
moderately sized app, then yes by all means.

--

_______________ _________
Warm regards,
Alvin Bruney [MVP ASP.NET]

[Shameless Author plug]
Professional VSTO.NET - Wrox/Wiley
The O.W.C. Black Book with .NET
www.lulu.com/owc, Amazon
Blog: http://www.msmvps.com/blogs/alvin
-------------------------------------------------------

"Nate" <Na**@discussio ns.microsoft.co m> wrote in message
news:AD******** *************** ***********@mic rosoft.com...
Scenario:

In a commerce application, there is a Product class. Along with the
Product
class there is a form (the text that goes in the labels of the input
controls) for inputting and updating existing instances of existing
Product
objects. We'll call the second a ProductForm. Both would be data-driven.

I view these as 2 distinct classes. Product and ProductForm. Where
Product
contains the business end and ProductForm contains the presentation end.

My coworker vehemently disagrees with me on this. He believes they should
be in the same class since they deal with one object, the Product. And he
has good arguments.

So, we figure perhaps hearing arguments from outside experts would shed
some
light on the subject. Things that we are considering is readability,
maintainability , accessibility, and scalability.

Jun 3 '06 #6
"Alvin Bruney" <www.lulu.com/owc> a écrit dans le message de news:
OS************* *@TK2MSFTNGP03. phx.gbl...

| Yes, not to disagree with the others that the MVC (not MVP by the way)
model
| is the best,

The reason we use MVP is because it allows a greater variety of "points of
separation" between the business layer and the UI, depending on whether you
use WinForms or web UIs, thick or thin clients.

| I'd take into account the scale and complexity of the app. If
| it's a two line app what's the sense of the overkill with an MVC hammer?
MVC
| brings a level of complexity that can easily increase the burden of
| maintainability on the project that may simple by unnecessary. On the
other
| hand, if you are building with some intention to scale or this is a
| moderately sized app, then yes by all means.

I would certainly agree that MVC/P caould be overkill on very small
projects; FMPOV, the reason for covering it was to reinforce the "normality"
of separation of concerns between UI and business layers.

I have been designing and refining MVP for about 5 years now, first for
Delphi and now for .NET.

I am finding that .NET 2.0 generics, together with the data binding classes
provided in the framework, have encouraged me to greatly slim down the
amount of code in the MVP framework. The Binding class especially allows me
to remove the Observer pattern between the UI element and the business
object property.

I still use my slimmed down MVP as it allows me to remove all non-designer
code from form classes. This is the purpose of the Interactor part of MVP;
to hold the Binding and capture the Validating event, thus allowing
validation, etc to take place after the UI input but before the value gets
passed to the connected property. We set the DataSourceUpdat eMode to Never,
thus preventing automatic updating of the property unitl we are ready to
call WriteValue().

IMO, whatever technology you use, it is of paramount importance to be able
to remove all trace of business code from the UI, thus giving flexibility of
UI and protection of business logic.

Joanna

--
Joanna Carter [TeamB]
Consultant Software Engineer
Jun 4 '06 #7
>IMO, whatever technology you use, it is of paramount importance to be able
to remove all trace of business code from the UI, thus giving flexibility
of
UI and protection of business logic.
Yes, this is the nitty gritty of the matter. Well said.

--

_______________ _________
Warm regards,
Alvin Bruney [MVP ASP.NET]

[Shameless Author plug]
Professional VSTO.NET - Wrox/Wiley
The O.W.C. Black Book with .NET
www.lulu.com/owc, Amazon
Blog: http://www.msmvps.com/blogs/alvin
-------------------------------------------------------

"Joanna Carter [TeamB]" <jo****@not.for .spam> wrote in message
news:uZ******** ******@TK2MSFTN GP02.phx.gbl... "Alvin Bruney" <www.lulu.com/owc> a écrit dans le message de news:
OS************* *@TK2MSFTNGP03. phx.gbl...

| Yes, not to disagree with the others that the MVC (not MVP by the way)
model
| is the best,

The reason we use MVP is because it allows a greater variety of "points of
separation" between the business layer and the UI, depending on whether
you
use WinForms or web UIs, thick or thin clients.

| I'd take into account the scale and complexity of the app. If
| it's a two line app what's the sense of the overkill with an MVC hammer?
MVC
| brings a level of complexity that can easily increase the burden of
| maintainability on the project that may simple by unnecessary. On the
other
| hand, if you are building with some intention to scale or this is a
| moderately sized app, then yes by all means.

I would certainly agree that MVC/P caould be overkill on very small
projects; FMPOV, the reason for covering it was to reinforce the
"normality"
of separation of concerns between UI and business layers.

I have been designing and refining MVP for about 5 years now, first for
Delphi and now for .NET.

I am finding that .NET 2.0 generics, together with the data binding
classes
provided in the framework, have encouraged me to greatly slim down the
amount of code in the MVP framework. The Binding class especially allows
me
to remove the Observer pattern between the UI element and the business
object property.

I still use my slimmed down MVP as it allows me to remove all non-designer
code from form classes. This is the purpose of the Interactor part of MVP;
to hold the Binding and capture the Validating event, thus allowing
validation, etc to take place after the UI input but before the value gets
passed to the connected property. We set the DataSourceUpdat eMode to
Never,
thus preventing automatic updating of the property unitl we are ready to
call WriteValue().

IMO, whatever technology you use, it is of paramount importance to be able
to remove all trace of business code from the UI, thus giving flexibility
of
UI and protection of business logic.

Joanna

--
Joanna Carter [TeamB]
Consultant Software Engineer

Jun 4 '06 #8
> Yes, this is the nitty gritty of the matter. Well said.

I agree about the nitty-gritty of the matter. I don't agree about the "well
said" part. It distresses me when someone answers a basic common-sense
architecture problem by suggesting a pattern. Patterns are all well and
good, but without an understanding of the simple underlying principles,
patterns are as useful to programming as Templates are to a Word document.
Using a pattern simplifies the process of high-level design of the app, but
it doesn't have the overall benefit of understanding the basic principle,
which applies at any level of the development process. On the other hand,
understanding the basic underlying principles of programming has a universal
effect on one's ability to develop solid applications.

Patterns grow out of principles, which apply to all aspects of development.
Simple principles like separation of UI from business logic, loose coupling,
etc, these are the meat and potatoes of good development. While one might
derive a pattern from a principle, it is nearly impossible to derive a
principle from a pattern.

Big things are made up of lots of little things. And complex things are made
up of lots of simple things. As the OP is obviously confused about some of
the basics, it would be best to start from there, and allow him to fully
digest that before moving on, in much the same way that learning calculus is
much easier if one has mastered arithmetic, then algebra, geometry, and
trigonometry, in that order.

--
IMHO,

Kevin Spencer
Microsoft MVP
Professional Development Numbskull

Nyuck nyuck nyuck
"Alvin Bruney" <www.lulu.com/owc> wrote in message
news:Ok******** ******@TK2MSFTN GP02.phx.gbl...
IMO, whatever technology you use, it is of paramount importance to be
able
to remove all trace of business code from the UI, thus giving flexibility
of
UI and protection of business logic.


Yes, this is the nitty gritty of the matter. Well said.

--

_______________ _________
Warm regards,
Alvin Bruney [MVP ASP.NET]

[Shameless Author plug]
Professional VSTO.NET - Wrox/Wiley
The O.W.C. Black Book with .NET
www.lulu.com/owc, Amazon
Blog: http://www.msmvps.com/blogs/alvin
-------------------------------------------------------

"Joanna Carter [TeamB]" <jo****@not.for .spam> wrote in message
news:uZ******** ******@TK2MSFTN GP02.phx.gbl...
"Alvin Bruney" <www.lulu.com/owc> a écrit dans le message de news:
OS************* *@TK2MSFTNGP03. phx.gbl...

| Yes, not to disagree with the others that the MVC (not MVP by the way)
model
| is the best,

The reason we use MVP is because it allows a greater variety of "points
of
separation" between the business layer and the UI, depending on whether
you
use WinForms or web UIs, thick or thin clients.

| I'd take into account the scale and complexity of the app. If
| it's a two line app what's the sense of the overkill with an MVC
hammer?
MVC
| brings a level of complexity that can easily increase the burden of
| maintainability on the project that may simple by unnecessary. On the
other
| hand, if you are building with some intention to scale or this is a
| moderately sized app, then yes by all means.

I would certainly agree that MVC/P caould be overkill on very small
projects; FMPOV, the reason for covering it was to reinforce the
"normality"
of separation of concerns between UI and business layers.

I have been designing and refining MVP for about 5 years now, first for
Delphi and now for .NET.

I am finding that .NET 2.0 generics, together with the data binding
classes
provided in the framework, have encouraged me to greatly slim down the
amount of code in the MVP framework. The Binding class especially allows
me
to remove the Observer pattern between the UI element and the business
object property.

I still use my slimmed down MVP as it allows me to remove all
non-designer
code from form classes. This is the purpose of the Interactor part of
MVP;
to hold the Binding and capture the Validating event, thus allowing
validation, etc to take place after the UI input but before the value
gets
passed to the connected property. We set the DataSourceUpdat eMode to
Never,
thus preventing automatic updating of the property unitl we are ready to
call WriteValue().

IMO, whatever technology you use, it is of paramount importance to be
able
to remove all trace of business code from the UI, thus giving flexibility
of
UI and protection of business logic.

Joanna

--
Joanna Carter [TeamB]
Consultant Software Engineer


Jun 5 '06 #9
"Kevin Spencer" <ke***@DIESPAMM ERSDIEtakempis. com> a écrit dans le message
de news: %2************* ***@TK2MSFTNGP0 5.phx.gbl...

| I agree about the nitty-gritty of the matter. I don't agree about the
"well
| said" part. It distresses me when someone answers a basic common-sense
| architecture problem by suggesting a pattern.

My example of the MVP pattern was in order to demonstrate how separation of
concerns (the principle) can involve, not only two classes, but sometimes
more than you might expect.

| Patterns grow out of principles, which apply to all aspects of
development.
| Simple principles like separation of UI from business logic, loose
coupling,
| etc, these are the meat and potatoes of good development. While one might
| derive a pattern from a principle, it is nearly impossible to derive a
| principle from a pattern.

Precisely, but sometimes a concrete example can help to demonstrate a
principle.

| Big things are made up of lots of little things. And complex things are
made
| up of lots of simple things. As the OP is obviously confused about some of
| the basics, it would be best to start from there, and allow him to fully
| digest that before moving on, in much the same way that learning calculus
is
| much easier if one has mastered arithmetic, then algebra, geometry, and
| trigonometry, in that order.

The hope is, as we do in the Borland OO groups, that the OP would not stop
at asking one question, but would follow on if they don't understand with
further questions.

May I make the suggestion that a separate discussion group could be made
available on this forum for the discussion of basic and/or advanced
principles of OO design and practice ? That way it would be easier to
separate principles from hundreds of messages about everything from the
language to the framework.

Joanna

--
Joanna Carter [TeamB]
Consultant Software Engineer
Jun 5 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

9
3856
by: bigoxygen | last post by:
Hi. I'm using a 3 tier FrontController Design for my web application right now. The problem is that I'm finding to have to duplicate a lot of code for similar functions; for example, listing users, and listing assignments use similar type commands. Is there a "better" way I can organize my code?
36
4637
by: toedipper | last post by:
Hello, I am designing a table of vehicle types, nothing special, just a list of unique vehicle types such as truck, lorry, bike, motor bike, plane, tractor etc etc For the table design I am proposing a single column table with a field name called vehicle_type and this will contain the vehicle type. Sot it will be
22
2111
by: Nunaya | last post by:
We have developed two objects called "customer" and "salesrep". For simplicity, assume that these two objects will talk directly to a database. The database has three tables: customers, customersalesreps (allows multiple salesreps to be associated with a customer), and salesreps. The customer object has business rules that allow manipulation of customer information (add,update,delete,select,etc). The salesrep object has business rules...
7
1419
by: chrisn | last post by:
Do real developers use the design view? Thought it would be interesting to start a debate on this subject. According to all the MCP materials (yes, I know a bit mickey mouse), the design view is the way to build your ASP.NET pages. Problem is: - it generates goddam awful HTML, certainly not standards-based. - use of absolute positioning and tables for layout.
16
7080
by: marktxx | last post by:
I've finally gotten around to reading the book "Large-Scale C++ Software Design" by John Lakos. Has anyone documented what parts of this book are now obsolete due to C++ language changes such as namespaces? or are now generally considered bad advice? Feel free to reply here on a particular topic discussed in the book. I also noticed that John Lakos has a book in preparation called "Scalable C++: Component-Based Development" maybe this...
3
1446
by: MorrganMail | last post by:
Recently got to take over the responisibility for an application which is making heavy use of an Access database. It has been a long time since I came in contact with anything database related and I must admit I have forgotten a lot of the theory and was hoping you could help me out. I have found a couple of things in this database which to me seems like bad design but there might be good reasons for doing things this way, what do you...
17
4842
by: roN | last post by:
Hi, I'm creating a Website with divs and i do have some troubles, to make it looking the same way in Firefox and IE (tested with IE7). I checked it with the e3c validator and it says: " This Page Is Valid XHTML 1.0 Transitional!" but it still wouldn't look the same. It is on http://www.dvdnowkiosks.com/new/theproduct.php scroll down and recognize the black bottom bar when you go ewith firefox(2.0) which isn't there with IE7. Why does...
19
3156
by: neelsmail | last post by:
Hi, I have been working on C++ for some time now, and I think I have a flair for design (which just might be only my imagination over- stretched.. :) ). So, I tried to find a design certification, possibly that involves C++, but, if not, C++ and UML. All I could find was Java + UML design certifications (one such is detailed on http://www.objectsbydesign.com/tools/certification.html). Although UML is expected to be language independent,...
0
2453
by: jsimone | last post by:
This question is about DB2 table design and performance. We are using DB2 UDB Enterprise 8.2 on Linux. We have 6 tables in a parent-child (one-to-many) relationship with each other. Each child table having an FK up to its parent. This particular design is motivated by our domain model. A -> B -> C -> D -> E -> F There is some debate in our team about how best to accomplish this. Two approaches have been discussed.
0
8253
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8189
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
8692
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8635
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
7182
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5570
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4089
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
1802
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
2
1499
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.