2017-01-04 15 views
2

Webアプリケーションのスコープ内で、メソッドのアクセシビリティをpublicinternalと宣言することの意義は何ですか?Webアプリケーション内のメソッドを公開するのか内部的にするのか?

Webアプリケーションには、通常、アプリケーション内でのみ使用されるメソッドが含まれています。たとえば、eコマースWebサイトには、ユーザーの注文履歴を取得する方法が含まれている場合があります。線に沿って:このメソッドは、クラスライブラリに含まれている場合は

public List<Orders> RetrieveOrders() { 
    //code goes here 
} 

publicinternalアクセス修飾子の意義は非常に簡単です。パブリックメソッドはライブラリ自体の外部からアクセス可能であり、内部メソッドはアクセスできません。

ウェブアプリケーションに関しては実用的な違いはありますか?

編集: 私の質問は、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 classinternal vs public in c#

サイドノート:ASP.Net MVCのWebサイトは、クラスライブラリである - ので、クラスライブラリに関連するアクセス修飾子についてのすべての議論はASP.Net MVC/WebAPIのサイトに適用されます。

+0

"通常の" .NET Webアプリケーションとは対照的に、ASP.NET MVCがクラスライブラリになっていますか?それは私が前に出会ったことのない面白い違いです。 (使用するGoogle検索フレーズもうまくいく)。 –

+0

@ShaiCohenいつも.Netアセンブリ(VSで "クラスライブラリ"と呼ばれることもあります) - 私はWebプロジェクトに特別な配慮を必要としないという事実を強調したいと思います。 .NETコードは実行前に常に.Netアセンブリ(DLLまたはEXE)にコンパイルされます。そのアセンブリは直接表示されないことがあります(つまり、実行時にアセンブリにコンパイルされるサイトのASPXファイルの場合)が、ASP.Net MVCの場合は、コントローラ/ルーティングが常にサイトの前にアセンブリにコンパイルされる必要があります実行することができます。 –

関連する問題