2009-04-01 8 views
0

저는 C#에서 거의 몇 달 동안 작업을 시작했으며 더 도전적이고 흥미로운 것을 찾고 있습니다. 나는 사용자 지정 vb 스크립트를 지원하는 미디어 원숭이라는 미디어 플레이어를 사용합니다. 현재 노래를 재생하는 dir에 파일을 쓰고, 이전에 있던 내용을 다시 쓰면서 새 노래가 재생 될 때마다 업데이트됩니다.시작 하시겠습니까?

이제이 정보를 데이터베이스에 추가하고이 정보를 기록하고 내 홈페이지에 정보를 추가하려고합니다. 나는 그것이 작동하도록 해킹 할 수 있다는 것을 알고 있지만, 나는 일을하는 "전문적인 방법"이 무엇인지 알고 싶다.

나는 다음을 생각해 냈다. 난 지저분 해 보이는 데이터베이스에 연결하기 위해 ODBC 드라이버가 필요 하겠지, 웹 서비스가 작동 할까? 어떻게 작동할까요? VbScript가 dll 파일을 호출하여 웹 서비스를 호출하여 별도의 서버에서 데이터를 수정할 수 있습니까? 그렇게하는 것이 안전할까요?

답변

1

많은 전문 C# 응용 프로그램은 n 계층입니다. 귀하의 경우에는, 당신은 아마 이런 식으로 레이어 것 : 서버에서

:
- 데이터베이스 저장
- 데이터베이스 액세스/비즈니스 계층을
(때로는 두 가지 구성 요소에 따라 얼마나 복잡한 응용 프로그램입니다) - 웹 서비스 클라이언트에

:
- 웹 서비스 클라이언트 클라이언트 기능을 지원하는
된 경위, 다른 층.

따라서 데이터베이스 저장소는 Oracle 또는 Microsoft SQL Server의 일부 테이블과 같을 것이며 서버에 있습니다.

데이터베이스 액세스/비즈니스 계층은 데이터베이스에서 데이터를 검색하고 데이터베이스에 저장하는 코드입니다. 또한 비즈니스 오브젝트를 포함 할 수도 있는데, 이는 기본적으로 데이터베이스의 데이터를 나타내는 특성을 갖는 클래스입니다. 데이터 액세스 계층의 이점은 데이터베이스에 대한 읽기 및 쓰기가 특수 코드를 필요로 할 수 있으며 응용 프로그램을 뿌리기 위해 코드를 뿌리는 것을 원하지 않는다는 것입니다. 따라서 대신 필요한 데이터를 객체에로드하는 데이터 액세스 레이어의 함수를 호출 할 수 있으므로 나머지 응용 프로그램은 일반적인 이전 .NET 객체/클래스와 상호 작용합니다. 이러한 것을 POCO라고하며, 이는 이전 CLR 개체 계획과 같은 것을 의미합니다. 물론 사람들은 데이터베이스 액세스를 isaloting하는 문제에 대해 다른 접근 방식을 취해 왔기 때문에 많은 변형이있었습니다. 또한 데이터베이스가 변경 될 때마다 변경 사항을 최소화하기위한 목적으로도 사용됩니다. 데이터베이스 액세스 로직이 앱 전체에 뿌려지지 않기 때문에 데이터베이스가 변경되면 (예 : 테이블에 새 열을 추가하거나 이름을 변경하는 경우) 업데이트해야 할 장소가 줄어 듭니다.

가끔 비즈니스 계층이 자체 계층이되어 응용 프로그램의 "논리"를 대부분 포함합니다. 데이터 액세스와 웹 서비스 계층 사이에 위치 할 것입니다. SOA (Service Oriented Architecture)의 개념을 사용하면 인증 서비스 및 웹 요청 처리 서비스가있을 수 있습니다. 이러한 서비스는 항상 인스턴스화 된 클래스와 매우 유사하며 요청을 처리하기 위해 대기합니다. 웹 요청 처리 서비스는 요청을 받고, 요청을 승인하기 전에 자격 증명을 확인하기 위해 먼저 인증 서비스를 호출 할 수 있습니다. SOA는 적절한 때에 만 사용해야한다고 생각하는 것 중 하나입니다. 객체 지향 기술을 사용하는 경우에는 동일한 이점이 있습니다. 항상 그런 것은 아닙니다. SOA가 올바르게 실행되면 확장 성이 향상되므로 SOA가 필요한 추가적인 이점을 제공하는지 여부에 따라 달라집니다.

Webservice는 비즈니스 계층을 호출하여 데이터를 업데이트하거나 검색하여 웹에서 요청을 수신, 구문 분석/해석하고 해당 요청에 대한 조치를 취할 책임이 있습니다.

그래서 여기에는 서비스를 통해 노래 업데이트를 게시하는 서비스 사용자가 많을 수 있다는 개념이 있습니다.

클라이언트는 메시지에 대한 요청 형식을 지정하고 웹 서비스로 보내고 웹 서비스에서 메시지를 검색 할 수있는 "웹 서비스 클라이언트"계층을 갖게됩니다. 웹 서비스 계층에 응용 프로그램 "로직"을 거의 넣지 않을 것입니다.

이 모든 것들이 너 자신을 위해 무언가를 원하기 때문에 원하는 것이 무엇인지에 대한 과잉 공격이고 비효율적 일 것이다. 그러나 이것은 많은 웹 서비스 응용 프로그램의 기본 해부학이며 좋은 학습 운동이 될 것입니다. 레이어의 모든 목적은 디커플링과 단순성입니다. 더 많은 레이어/컴포넌트가 전체적으로 애플리케이션을 복잡하게 만들지 만, 각 컴포넌트가 더 간단하다는 것을 의미합니다. 즉, 몇 가지 다른 구성 요소 (주변 레이어)와 상호 작용하는 하나의 구성 요소 만 처리 할 때 문제를 해결하는 것이 더 쉽습니다. 따라서 적은 구성 요소와 많은 구성 요소 사이에 신중한 균형이 유지됩니다. 너무 적고 관리가 어렵다. 너무 많아서 복잡한 방식으로 얽혀 있습니다. 나는 "수업이 너무 커지고 너무 복잡해지면 몇 가지 수업으로 나누어"라는 말을 따라 무언가를 말한 것으로 들었습니다. 본질적으로, 할 일이 옳은 것처럼 들리므로, 그것의 지옥을위한 세분화 된 부분을 시작하지 마십시오. 구성 요소를 분리 할 것인지 결정하기 전에 구성 요소의 복잡성을 평가하십시오. 때로는 간단한 작업을 위해 레이어를 여러 가지 용도로 사용하는 것이 더 빠르며 전반적인 디자인을 단순하게 만듭니다. 요점은 적절한 곳에 이러한 개념을 적용하는 것입니다. 경험을 통해 무엇이 적절한지를 배우게 될 것이며, 당신은 분명히 "하는 것"으로 가장 많은 것을 배울 수 있다는 것을 이해하게 될 것입니다.

"vbscript가 COM 구성 요소를 호출 할 수 있습니까?" COM 지원으로 .NET DLL을 컴파일 할 수 있습니다. 많은 오래된 것들은 COM dll을 호출 할 수 있습니다. VBScript를 dll을 를이있어 :

내가 봤? "안전이해야 할 것을인가" VB Script and DLLs

귀하의 웹 서비스는 보안에 가장 관심이있는 곳이 될 것입니다. 보안을 염두에두고 설계하고 실수하지 않는 경우에만 안전합니다. 우리 모두는 때로는 실수를 저지를 수 있습니다. 즉, 완벽하게 안전하다는 보장이 없음을 의미합니다.

관련 문제