Author: hammett
Date: Sun Jun 27 08:57:25 2004
New Revision: 22202
Added:
avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/invokers.xml (contents, props changed)
avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/lifecycle.xml (contents, props changed)
avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/remoting.xml (contents, props changed)
Modified:
avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/index.xml
avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/navigation.xml
Log:
ManagementExtensions documentation
Modified: avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/index.xml
==============================================================================
--- avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/index.xml (original)
+++ avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/index.xml Sun Jun 27 08:57:25 2004
@@ -27,26 +27,61 @@
<section name="The project">
<p>
- ManagedExtensions is an attempt to give application's management capabilities.
+ ManagedExtensions is an attempt to give management capabilities to applications.
Its relation to Castle Container is yet to be developed.
</p>
<p>
-
+ Basically you have to approaches to choose: the server approach and the passive
+ approach.
</p>
</section>
- <section name="Source code">
+ <section name="Building a server">
<p>
- The lastest version of source can be obtained from
- <a href="https://svn.apache.org/repos/asf/avalon/trunk/central/laboratory/avalon-net/Castle/CastleManagementExtensions">Avalon Subversion repository</a>
- (Test cases can be found <a href="https://svn.apache.org/repos/asf/avalon/trunk/central/laboratory/avalon-net/Castle/CastleManagementExtensionsTest">here</a>).
+ If your application will be used to host others components, then you
+ may build it as a server application. Just create a MServer concrete instance
+ and register your managed components on it (or use it to create your components
+ instances)
</p>
+<source>
+using Apache.Avalon.Castle.ManagementExtensions;
+
+
+bool createNewAppDomain = false;
+MServer server = MServerFactory.CreateServer("logicaldomainname", createNewAppDomain);
+
+</source>
+
+ <p>
+ After setting up a MServer instance you can use it to register component instances,
+ or create instances from it:
+ </p>
+<source>
+/// <summary>
+/// Registers the specified managed object instance.
+/// </summary>
+/// <exception cref="InvalidDomainException">If domain name is not found.</exception>
+ManagedInstance RegisterManagedObject(Object instance, ManagedObjectName name);
+
+/// <summary>
+/// Instantiates the specified type using the server domain.
+/// </summary>
+Object Instantiate(String assemblyName, String typeName);
+</source>
</section>
- <section name="Usage">
- <p>
-
- </p>
+ <section name="Managed Components">
+ <p>
+ To expose your components as managed components you have two choices:
+ <ul>
+ <li>
+ Use the ManagedComponent attribute
+ </li>
+ <li>
+ Implement the MDynamicSupport interface
+ </li>
+ </ul>
+ </p>
<source>
using Apache.Avalon.Castle.ManagementExtensions;
@@ -59,7 +94,7 @@
{
}
- [ManagedAttribute]
+ <b>[ManagedAttribute]</b>
public bool Started
{
get
@@ -72,78 +107,45 @@
}
}
- [ManagedOperation]
+ <b>[ManagedOperation]</b>
public void Start()
{
Started = true;
}
- [ManagedOperation]
+ <b>[ManagedOperation]</b>
public void StartAt(int time)
{
}
- [ManagedOperation]
+ <b>[ManagedOperation]</b>
public void Stop()
{
Started = false;
}
}
-
-
-</source>
- <p>
- Lifecycle:
- </p>
-<source>
-[ManagedComponent]
-public class DummyLifecycledService : MRegistrationListener
-{
- public DummyLifecycledService()
- {
- }
-
- [ManagedOperation]
- public void Start()
- {
- }
-
- [ManagedOperation]
- public void Stop()
- {
- }
-
- public void BeforeRegister(MServer server, ManagedObjectName name)
- {
- }
-
- public void AfterDeregister()
- {
- }
-
- public void AfterRegister()
- {
- }
-
- public void BeforeDeregister()
- {
- }
-}
</source>
+ </section>
- <subsection name="Useful links">
- <p>
- If you'd like to learn more about Managed Extensions, please refer to:
- </p>
- <ul>
- <li>
- <a href="http://jroller.com/comments/hammett?anchor=management_extensions_for_net">
- Management Extensions for .Net</a>:
- Full explanation of what driven the development of Castle Managed Extensions.
- </li>
- </ul>
- </subsection>
+ <section name="Source code">
+ <p>
+ The lastest version of source can be obtained from
+ <a href="https://svn.apache.org/repos/asf/avalon/trunk/central/laboratory/avalon-net/Castle/CastleManagementExtensions">Avalon Subversion repository</a>
+ (Test cases can be found <a href="https://svn.apache.org/repos/asf/avalon/trunk/central/laboratory/avalon-net/Castle/CastleManagementExtensionsTest">here</a>).
+ </p>
+ </section>
+ <section name="Useful links">
+ <p>
+ If you'd like to learn more about Managed Extensions, please refer to:
+ </p>
+ <ul>
+ <li>
+ <a href="http://jroller.com/comments/hammett?anchor=management_extensions_for_net">
+ Management Extensions for .Net</a>:
+ Full explanation of what driven the development of Castle Managed Extensions.
+ </li>
+ </ul>
</section>
</body>
Added: avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/invokers.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/invokers.xml Sun Jun 27 08:57:25 2004
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2004 Apache Software Foundation
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<document>
+ <properties>
+ <author email="[email protected]">Avalon Team</author>
+ <title>Avalon Castle - Managed Extensions</title>
+ </properties>
+
+ <body>
+
+ <section name="Invokers">
+ <p>
+ One of the biggest perfomance problems of some JMX implementations was
+ exactly how components methods were invoked. On the ManagementExtensions
+ implementation that was a big concern as well, so the invocation of methods and
+ attributes goes through a invoker strategy. The reflection strategy is used by
+ default, but you can enable the code generation one, or develop your own.
+ </p>
+<source>
+namespace Apache.Avalon.Castle.ManagementExtensions.Default
+{
+ using System;
+
+ public interface InvokerStrategy
+ {
+ MDynamicSupport Create(Object instance);
+ }
+}
+</source>
+
+ </section>
+
+ </body>
+</document>
\ No newline at end of file
Added: avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/lifecycle.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/lifecycle.xml Sun Jun 27 08:57:25 2004
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2004 Apache Software Foundation
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<document>
+ <properties>
+ <author email="[email protected]">Avalon Team</author>
+ <title>Avalon Castle - Managed Extensions</title>
+ </properties>
+
+ <body>
+
+ <section name="Lifecycle">
+ <p>
+ Your component may optionally implements the MRegistrationListener
+ and receive lifecycle events during registration and de-registration.
+ If your component wants to interact with MServer, implementing
+ MRegistrationListener is the best oportunity to receive a MServer instance.
+ </p>
+<source>
+[ManagedComponent]
+public class LifecycledService : MRegistrationListener
+{
+ public LifecycledService()
+ {
+ }
+
+ [ManagedOperation]
+ public void Start()
+ {
+ }
+
+ [ManagedOperation]
+ public void Stop()
+ {
+ }
+
+ public void BeforeRegister(MServer server, ManagedObjectName name)
+ {
+ }
+
+ public void AfterDeregister()
+ {
+ }
+
+ public void AfterRegister()
+ {
+ }
+
+ public void BeforeDeregister()
+ {
+ }
+}
+</source>
+
+ </section>
+
+ </body>
+</document>
\ No newline at end of file
Modified: avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/navigation.xml
==============================================================================
--- avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/navigation.xml (original)
+++ avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/navigation.xml Sun Jun 27 08:57:25 2004
@@ -23,6 +23,9 @@
<body>
<menu>
+ <item name="Lifecycle" href="lifecycle.html"/>
+ <item name="Remoting" href="remoting.html"/>
+ <item name="Invokers" href="invokers.html"/>
</menu>
</body>
Added: avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/remoting.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/central/site/src/xdocs/central/laboratory/castle/managedextensions/remoting.xml Sun Jun 27 08:57:25 2004
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2004 Apache Software Foundation
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<document>
+ <properties>
+ <author email="[email protected]">Avalon Team</author>
+ <title>Avalon Castle - Managed Extensions</title>
+ </properties>
+
+ <body>
+
+ <section name="Exposing the server">
+ <p>
+ ManagementExtensions hides from developer all the complexity
+ dealing with .Net Remoting architecture. To expose your MServer
+ through TCP (or HTTP) you need to create a MConnectorServer instance.
+ By now the only formatter supported is the binary one.
+ </p>
+<source>
+MConnectorServer serverConn =
+ MConnectorServerFactory.CreateServer( "provider:http:binary:test.rem", null, null );
+
+ManagedObjectName name = new ManagedObjectName("connector.http:formatter=binary");
+
+server.RegisterManagedObject( serverConn, name );
+</source>
+
+ </section>
+
+ <section name="Connecting to server">
+ <p>
+ The same strategy is used to connect from a client. Once you've connected, you
+ can extract the component tree from MServer, invoke methods and change component
+ attributes.
+ </p>
+<source>
+MConnector connector =
+ MConnectorFactory.CreateConnector( "provider:http:binary:test.rem", null );
+
+MServer server = (MServer) connector.ServerConnection;
+String[] domains = server.GetDomains();
+
+</source>
+ <p>
+ Obviously the connection string must match. You can use ASP.Net or Winforms
+ to construct a client application for manage your application. Unfortunatelly,
+ due to license issues, we can't provide a sample using either of these technologies.
+ But you can see the test cases to get a glimpse of how it can be accomplished.
+ </p>
+ </section>
+
+ </body>
+</document>
\ No newline at end of file
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.