Using the Remoting Callbacks in .Net Applications - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- Using the Remoting Callbacks in .Net Applications (http://www.webasp.net/article/4/3986.htm) |
| -- 作者:未知 -- 发布日期: 2003-07-12 |
| RemoteObjectX This is a .Net Service - transactional and poolable object register into the COM+ catalog and config as a remoting object. There are attributes for assembly and class necessary for this object configuration in the COM+ catalog. The other change, the remote class is derived from the ServicedComponent. This is a standard stuff for the .Net Service configuration. using RKiss.RemoteObject; // abstract definitions [assembly: ApplicationName("RemoteObjectX")] [assembly: ApplicationID("026B9E80-6B07-45f0-8EBF-BD35B5D3BB77")] [assembly: Description("Remoting COM+ test")] [assembly: ApplicationActivation(ActivationOption.Library)] // accepted by Beta2 [assembly: ApplicationAccessControl(Value = false, Authentication = AuthenticationOption.None)] namespace RKiss.RemoteObjectX { [Guid("B19A2AD2-31F2-4c6e-B5A6-24495670BE02")] [Description("Remoting Object")] [ObjectPooling(Enabled=true,MinPoolSize=3,MaxPoolSize=64)] [Transaction(TransactionOption.Required)] [ConstructionEnabled(Default="server=ATZ-ROMAN;uid=sa;pwd=;database=Logger")] [EventTrackingEnabled] public class RmObjectX : ServicedComponent, IRmObject { ... } } Note that object has to run in the COM+ library only, that's the limitation of the Beta2 and it will be fix it in the RTM version. RemoteObjectWS This is a Web Service object generated by wizard and modify for the remoting purpose. The following code snippet shows its boilerplate: using RKiss.RemoteObject; // abstract definitions namespace RemoteObjectWS { public class RmObjectWS : MarshalByRefObject, IRmObject { public RmObjectWS() { ... } #region Component Designer generated code ... #endregion [WebMethod] public string Echo(string msg) { ... } // stateless callbacks [WebMethod] public string GiveMeCallback(int timeinsec, string ticketId, object objwire) { ... } } } Note that this project has to be unzip and move it into the localhost\RemoteObjectWS directory in prior of opening the solution. HostServer This is a server program to host a remote object. It's a very simply console program to perform a configuration of the remote object(s). There are two kinds of options for this configuration as I mentioned earlier. The option 1 is commented. namespace RKiss.ServerActivation { public class Server { public static int Main(string [] args) { try { /* option 1 TcpChannel chan = new TcpChannel(12345); ChannelServices.RegisterChannel(chan); RemotingConfiguration.RegisterWellKnownServiceType( Type.GetType("RKiss.RemoteObjectA.RmObjectA, RemoteObjectA"), @"RemoteTest/ObjectA", WellKnownObjectMode.SingleCall); RemotingConfiguration.RegisterWellKnownServiceType( Type.GetType("RKiss.RemoteObjectX.RmObjectX, RemoteObjectX"), @"RemoteTest/ObjectX", WellKnownObjectMode.Singleton); */ // option 2 RemotingConfiguration.Configure(@"..\..\HostServer.exe.config"); } catch(Exception ex) { System.Console.WriteLine(ex.Message); } System.Console.WriteLine("Hit <enter> to exit..."); System.Console.ReadLine(); return 0; } } } |
| webasp.net |