綜合研究使用瞭java spring.net castleunity 進行管理,在使用配置文件的情況下發現還是java spring 和castle windsor 比較簡潔,但從服務支持和RoadMap上講,覺得在.net領域還是Unity勝出,能充分利用.net framework .
我選擇Unity的幾大理由:
1、持續的RoadMap
2、強大的微軟
3、因為基於.net ,更原生態
4、和WCF的集成能力
一、java spring 用法:
import javax.jws.WebService;
import org.springframework.beans.factory.annotation.Autowired;
import capinfo.sior.service.OnlineReportPreRegisterService;;
/**
* @author design-life
*/
@WebService(serviceName = “InfoReportWebService”, endpointInterface = “InfoReportWebService”, targetNamespace = “http://reportwbs/”)
public class GetPreRegisterInfoWebServiceImpl {
@Autowired
OnlineReportPreRegisterService service;
public String GetPreRegisterInfo(String registerCode,String scanCode){
return service.getPreRegisterInfo(registerCode, scanCode);
}
}
註:
OnlineReportPreRegisterService 是定義的一個Interface,通過 @Autowired表示自動裝配實例化一個類,具體定義封裝在一個xml中,實現類在xml表現為一個bean.
二.net Castle 用法:
namespace TestService.Controller
{
using Castle.Core;
using Castle.DynamicProxy;
[ControllerDetails(Area=”TestService”)]
public class BulletinInfoController : SmartDispatcherController
{
private readonly IDataQuery query;
private string _title;
public BulletinInfoController(IDataQuery query)
{
this.query = query;
}
public BulletinInfoController() { }
public IList<News> List()
{
IList<News> list;
News news = new News();
list = query.UseCriteriaAPI_Get2pagelistinfo(news);
return list;
}
}
註:在Castle 聲名
private readonly IDataQuery query; 但需要構造函數初使化它,在整個Castle中Controller 、Service等均可通過配置文件的方式,讓容器管理它們。
三、Unity用法
public static void TestCode2()
{
var fileAdd = “unityApp.config”;
var filePath = new ExeConfigurationFileMap { ExeConfigFilename = fileAdd };
try
{
Configuration cfg = ConfigurationManager.OpenMappedExeConfiguration(filePath, ConfigurationUserLevel.None);
var unitySection = (UnityConfigurationSection)cfg.GetSection(“unityTest”);
var container = new UnityContainer().LoadConfiguration(unitySection, “one”);
var iAdd = container.Resolve<IAddInfo.IAddInfo>();
Console.WriteLine(iAdd.NotifyMsg());
}
catch (Exception err)
{
throw err;
}
Console.ReadKey();
}
註:黑體字部分是Unity使用配置文件的方法,略顯麻煩,不過可以把這部分提取出來,變成和第一、二種一樣的方式。