2009-07-13 3 views
-1

나는 베스트 프랙티스에 대한 합의가 무엇인지, 아니면 앱을 작성하는 데있어 단순한 정상 성을보고자합니다.DLL 대신 웹 서비스 사용

  • [HttpHandler를]
  • ClientRender.ProcessRequest (...)
  • ClientFactory.GetInnerInfo (...)
  • Services.ServiceConnect.GetCampaignService (: I는 다음이이 예

    ...)

  • [웹 서비스]
  • Campaign.GetInnerClient (...)
  • [웹 서비스]
  • DAL.GetInnerClient (...)
  • EnterpriseLibrary.CreateDatabase (...)
  • EnterpriseLibrary.GetStroedProcCommand (...)
  • EnterpriseLibrary.ExecuteReader (...)
  • DAL.PopulateClientCampaignFromReader (...)
  • DAL.ClientCampaignFromDataReader (...)
    1. 성능 히트 어떤 종류의 내가 HttpHandler를 내 에서 웹 서비스 내에서 웹 서비스 를 호출하여 초래입니다 :

질문 ... 호출 트리를 돌려

  • ?
  • 2 웹 서비스보다 이 아니라 어셈블리로 이것을 다시 작성 하시겠습니까? (그리고 WSDL 간행물에 대한 어셈블리 의 상단에 웹 서비스를했습니다.)
  • 우리는 또한 이 "제대로" 간단한을 추가하는 데 2 ​​~ 3 일이 소요 이와 동일한 어셈블리 및 을 활용하는 것이 관리자의 웹 사이트가 하나의 데이터에 대한 CRUD 연산 엔티티. 좀 더 직접적인 접근으로 을 움직일 것이라고 주장 하시겠습니까?
  • 희망이 있으시면 보내 주시면됩니다.

    +0

    "예"의 의미를 알았습니까? –

    +0

    더 많은 의사 코드이지만 WS를 호출하는 WS의 흐름을 보여줍니다. 예전의 웹 사이트에서 간단한 호출을하기 위해서는 WS에 전체 DAL이 포함 된 15 가지 이상의 WS 메소드 *가 호출됩니다. 너무 많은 HTTP 오버 헤드가 그렇게 효율적이어서는 안된다. –

    답변

    2

    IMHO는 웹 서비스에서 제공해야하는 오해입니다. WS를 사용하여 데이터베이스 호출을 처리하는 것은 의미가 없습니다.다음과 같이 할 수 있습니다.

    1. 데이터베이스 추상화 및 비즈니스 논리를 위해 별도의 어셈블리를 작성하십시오. "GetStoredProcCommand"와 같은 메서드 및 클래스는 단일 어셈블리에 속해야하며 비즈니스 논리는 다른 어셈블리 또는 어셈블리 그룹에 속해야합니다.
    2. WebServices의 기초로 이러한 어셈블리를 사용하십시오.
    3. WebService를 빌드하기 전에 누가 사용하려고하는지, 그리고 어떻게 사용하는지 알고 있어야합니다. 당신이해야 할 일을 모르는 경우, WebServices를 구축하는 것은 의미가 없습니다. 그것은 당신이 그것을 만든 후에 당신이 진짜 기능을 밀어 버릴 것이므로 엉망이 될 것입니다.
    4. 웹 서비스가 내부 애플리케이션에서 소비된다고 가정 할 경우 웹 서비스 사용시 성능에 영향을 미칩니다. WS를 통해 모든을 시도하면 속도가 느려질 것입니다.
    +0

    이것이 내가 생각한 대답이지만 * 대답입니까? :) –

    +0

    나에게 이것은 * 대답 인 것 같다. 예를 들어 공개 API는 일관성을 요구합니다. 이는 현재 디자인에서 갖지 못할 것입니다. 결국 많은 새기있는 추상화로 끝날 것입니다. –

    +0

    웹 서비스가 "데이터베이스 호출을 처리"하는 것은 의미가 없지만 "엔터티"수준에서 데이터를 처리하는 내부 웹 서비스 (공개되지 않음)를 갖는 것이 좋습니다. 이렇게하면 공통된 비즈니스 개체 집합이 다른 웹 서비스를 포함하여 필요한 내부 소프트웨어 조각에 노출 될 수 있습니다. ADO.NET Data Services는이를 패키지로 구현하려고 시도합니다. –

    0

    웹 서비스 호출을 중첩하는 데 유효한 이유가 분명하지 않은 경우는 분명합니다.

    즉, 이 아니며, 명백하지 않습니다. 당신은 아마 서비스를 쓴 사람들에게 물어봐야 할 것입니다.

    +0

    내가 지금까지 얻은 유일한 이유는 공개 API가 결국 빌드 될 수있게하는 것이다. –