>IPC Ways

IPC, inter-process communication, is often used in enterprise system because programs (processes) are not stand alone usually.

The following are common approaches for IPC:

  • exchange files via a net share custom your own socket driven approach communicate between paltform through Web Service Remoting invoke Message Queue

>回头看.Net的优点与进步

最近公司要竞标一个项目,对方指定要.Net,因此又重操旧业,整理一些.Net的技术优缺点。
水平所限,若有错误之处,请斧正。

  1. Web Service: 基于SOAP协议的功能抽象层,利用xml作为载体的文本内容完全可以通过http协议访问,具有穿透防火墙的能力,同时满足远程/本地调用以及b/s c/s调用,能极大程度的隐藏实现细节;不同的service可以部署于不同的host进行分布式调用而分散压力;当然这不是.net特有的。

  2. smart client: 对于客户端的操控能力强于html browser,可以通过http发布,还可以自动升级,部署成本近乎为零。

  3. ASP.NET User Control: 大大简化传统browser页面开发的复杂程度,增加代码重用的机会,提高模块化程度,最大的优点是大大增强了页面功能,其事件模式改变了b/s开发的模式,但它也是一把双刃剑,页面-服务器的事件也是效率的最大敌人,因此不可滥用。

  4. XML: .Net 的xml支持作的相当不错,有专门的name space来处理xml相关问题,同时dom对xml的处理速度还是比较理想的。

  5. Performance: .Net托管代码的效率比native的代码要慢,据统计慢大约15%~20%;曾有人将quake2的c代码改到托管的c++代码(vc7 delegate),效率降低约15%;但是可以考虑在运算密集的模块使用com/com+,vc7是ms有史以来对standard C++支持最好的一次,同时编译的是native code,因此无论是效率还是标准都有保证。

  6. Open Source: 自从.Net诞生以来,open source社区从来没有过如此的关注过ms开发,大量的优秀平台框架和软件从java移植到.Net上,如Spring, hibernate,ant, log4j, junit等,极大的丰富了mser的选择,同时给ms平台带来了无数的先进思想(也不能说ms平台以前就完全没有)

  7. reflect: 相信bill从java那里学到了不少东西,而反射则是相当重要的一个。他使得Dependence injection等AOP的思路得以实施,使得托管代码也具有了以前只有c/c++才有的能力(类似函数指针)

>[摘录]JAVA如何使用相对路径

—摘自互联网

我们在程序中经常要用到数据文件或资源文件(如图象),如果在程序中用绝对路径,就会使程序失去灵活性。例如我们的应用程序目录是D:NECS,而数据目录是 D:NECSDataBase,如果我们使用数据文件时用D:NECSDataBase目录名。那么当我们程序被移到C盘的时候,就会出错,因为这时数据目录变成了C:NECSDataBase。所以我们要使用相对目录 DataBase。

我们可以使用类java.util.Properties ,该类是一个Hashtable,保存许多系统属性。其中:

……
java.home Java installation directory
java.class.path Java class path
file.separator File separator (“/“ on UNIX)
user.dir User’s current working directory
……
我们可以用java.lang.System的方法getProperty(String key)来获得所需的属性。
curDir = System.getProperty(“user.dir”);
fileBar= System.getProperty(“file.separator”);则上例中的数据目录,可表示为 curDir+fileBar+”DataBase”

>[JSTL] 使用本地化资源文件的方法

以basename是messages的为例。

内容如下的utf-8的中文化文件messages_zh_CN.properties.src:

name=张三
sex=男
city=北京
menu_return=返回主菜单

第一步,先确定原文件是GB/GBK编码的(很重要),如果是utf-8的先要转成GB/GBK的;

第二步,用$JDK/bin/native2ascii.exe进行转换
> c:path>native2ascii messages_zh_CN.properties.src >

messages_zh_CN.properties
实际产生的输出如下:

name=u5f20u4e09
sex=u7537
city=u5317u4eac
menu_return=u8fd4u56deu4e3bu83dcu5355

由于重定向到文件,所以看不到输出。

以上内容就是你的本地化的资源文件messages_zh_CN.properties的内容。

_注意:.properties文件末尾需要一个空行才能被native2ascii正确转换。

_

>Spring MVC 中的国际化的message.properties该如何配置?

ResourceBundle [messages] not found for MessageSource: Can’t find bundle for base name messages, locale zh_CN。

为了解决这个,我复制了一个message_zh_CN.properties,但是无论是放在message.properties相同的class目录下,还是放在class/i18n/ 下都仍然是这个警告。

该如何解决呢?

已解决,漏了s
messages is not message.
I’ve missed the letter ‘s’. :(

>The Flow of MVC in Spring -- Part I -- Dispatcher and Controller

From the example on spring official site, I conclude the flow of Spring’s MVC.

1. Request –> org.springframework.web.servlet.DispatcherServlet –> parse [ServletName]-servlet.xml –> dispatch to Controller
The “Request” is the “url-patten” mapped in web.xml of web application.
[ServletName] is the name DispatcherServlet mapped (you can also extend it).

2. Create your own Controller “MyController“ –> implement Interface org.springframework.mvc.Controller –> write code of controlling in method handleRequest() which inherited from “Controller” –> return the created model and view obejcts of org.springframework.mvc.ModelAndView –> the framework will render it automatically
The constructor of ModelAndView takes 1 or 3 parameter(s).

For 3 parameters, first one is the view path (The truth path or resolved path. The resolved path is resolved by org.springframework.web.sevrlet.view.InternalResourceViewResolver. I will explain it when I post the next time.).
The second one is the model object’s given name, it’s String. This name is NOT the object’s variant-name. This name will be used in jsp. You can look it as an alias.
The third one is the model object ( just the variant you will pass to jsp view ).

3. Ok, Use the returned model object in jsp.

I am an beginner of Java, so i can not conclude if the flow is the common MVC flow.

to be continue …