Answers:
了解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服务器以及对Windows SMTP服务器进行故障排除。您可能还希望将HMailServer视为与您的应用程序一起使用的替代方法。另外,请阅读有关垃圾邮件过滤的信息,以及如何正确创建电子邮件(正确的发自,发往多部分邮件等)。
SQL Server IP和端口绑定。与Windows Server没有直接关系,但是出现了很多。了解如何设置SQL Server以绑定到特定的IP和端口。了解动态和静态端口之间的区别,如何设置和连接到非标准端口,如何使用实例名称和自定义端口构造连接字符串。
上面列表中的许多项目都在Server Admins(服务器管理员)的域中,但是如果您能够了解并解决这些问题,则可以使自己变得更有价值。
我建议您了解32位和64位以及您的应用程序(通过IIS或Winforms通过Web)可以消耗多少内存。我还将专门针对所有接口,事件以及对可以利用Windows服务的处理管道的整体访问来研究IIS7。
如果您的应用要求进行身份验证,则Active Directory(AD)的一般知识绝对有用。请注意帐户和权限,因为Web应用程序和Winforms或常规应用程序都必须在活动目录帐户下运行。所有以IUSR_machinename运行的IIS进程,文件共享也受安全权限的约束。在开发过程中这似乎无关紧要,因为没有人会想到这个问题,但是Windows域受AD严格限制,其权限/ ACL影响域中的所有内容。只是要注意的事情。注意:广告政策也可能会影响应用程序。
我还建议您在.NET平台中使用EventLogging(针对错误和应用消息),因为我使用的某些应用在拥有Windows EventLog的同时就必须创建自己的(错误)日志记录系统提供给我们。创建日志系统并不难,但是当EventLog可用时,为什么还要做更多的工作呢?
同样从应用程序的角度来看,我将研究Microsoft消息队列(MSMQ)。如果您的应用程序/站点中有大量数据在数据库和Web服务器之间混排,或者需要将数据发送到其他系统/应用程序,则排队是一种有用的技术,MSMQ是免费的,并且内置在Windows Server中。MSMQ是基于事务的消息传递系统,对于具有动态数据需求的应用程序非常有用。抱歉,含糊不清,但是进入MSMQ会花费很多精力,而且可能会过大。我建议初学者在MSDN或Wikipedia上阅读有关MSMQ及其一般概念的信息。
希望这可以帮助!
编辑:我想问一个关于在Stackoverflow上的不同组中添加用户(我通过.NET假定)的特定问题,但是我认为关于AD和Windows的一般问题适合于Serverfault。
这很大程度上取决于您的角色。
如果您具有架构师/首席开发人员的角色,那么您需要了解系统在生产中的工作方式。
如果要进行任何部署,还需要了解要安装的平台。
如果您是一名仅接受“编写一个执行x的函数”之类的任务的开发人员,则无需了解太多。
这里有趣的是,一个了解操作方面的开发人员的市场价值要比仅仅是一个开发人员的市场价值高得多。