2012-10-04 3 views
1

현재 Windows 서비스 프로젝트에서 작업 중입니다. 내가 그 DLL에서 함수를 사용해야 할 때 내 프로젝트에서 외부 클래스 라이브러리에 대한 참조를 추가했습니다.Windows 서비스 대 Windows Form 응용 프로그램 VB.NET

그러나 클래스 라이브러리 함수는 세션 값을 가져 오는 것이지만 Windows 만 있기 때문에 이러한 웹 메서드를 사용할 수 없습니다. 이 문제를 해결하기위한 두 가지 접근 방식 만 생각할 수 있습니다.

1) 외부 클래스 라이브러리에서 필요한 함수를 오버로드하고 세션 값을 입력 매개 변수로 바꿉니다. 이 함수가 참조하는 많은 세션 값을 가지고 있으므로이 작업은 시간이 오래 걸릴 수 있습니다.

2) 대신 Windows 양식 응용 프로그램을 만들 수 있습니다. 웹 브라우저 컨트롤을 폼에 추가하십시오. 외부 프로젝트의 기능에 필요한 모든 입력 매개 변수를 갖도록 URL을 구성하십시오. 백그라운드 프로세스로 실행할 스케줄러를 추가하십시오. 참조해야하는 ASP.NET에서 코딩 된 외부 프로젝트에서 Windows Forms app에서 URL을 가져 오는 새 페이지를 추가 할 수 있습니다. 쿼리 문자열을 구문 분석하여 입력 값을 가져오고 필요한 함수에 전달합니다. .

더 나은 방법이 있으면 제안 해주세요. 고맙습니다 !

+0

Windows ** 웹 서비스 **와 Windows ** 서비스 **의 차이점이 있습니다. 귀하의 질문은 후자가 아닌 첫 번째 문제이므로 제목과 태그를 모두 수정했습니다. –

+0

저는 세션 값을 사용할 수없는 이유에 대해 다소 혼란스러워합니다. 당신은 Windows Web Service Project에서 작업하고 있다고 말합니다. 세션에 액세스 할 수 없습니까? – Tim

+0

켄 (Ken)이 웹으로 변경했다고 생각하지만 저는 웹이 아닌 Windows 서비스 응용 프로그램에서 작업하고 있다고 말하려고합니다. – user1681514

답변

0

나는 옵션 1을 추천한다. 옵션 2는 거친 악몽처럼 보이지만, 옵션 1은 간단한 (힘들지만) 코드 변경처럼 보인다.

Visual Studio 또는 자주 사용하는 텍스트 편집기에서 정규식 검색/바꾸기를 수행하면 옵션 1을 덜 고통스럽게 만들 수 있습니다. 이 기술을 사용하여 지루한 대규모 코드 변경을 항상 수행 할 수 있습니다. 일단 익숙해지면 매우 효율적입니다.

그러나 장기적인 해결책은 라이브러리 코드를 변경하는 것입니다. 전역 상태에 의존하는 재사용 가능한 라이브러리 코드를 작성하는 것은 언제나 재앙을 대비하는 방법입니다.

0

옵션 하나가 가장 좋은 것 같습니다. 가장 깔끔하고 프로젝트 관리를 유지할 수 있습니다. 나는 당신이이 일을 시작할 때 당신이 활용할 수있는 패턴을 알아 차리고 전체 작업이 지금은 그렇게 보이지 않는다고 추정합니다.

바로 가기가 거의 없습니다.

+0

입력하신 내용에 대해 감사하지만 이미 시도했습니다. 이 함수는 클래스 라이브러리에서 다른 함수에 대한 참조를 많이 갖고있는 LOC가 약 400 개이며 모든 함수에 세션 값이 있습니다. 시간 제약이 없다면 나는 그 모든 것을 깨끗하게 할 수 있었을 것입니다. 불행히도, 나는 지금이 시점에 할 수 없습니다. – user1681514

관련 문제