기본 콘텐츠로 건너뛰기

11월, 2016의 게시물 표시

인터페이스의 단순화

이번 프로젝트를 하면서 서비스의 인터페이스를 통일화 시켜 2개의 Method만을 외부로 노출시켰습니다. 입,출력 인자는 둘다 DataSet을 이용하였습니다. 실제 구현부는 별도의 Dll로 만들었고 해당 Dll을 로딩하여 클래스 인스턴스를 생성하여 특정  Method을 호출하는 방식으로 서비스를 구성하였습니다. 이 방식의 장점은 서비스 Method가 늘어날 필요가 없다는 것입니다. 단점으로는 넘겨줄 인자의 정보를 파악하기가 힘들다는 것입니다. 구현 정보를 외부로 덜 노출한다는 점과 인터페이스가 단순하다는 점에서 이 구현 방식을 사용하였습니다. [인터페이스] [OperationContract] DataSet GetCommandParam(string sAssemblyName, string sClassName); [OperationContract] DataSet ExecuteCommand(string sAssemblyName, string sClassName, DataSet oParam); [구현부] Assembly oAssembly = AssemblyHolder.GetAssembly(sAssemblyName); if (null != oAssembly) { Type oClassType = oAssembly.GetType(sAssemblyName + "." + sClassName); MethodInfo oMethodInfo = oClassType.GetMethod("GetParam", BindingFlags.Public | BindingFlags.Instance); if (null != oMethodInfo) { object oClassIntance = Activator.CreateInstance(oClassType, null); object[] oParamArray = new object[] { sPrjCode, sSiteID }; re