MyDotNetClass2( 7, 9 ); PureDotNetType obj3 = new PureDotNetType(); PureDotNetType2 obj4 = new PureDotNetType2();
obj3.CharProperty = 'B';
// 这两个值将在我们的哈希表中得到对象返回值后被消除 obj4.NotUsed = 511; obj4.AlsoNotUsed = "test"; // 这个值将会被保留,但是在Java代码中将会以另外一个名称出现 obj4.OnlyUsedField = 512;
// 将.NET 实例放入Java哈希表, // 请注意这里没有可用的Java原始类型提供给.NET类型, // .NET对象状态被拷贝到通用的Java实例之中。
ht.Put( "obj1", obj1 ); ht.Put( "obj2", obj2 ); ht.Put( "obj3", obj3 ); ht.Put( "obj4", obj4 );
// 这是一个真实的测试! // 现在我们尝试去得到最初的.NET信息。 object o1 = ht.Get( "obj1" ); Console.WriteLine( "o1={0}", o1.ToString());
object o2 = ht.Get( "obj2" ); Console.WriteLine( "o2={0}", o2.ToString());
object o3 = ht.Get( "obj3" ); Console.WriteLine( "o3={0}", o3.ToString());
object o4 = ht.Get( "obj4" ); Console.WriteLine( "o4={0}", o4.ToString());
Console.WriteLine( "ht={0}", ht.ToString() ); } catch( JuggerNETFrameworkException jnfe ) { Console.WriteLine( "Exception caught: {0}\n{1}\n{2}", jnfe.GetType().Name, jnfe.Message, jnfe.StackTrace ); } } }
上一页 [1] [2] [3] [4] [5] 下一页
总的来说,在上述的程序互操作过程之中,在不考虑单一运行环境的速度优势情况下(在单一过程中的数据移动,远比网络传输中的数据移动速度更快,甚至高于快速比特),程序互操作过程包含以下的一些优点:
集中化。在许多情况下,我们希望特定资源(比方说代码中的数据库序列标识符)只存在于一个且仅此一个进程之中,来避免复杂的进程间代码同步的实现。
可靠性。较少的硬件相关性,以及整个系统单一的硬件损耗,使得系统很少会有受到攻击的可能性。
结构化要求。在某些情况下,现有的结构化模型将要求所有程序处理过程替代已有的处理过程,比如说,应用程序的现有用户接口如果使用ASP.NET编写,并且应用程序部分的互操作性,用以实现为EJB消息驱动Bean在JMS消息队列中的消息传送处理过程。则在本地程序中传送消息给Java服务,并且仅是释放消息到JMS队列之中,这样的过程就显得有些多余,特别是在假定JMS客户端代码非常简洁的时候,程序实现代价较高。将JMS的客户端代码放入ASP.NET进程之中(Codemesh为JuggerNET代理实现JMS消息客户端提供了特别的版本),来实现与现有程序架构保持一致的简洁途径。
此外,并非是所有的互操作解决方案都将通过in-proc方法来实现,但其中一些会使用这样的方法,并且开发者无需害怕这样的想法,即便是提供这些操作的工具有着非常大的使用价值。
关于作者
Ted Neward是大规模企业应用系统方面的独立咨询人。也是Java、.NET和XML服务相关主题的会议上的演讲人,致力于Java与.NET的互操作技术。在Java与.NET方面,他曾撰写过几本广受认可的书籍,其中包括最近出版的《高效企业级Java开发》一书。
资源
"The Java Native Interface" (Liang)
"Java Native Interface" (Gordon)
The JNI page at the Java SE website (http://java.sun.com/javase/6/docs/technotes/guides/jni/index.html)
"Customizing the Common Language Runtime" (Pratschner)
"Shared Source CLI" (Stutz, Neward, Shilling)
The C++/CLI Language Specification (ECMA International) 上一页 [1] [2] [3] [4] [5] 上一页 [1] [2] [3] [4] [5]
|