Web 应用程序中的方法应该是公共的还是内部的?
Posted
技术标签:
【中文标题】Web 应用程序中的方法应该是公共的还是内部的?【英文标题】:Should methods in a web app be public or internal? 【发布时间】:2017-05-18 06:09:39 【问题描述】:在 Web 应用程序的范围内,将方法的可访问性声明为 public
与 internal
的含义是什么?
Web 应用程序通常包含仅在应用程序本身内使用的方法。例如,电子商务网站可能包含检索用户订单历史记录的方法。大致如下:
public List<Orders> RetrieveOrders()
//code goes here
如果此方法包含在类库中,public
和internal
访问修饰符的意义相当简单;公共方法可以在库本身之外访问,而内部方法则不能。
在 Web 应用程序方面有什么实际区别吗?
编辑: 我的问题被建议与What is the difference between Public, Private, Protected, and Nothing? 重复。我不是要求解释访问修饰符。我在问网站中的方法上的访问修饰符是否有任何意义。
【问题讨论】:
What is the difference between Public, Private, Protected, and Nothing?的可能重复 【参考方案1】:一般而言,public
应仅限于外部可见的方法 - 这包括公共 API 和由于技术限制而必须公开的方法(即 ASP.Net 页面的类)。
对于 Web 应用程序,通常没有“公共 API”,因为这些库通常不会被外部用户使用。
因此,internal
和 public
在 Web 应用程序开发方面几乎没有实际区别。仅使用 public
会带来一些小便利,因为您不再需要 InternalsVisibleTo
属性来进行单元测试。
更多讨论:public vs. internal methods on an internal class、internal vs public in c#
旁注:ASP.Net MVC 网站是一个类库 - 因此所有与类库相关的访问修饰符的讨论都适用于 ASP.Net MVC/WebAPI 网站。
【讨论】:
您有更多关于 ASP.NET MVC 作为类库而不是“常规”.NET Web 应用程序的信息吗?这是我以前从未遇到过的有趣差异。 (也可以使用 Google 搜索短语)。 @ShaiCohen 它始终是 .Net 程序集(在 VS 中有时称为“类库”)——我只是想强调一个事实,您不需要对 Web 项目进行特殊考虑。 .Net 代码在执行前总是被编译成 .Net 程序集(DLL 或 EXE)。有时该程序集不是直接可见的(即,如果站点中只有 ASPX 文件在执行时编译为程序集),但对于 ASP.Net MVC,您总是有需要在站点之前编译为程序集的控制器/路由可以运行。以上是关于Web 应用程序中的方法应该是公共的还是内部的?的主要内容,如果未能解决你的问题,请参考以下文章