2013-9-13工作心得

最近把java的Dubbo的服务框架改成Dubbo.Net。即.net版的Dubbo服务框架。由于对java不是很了解,好多java代码看不懂,其实也是自己不太想看。还好有个java的同事即会.net也会java,在他的带领下我们完成了Dubbo.Net.但是对Dubbo中用到的好多知识自己还不是很明白。只能慢慢研究了,例如Hessian,Zookeeper.但是期间我们遇到了好多问题。下面一一例出。

1.应用程序池回收,或IIS启动时服务不自动初始化问题.

由于一开始服务启动的方法是在Application_Start方法中写的。此方法只有当用户请求时才会执行,而我们要实现在部署到IIS上时服务开始启动与注册中心开始连接。在应用程序池回收时,会释放一些资源。服务就又停掉了。针对此问题我们找了下,Asp.net4.0中自动启动web应用。参考 http://blog.csdn.net/cxzhq2002/article/details/8651311 。但是我们服务器上IIS是6.0的,此方案只在IIs7.0上才起作用。后来我们使用HttpListener实现简单Web服务器 参考 http://www.cnblogs.com/wlitsoft/archive/2012/04/25/2469524.html。

HttpListener的机制应该与IIS中差不多。待继续研究。

2.解决Zookeper引用log4.net 1.2.11.0,导致在Dubbo.net使用1.2.10.0 出错的问题。

由于公司统一用的1.2.10.0的log4.net。在Zookeper的源码中虽然log4net属性中显示1.2.10.0,但是一直出现未能加载log4.net 1.2.11.0,最后替换了下Zookeper的源码中的log4.net。

3.HessianCSharp 源代码中Activator.CreateInstance(this.m_type.Assembly.FullName, this.m_type.FullName).Unwrap(); 出现了异常,现改为 object result = Activator.CreateInstance(this.m_type);这样是可以的。至于两个方法的不同还需下面继续研究。单纯从异常的信息来看是没有加载Dubbo.Net.Test.Service.dll的引用,但是这个引用在服务开始启动时就已经被加载。最后根据Assembly.GetAssembly(this.m_type);方法发现此程序集已经被加载了。

4.解决Release目录下不生成log的问题。原因是由于Debug下生成的服务为卸载。即当前运行的服务一直为debug下的服务。卸载windows服务。使用 

>cd c:\windows\system32\cmd.exe sc delete 服务名,删除服务。删除不了可重启电脑。

 

posted @ 2013-09-13 10:44  多远才是未来  阅读(207)  评论(0编辑  收藏  举报