"Glen B" wrote:
Quote:
Firstly, I understand that when you write a .NET client you are using client
tools and functions composed in .NET code. They can talk to non-.NET
developed services, but the client product is still considered a true .NET
application. Isn't that what you are saying, Tony? |
Yup
Quote:
Wrapping QMClient.dll in
a C# layer is not providing a "true" .NET application. It's a hybrid of C#
and C++ or ANSI C. Writing the entire QMClient interface in C# would be a
dotnet interface. My argument is that even if your client is 100% .NET, the
services may not be and thus you are still using a hybrid solution. |
Sure, the back-end and many communications tools we deal with aren't
using .NET, so every solution will be hybrid to some extent. The
ongoing goal is to minimize the points of failure.
Quote:
If you
write a local application in .NET, then you _should_ choose from a variety
of .NET tools to integrate with. Under those circumstances, a hybrid .NET
component like QM.NET can cause problems with operation and debugging since
the entire code base is not .NET. |
There's nothing inherently wrong with using unmanaged DLL. The
problem is with the sorts of issues that are possible with unmanaged
code that we don't even need to think about with managed code - like
memory leaks, hanging object references, unterminated threads, etc.
Quote:
So, my question still remains: At what
amount/level of dotnet development do you consider a component or
application to not be "dotnet"? I'm keeping in mind that donet has 2 real
definnitions. one of raw code deployment and one of services oriented
architecture - under which data can be transferred and procedures can be
called using deployment of that same raw code. |
How about this. Let's say I tell you I wrote a new ODBC driver so
that you can do SQL queries from some Linux client into D3 Linux.
Then you find out that all I'm doing is passing the queries through a
Windows box as a proxy. That's a pretty cheesy (though effective) way
to do this. The obvious question is "what happens if the Windows box
does down?" That's the same way I look at .NET code that has to run
through Interop to get somewhere else.
If I tell my client they are using "Linux" for ODBC, they think
they're getting all of those warm fuzzy benefits of Linux including
stability, open source, etc. If I tell someone I'm using .NET, they
(should) expect all of the benefits that are promised with that
technology. If my app has a chance of falling over with a null
pointer exception or array out of bounds error, I might as well be
writing in C or VB and not bragging about using better technology.
I wouldn't consider n-tiered deployment as creating different
definitions for .NET or the notion of managed code. The code is
simply managed or not at various tiers and you do the best you can to
make each point as stable as possible.
HTH
T