开发人员需要了解有关 Windows Server 的哪些知识?

开发人员需要了解有关 Windows Server 的哪些知识?

我是一名经过认证的 .NET 开发人员,在工作中经常进行 Sharepoint 开发。添加/编辑/删除用户需要使用 AD,当然,Sharepoint 中与站点结构相关的任何事情都与 IIS 有关。

作为开发人员,我需要了解有关 IIS/AD 和 Windows Server 整体的哪些信息?我想知道的一件事是如何让用户包含在多个组中?

谢谢

答案1

了解 Active Directory:任何用户都可以加入 AD 中的多个组,问题是如何让他们加入。通过编程实现这一点是可行的,而且很容易,但问题是您的安全策略是否允许这种事情?谁控制着您要部署应用程序的 AD,以及控制程度如何,与将人员添加到组的实际技术细节相比,与此类事情的关系更大。这些都是在进入推广阶段之前开始问的好问题。

同样的道理对于 IIS 来说,政策问题几乎总是比技术问题更大。不慌不忙地问清楚自己能做什么和不能做什么是一个很好的开始。使用虚拟目录和虚拟站点也是值得思考的一件好事。

只要你问,这里还有一些我希望更多开发人员有兴趣了解的事情。

服务器并不是永久不变的实体,硬件被替换,ISP 发生变化,驱动器被填满......不要对绝对文件路径、IP 地址和服务器名称等内容进行硬编码。

另一个大问题是知道你的应用程序实际需要运行什么。在服务器上,没有人真正想安装所有的花哨功能,因为开发人员无法告诉您他们调用的是什么。我记忆中的一个应用程序是,我最终不得不在 Web 服务器上安装 MSSQL Server 2005,因为没有它代码就无法运行。最终(经过数月和数小时的工作)我们弄清楚了发生了什么以及如何避免这种情况。如果这个应用程序不是那么重要,而且背后有如此大的影响力,我会把它推回去,说“绝对不行,因为这是一个巨大的安全风险”

这些事情会在后端造成无尽的故障排除麻烦。“它在我的机器上工作正常”只是有点帮助,因为你的机器上可能安装的工具比我们想要安装在服务器上的工具多得多。此外,测试环境应尽可能接近生产环境,以消除这些问题。

答案2

根据我的经验,我希望开发人员更多地了解以下领域:

互联网信息服务。对于 ASP.Net 应用程序尤其重要。需要研究的几个关键领域:

  1. IP 绑定和主机标头。创建新的 IIS 站点时,请确保知道如何正确配置 IP 和主机标头。

  2. 应用程序池设置。这里有许多设置会影响您的应用程序,包括超时值和回收。请务必了解这些设置如何影响您的会话。

  3. 启用方法。如果您正在执行 REST API,请了解如何启用其他方法(例如 PUT)。

  4. SSL 证书。了解如何安装 SSL 证书以及获取证书的流程。

  5. 性能调整。确保您知道如何启用 GZIP、禁用电子标签、配置内容过期时间以及设置缓存标头。使用 Fiddler 查看 IIS 如何响应请求。只需进行一些简单的更改,您就可以显著提高应用程序的性能。

WCAT。与 IIS 相关,但了解如何设置西卡特并为您的应用程序设置负载测试。这样您就可以获得有关应用程序响应时间和限制的硬数据。

权限。了解应用程序中哪些文件夹需要哪些权限。例如,如果您的应用程序写入某个文件夹,您是否需要授予 NETWORK_SERVICE 对该文件夹的访问权限?

Windows 防火墙。看起来很基础,但特别是对于 Windows Server 2008,了解如何向防火墙添加条目、设置端口、设置范围等。

SMTP 服务器。了解如何设置、配置和排除 Windows SMTP 服务器故障。您可能还想将 HMailServer 作为应用程序的替代方案。此外,阅读有关垃圾邮件过滤以及如何正确创建电子邮件(正确的发件人、收件人、多部分消息等)的信息。

SQL Server IP 和端口绑定。与 Windows Server 不直接相关,但经常出现。了解如何设置 SQL Server 以绑定到特定 IP 和端口。了解动态端口和静态端口之间的区别、如何设置和连接非标准端口、如何使用实例名称和自定义端口构造连接字符串。

上面列表中的许多项目都属于服务器管理员的领域,但如果您能够理解和排除这些领域的故障,您就可以使自己变得更有价值。

答案3

嗯,这实际上可能是 stackoverflow.com 的一个问题(从其他程序员那里获得答案)。如果你想知道系统管理员可能希望程序员知道什么,我会说:

  • 性能监控——代码对硬件越简单越好

  • 理解(并记录)你的代码如何与不同版本的 IIS 和 Sharepoint 交互

至于您的群组成员问题,我会使用 GUI 或 DSADD - 但您可能在那里寻找代码?如果您确实在寻找编码器输入,我们可以将这个问题迁移到姊妹网站。

答案4

这很大程度上取决于你的角色是什么。

如果您担任架构师/首席开发人员的角色,那么您需要了解系统在生产中如何运作。

如果您正在进行任何部署,您还需要了解要安装的平台。

如果您是一名开发人员,刚刚接到诸如“编写一个执行 x 的函数”之类的任务,那么您不需要了解太多。

有趣的是,了解运营方面的开发人员的市场价值比仅仅是开发人员的开发人员的市场价值要高得多。

相关内容