2017-01-04 2 views
2

웹 응용 프로그램의 범위 내에서 메서드의 액세스 가능성을 publicinternal이라고 선언 할 때 의미는 무엇입니까?웹 앱의 메소드를 공개 또는 내부로해야합니까?

웹 응용 프로그램에는 일반적으로 응용 프로그램 내에서만 사용되는 메서드가 들어 있습니다. 예를 들어, 전자 상거래 웹 사이트에는 사용자의 주문 내역을 검색하는 메소드가 포함될 수 있습니다. 의 라인을 따라 :이 방법은 클래스 라이브러리에 포함 된 경우

publicinternal 액세스 한정자의 중요성은 매우 간단
public List<Orders> RetrieveOrders() { 
    //code goes here 
} 

; 공용 메서드는 라이브러리 자체 외부에서 액세스 할 수 있지만 내부 메서드는 그렇지 않습니다.

웹 응용 프로그램과 관련하여 실제적인 차이점이 있습니까?

편집 : 내 질문은 What is the difference between Public, Private, Protected, and Nothing?의 중복으로 제안되었습니다. 나는 접근 수정 자에 대한 설명을 요구하지 않는다. 구체적으로 웹 사이트 내의 메소드에 대한 액세스 수정 자에 대한 중요성이 있는지 묻습니다.

+0

가능한 [Public, Private, Protected 및 Nothing의 차이점은 무엇입니까?] 가능한 복제본 (http://stackoverflow.com/questions/614818/what-is-the-difference-between-public-private-protected -and-nothing) – Steve

답변

3

일반적으로 public은 외부에서 볼 수있는 방법으로 제한해야합니다. 여기에는 공개 API 및 기술적 제한 (예 : ASP.Net 페이지의 클래스)에 대한 회비가 필요합니다.

웹 응용 프로그램의 경우 일반적으로 외부 사용자가 일반적으로 사용하지 않을 것으로 예상되는 "공용 API"는 일반적으로 없습니다.

웹 응용 프로그램 개발을 위해 대부분 internalpublic 사이에는 실제적인 차이점이 없습니다. 유닛 테스트를 위해 더 이상 InternalsVisibleTo 속성을 가질 필요가 없으므로 public 만 사용하면 약간의 편리함이 있습니다.

더 많은 토론 : public vs. internal methods on an internal class, internal vs public in c#

사이드 참고 : ASP.Net MVC 웹 사이트는 클래스 라이브러리입니다 - 클래스 라이브러리와 관련된 액세스 한정자에 대해 너무 모든 토론은 ASP.Net MVC/WebAPI 사이트에 적용됩니다.

+0

"일반".NET 웹 앱과 반대로 ASP.NET MVC가 클래스 라이브러리가되었습니다. 그것은 제가 전에 만나지 않은 흥미로운 차이입니다. (사용할 Google 검색 구문도 괜찮을 것입니다.) –

+0

@ShaiCohen 항상 .Net 어셈블리 (VS에서는 "클래스 라이브러리"라고도 함)입니다. 웹 프로젝트를 특별히 고려할 필요가 없다는 사실을 강조하고 싶었습니다. 닷넷 코드는 항상 실행 전에 .Net 어셈블리 (DLL 또는 EXE)로 컴파일됩니다. 때로는 어셈블리가 직접적으로 볼 수 없습니다 (즉, 실행 시간에 어셈블리로 컴파일 된 사이트의 ASPX 파일 인 경우).하지만 ASP.Net MVC의 경우 항상 컨트롤러 이전에 어셈블리로 컴파일해야합니다. 실행할 수 있습니다. –