2009-04-25 13 views
1

현재 저는 asp.net mvc에서 작은 응용 프로그램을 만들고 있습니다. 그것은 일종의 현지화 도구입니다. 우리의 고객은 우리의 응용 프로그램에 로그인하고 그들이 사용하는 응용 프로그램에 나타나는 용어를 번역 할 수 있습니다. 그것은 다음과 같이 발생한다 : 2에서asp.net mvc?

  1. 로그인 현지화 사이트에
  2. 찾기를 예를 들어 (
  3. 해당 응용 프로그램을 시작
  4. "카탈로그"응용 프로그램에서 버튼에 대한 예를 들어 제목에 대한 특정 용어를 번역, "카탈로그"응용 프로그램 .) 및 물마루 웹 서비스 번역 된 지역 데이터베이스를 업데이트합니다.

이것은 우리의 오래된 해결책이며 제대로 작동합니다. 하지만 지금은 asp.net mvc에서 변환 도구 응용 프로그램의 리팩토링을 수행하고 있습니다. 왜 mvc와 웹 서비스에서 별도의 논리 (배가 된 논리)를 사용합니까? 왜 우리는 mvc만을 웹 서비스로 사용할 수 없나요?이 방법은 하나의 로직 (요소를 가져오고 업데이트하는 것)이 있고 wcf 웹 서비스 또는 기타를 만들 필요가 없습니다. 그리고 가장 중요한 것은, 나는이 논리를 가지고있는 dll에 종속성을 가진 메쉬 데스크톱 응용 프로그램이 없다는 것입니다.

그리고 이제 질문입니다. 뷰와 JsonResults를 제외하고 mvc의 컨트롤러에서 얻을 수있는 것 ... 객체의 컬렉션을 직접 가져올 수 있습니까?

이상 일반 질문, 어떻게 asp.net mvc 웹 서비스로 사용할 수 있습니다. 당신의 경험은 무엇입니까?

환호 마르코

답변

2

은 정말 당신의 필요에 따라 달라집니다. ASP.NET MVC 응용 프로그램을 데이터 서비스로 사용할 수는 있지만 공유 코드를 공통 라이브러리로 추출하고 두 응용 프로그램에서 해당 라이브러리를 참조해야하는 것처럼 들립니다. 웹 서비스 프로젝트가 제공하는 몇 가지 사항이 있습니다.이 작업은 순전히 컨트롤러 작업으로는 더 어려울 것입니다. (de/serialization, wsdl, etc ...)

+0

감사합니다. 사실 모든 응용 프로그램은 데이터 레이어, 심지어 웹 응용 프로그램과 같은 DLL을 사용합니다 ... 그리고 가장 좋은 점은 해당 DLL에 모든 데이터 계층 작업이 있으므로 코드이므로 그 mvc 응용 프로그램에서 사용하는 것과 동일한 코드를 사용합니다 반대편에 서비스로 mvc를 호출하는 것입니다 :이 아름다운 아닌가요? :) 건배 – Marko

1

정말 웹 서비스를 어떻게 사용할 것인가에 달려 있습니다.

예 : jQuery는 작업에서 컬렉션, 배열, 중첩 된 개체 등)이있는 복잡한 개체를 반환 할 수 있고 클라이언트 브라우저에서 사용하기 위해 jQuery를 자바 스크립트 개체로 역 직렬화 할 수 있기 때문에 JsonResults를 잘 사용합니다. 물론 직렬화 프로세스에서 타입 안전성이 느슨하지만 대부분의 REST/SOAP 기반 웹 서비스에서 꽤 기대됩니다. 소비 애플리케이션에 유형 안전성이 정말로 필요한 경우 WCF (또는 이와 유사한 기술)를 사용하십시오.

나는 Json으로 작업을 반환하는 플래그를 만들뿐입니다. 몇 가지 사이트가 이런 방식으로 작동하는 것으로 나타났습니다. 이 작업을했다고 가정 해보십시오.

public ActionResult GetPeople() 
    { 
     IList<Person> result = svc.GetPeople(); 

     return View(result); 
    } 

..이 작업의 결과는 일반적으로 일부보기로 렌더링됩니다. 즉 좋아요,하지만 당신은 웹 서비스와 같은 액션을 사용하려는 경우, 당신은 단순히이 그것을 바꿀 수 :

..so
public ActionResult GetPeople(string ajax) 
    { 
     IList<Person> result = svc.GetPeople(); 

     if (Convert.ToBoolean(ajax)) 
      return Json(result); 
     else 
      return View(result); 
    } 

경우, 직렬화 된 JSON 마음을 대신 GET 요청을 호출 didnt는 당신이 소요되는 응용 프로그램 이 http://domain.com/controller/GetPeople (브라우저에서보기를 가져올 수 있음)처럼 http://domain.com/controller/GetPeople?ajax=true과 같은 아약스 플래그를 추가하면 Json을 반환 할 수 있습니다. 더 적절한 플래그는 'ajax'대신 'json'이 될 수 있습니다. 'ajax'는 일반적으로 사용되는데이 메소드는 ajax로 선택적으로 호출 될 수있는 하위 브라우저를 지원하기 위해 사용됩니다.

나는 이것을 내 mvc 응용 프로그램에 잠시 동안 추가하려고 생각했지만이 플래그로 모든 동작을 수정하고 if 문을 추가하는 아이디어는 마음에 들지 않습니다. 내 생각은이 기능을 원하는 작업을 꾸미기 위해 사용자 지정 특성을 만들고 특성에 동적으로 여분의 플래그를 추가하고 원래 지정했던 것보다 Json으로 조건부로 모델 데이터를 반환하는 것입니다. 그것을 줘.