Re: COM Interop -- Class Library vs. EXE
- From: "Nicholas Paldino [.NET/C# MVP]" <mvp@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 27 Dec 2005 11:14:08 -0500
Gregory,
I think it is a simple matter of moving your data structures to a static
variable. Once the CLR is loaded, it is not going to be unloaded for the
life of the process (or at least, it shouldn't). Just make it static.
And if you find that the CLR is being unloaded, then I would create a
class derived from ServicedComponent which uses object pooling. You can
then create a pool of your objects, and incur the cost of initializing your
data structures on construction of your object.
Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mvp@xxxxxxxxxxxxxxxxxxxxxxxxxxx
"Gregory Hassett" <ghassett@xxxxxxxxxxx> wrote in message
news:eQQI5OvCGHA.4080@xxxxxxxxxxxxxxxxxxxxxxx
> Hello,
>
> I am developing classes in C# that are called from PHP via COM. The C#
> code
> does a lot of work to establish internal data structures, and I would like
> these data structures to persist so that I do not have to recreate them
> each
> time the COM code is called.
>
> For example, imagine a function MyObject.BuildInternalDataStructures()
> which
> takes a long time. Another function,
> MyObject.UseInternalDataStructures(),
> is called repeatedly. The first time UseInternalDataStructures is called,
> it detects that the structures haven't been built, so it calls
> BuildInternalDataStructures. Subsequent calls to
> UseInternalDataStructures
> do not need to incur the penaly of building the internal data structures.
>
> The problem is that on my web server, PHP instantiates a new instance of
> my
> object each time a PHP page is hit -- and destroys the object (and unloads
> my DLL) when the page completes executing. So the next time the user hits
> a
> PHP page that calls out to MyObject.UseInternalDataStructures(), it has to
> rebuild everything again from scratch.
>
> Is there a way to build a COM server as an EXE, so that it can run in the
> background, maintaining its state, while allowing COM consumers (such as
> PHP) to call into it?
>
> Thanks
>
> Greg
>
>
.
- References:
- COM Interop -- Class Library vs. EXE
- From: Gregory Hassett
- COM Interop -- Class Library vs. EXE
- Prev by Date: Re: Directory access
- Next by Date: Re: Help! Need product advice for scientific computing.
- Previous by thread: Re: COM Interop -- Class Library vs. EXE
- Next by thread: constantly checking internet connection
- Index(es):
Relevant Pages
|