我是一名经过认证的 .NET 开发人员,我在工作中进行了大量的 Sharepoint 开发。添加/编辑/删除用户需要使用 AD,当然,与 Sharepoint 中的站点结构有关的任何事情都与 IIS 有关。
作为开发人员,我需要了解有关 IIS/AD 和 Windows Server 整体的哪些信息?我想知道的一件事是如何使用户包含在多个组中?
谢谢
我是一名经过认证的 .NET 开发人员,我在工作中进行了大量的 Sharepoint 开发。添加/编辑/删除用户需要使用 AD,当然,与 Sharepoint 中的站点结构有关的任何事情都与 IIS 有关。
作为开发人员,我需要了解有关 IIS/AD 和 Windows Server 整体的哪些信息?我想知道的一件事是如何使用户包含在多个组中?
谢谢
了解 Active Directory:任何用户都可以在 AD 中的多个组中,问题是如何让他们在那里。以编程方式执行此操作是可能且足够简单的,但问题是您的安全策略是否允许这种事情?谁控制你的应用程序将在哪里部署的 AD,以及与这类事情的紧密程度比将人员添加到组的实际技术细节更多。这些都是在您进入推出阶段之前开始提出的好问题。
IIS也是如此。政策问题几乎总是大于技术问题。询问你能做什么和不能做什么而不引起大惊小怪是一个很好的开始。使用虚拟目录和虚拟站点是另一件让您大开眼界的好事情。
只要你问,这里还有一些我希望更多开发人员有兴趣了解的东西。
服务器不是永久不变的实体,硬件被替换,ISP 发生变化,驱动器被填充。不要对绝对文件路径、IP 地址和服务器名称等内容进行硬编码。
另一个重要的问题是知道您的应用程序实际需要运行什么。在服务器上,没有人真的愿意安装所有的花里胡哨,因为开发人员无法告诉您他们在调用什么。一个存在于我内存中的应用程序是一个我最终不得不在 Web 服务器上安装 MSSQL Server 2005 的应用程序,因为没有它代码就无法运行。最终(几个月和几个小时后的工作)我们弄清楚了发生了什么以及如何避免这种情况。如果它不是一个如此重要的应用程序背后有如此大的影响力,我会把它推回去并说“绝对不是,因为这是一个巨大的安全风险”
这类事情会导致后端无休止的故障排除问题。“它适用于我的机器”之所以如此有用,是因为您的机器上的工具可能比我们希望在服务器上安装的工具多得多。此外,测试环境应尽可能接近生产环境,以消除此类问题。
根据我的经验,这些是我希望开发人员更多了解的领域:
IIS。对于 ASP.Net 应用程序尤其重要。需要研究的几个关键领域:
IP 绑定和主机标头。创建新的 IIS 站点时,请确保您知道如何正确配置 IP 和主机标头。
应用程序池设置。这里有许多设置会影响您的应用程序,包括超时值和回收。请务必了解这些可能会如何影响您的会话。
启用方法。如果您正在使用 REST API,请了解如何启用其他方法,例如 PUT。
SSL 证书。了解如何安装 SSL 证书以及获取证书的过程。
性能调整。确保您知道如何启用 GZIP、禁用电子标签、配置内容过期和设置缓存标头。使用 Fiddler 查看 IIS 如何响应请求。您可以通过一些简单的更改来显着提高应用程序的性能。
WCAT。与 IIS 相关,但了解如何设置WCAT并为您的应用程序设置负载测试。通过这种方式,您可以获得有关应用程序响应时间和限制的硬数据。
权限。了解您的应用程序中的哪些文件夹需要哪些权限。例如,如果您的应用写入文件夹,您是否需要授予 NETWORK_SERVICE 对该文件夹的访问权限?
Windows 防火墙。看起来很基础,但特别是对于 Windows Server 2008,了解如何向防火墙添加条目、设置端口、设置范围等。
SMTP 服务器。了解如何设置、配置 Windows SMTP 服务器并对其进行故障排除。您可能还希望将 HMailServer 视为与您的应用程序一起使用的替代方案。此外,阅读垃圾邮件过滤以及如何正确创建电子邮件(正确的发件人、收件人、多部分消息等)。
SQL Server IP 和端口绑定。与 Windows Server 没有直接关系,但出现了很多。了解如何设置 SQL Server 以绑定到特定 IP 和端口。了解动态和静态端口的区别,如何设置和连接到非标准端口,如何使用实例名称和自定义端口构造连接字符串。
上面列表中的许多项目都属于服务器管理员的领域,但如果您能够理解并解决这些领域的问题,您可以让自己变得更有价值。
嗯,这实际上可能是一个 stackoverflow.com 问题(从其他程序员那里得到答案)。如果您想知道系统管理员可能希望程序员知道什么,我会说:
性能监控——你的代码在硬件上越容易越好
了解(并记录)您的代码如何与不同版本的 IIS 和 Sharepoint 交互
至于您的组成员资格问题,我会使用 GUI 或 DSADD - 但您可能正在那里寻找代码?如果您真的在寻找编码器输入,我们可以将此问题迁移到姊妹站点。
我建议了解 32 位与 64 位以及您的应用程序(通过 IIS 或 winforms 的 Web)可以消耗多少内存。我还将专门研究 IIS7 的所有接口、事件和对可以利用 Windows 服务的处理管道的整体访问。
如果您的应用程序需要它进行身份验证,则 Active Directory (AD) 一般知识绝对有用。请注意帐户和权限,因为 Web 应用程序和 winform 或一般应用程序都必须在活动目录帐户下运行。IIS 进程都在IUSR_machinename下运行,并且文件共享也受安全权限的约束。在开发过程中这似乎无关紧要,因为没有人会想到这个问题,但是 Windows 域被 AD 紧密绑定,并且它们的权限/ACL 会影响域内的所有内容。只是需要注意的事情。注意:AD 策略也会影响应用程序。
我还建议在 .NET 平台中使用 EventLogging(用于错误和应用程序消息),因为我处理过的一些应用程序在我们拥有 Windows EventLog 的同时必须创建自己的(错误)日志记录系统可供我们使用。创建日志系统并不难,但是当 EventLog 已经可用时,为什么还要做更多的工作呢?
同样从应用程序的角度来看,我会研究 Microsoft 消息队列 (MSMQ)。如果您的应用程序/站点有大量数据在数据库和 Web 服务器之间进行混洗,或者需要将数据发送到其他系统/应用程序,那么排队是一种有用的技术,MSMQ 是免费的并且内置在 Windows Server 中。MSMQ 是一个基于事务的消息传递系统,对于具有动态数据需求的应用程序非常有用。很抱歉含糊其辞,但进入 MSMQ 需要付出很多努力,而且可能有点矫枉过正。我建议初学者在MSDN或Wikipedia上阅读有关 MSMQ 及其一般概念的信息。
希望这可以帮助!
编辑:我会询问有关将用户(我假设是通过 .NET)添加到 Stackoverflow 上的不同组的具体问题,但我认为关于 AD 和 Windows 的一般问题适用于 Serverfault。
这很大程度上取决于你的角色是什么。
如果您有架构师/首席开发人员角色,那么您需要知道系统将如何在生产中工作。
如果您正在进行任何部署,您还需要了解要安装的平台。
如果您是一名开发人员,只是完成诸如“编写一个执行 x 的函数”之类的任务,那么您不需要了解太多。
这里有趣的是,了解运营方面的开发人员的市场价值远高于仅是开发人员的人。
永远不要打开 Windows 系统资源管理器。没有人知道它会一直吃掉 9-11% 的 CPU。