首页 / 知识
关于wcf:.NET 3.5中DateTime序列化的最佳做法
2023-04-15 11:57:00

Best practices for DateTime serialization in .NET 3.5大约4年前,我按照这篇MSDN文章介绍了DateTime使用的最佳实践,该最佳实践是在.Net 1.1和ASMX Web服务(以SQL 2000服务器为后端)上构建.Net客户端的。 我仍然记得DateTime遇到的序列化问题,以及它在不同时区中对服务器所做的测试工作。 我的问题是:是否为WCF和SQL Server 2008等某些新技术提供了类似的最佳实践文档,尤其是添加了新的datetime类型来存储时区感知信息。 这是环境: 有关在每一层中使用的数据类型的任何好的建议/最佳实践? 我认为最好的方法是始终将对象作为UTC传递,并在客户端上转换为本地时间。这样,所有客户都有一个共同的参考点。 若要转换为UTC,请在DateTime对象上调用ToUniversalTime。然后,在客户端上,调用ToLocalTime以获取其当前时区。 一个大问题是WCF序列化不支持xs:Date。这是一个很大的问题,好像您只需要一个日期,就不应该让您担心时区。以下连接问题讨论了一些问题:http://connect.microsoft.com/wcf/feedback/ViewFeedback.aspx?FeedbackID=349215 如果要明确表示一个时间点,即不仅仅是日期部分,则如果客户端和服务器上都装有.NET 3.5,则可以使用DateTimeOffset类。或为了实现互操作性,请始终将日期/时间值作为UTC传递。 UTC / GMT在分布式环境中将保持一致。 重要的一件事是在使用数据库中的值填充DateTime属性后,指定datetimeKind。
参见MSDN 只要您的Web服务层和客户端层使用.NET DateTime类型,它就应该正确地序列化和反序列化为带有时区信息的SOAP标准本地日期/时间,例如: 2008-09-15T13:14:36.9502109-05:00 如果绝对可以肯定地知道时区本身(即上面的时间可能是东部标准时间或中部夏令时),则需要创建自己的数据类型以将这些片段公开为:
那么您的响应将如下所示:
我很幸运,仅保留DateTime数据类型并将其始终存储为GMT。在每一层中,我都会将GMT值调整为该层的本地值。 |
最新内容
相关内容
linux重新服务命令?
linux重新服务命令?,服务,系统,网络,标准,工作,设备,命令,名称,信息,网络服务,linux重启命令Linux的五个重启命令为:shutdown、poweroff、initlinux服务器基本命令?
linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,linux如何查看ip地址命令(linux如何查看ip地址)1、目录方法1:使用Ulinux服务器下载命令?
linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,linux下lftp连接ftp服务器上传下载命令连接ftp服务器 格式:ftp [holinux命令怎么停服务?
linux命令怎么停服务?,服务,系统,状态,代码,跨行,软件,情况,第一,名称,命令,linux下nginx停止命令首先,连接相应linux主机,进入到linux命令行状linux服务端退出命令?
linux服务端退出命令?,档案,命令,环境,异常,标准,网络,模式,终端,编辑,文件,linux的telnet退出命令1、Telnet测试一般使用的是TelnetIP(主机)linux中启动服务命令?
linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,linux如何启动服务1、具体步骤如下:首先,我们需要修改mysql的配置文linux命令测试客户端?
linux命令测试客户端?,地址,系统,网络,工具,工作,分析,环境,命令,下行,资料,linux测试网速的工具1、speedtest-cli是一个用Python编写的轻量级linux服务器常用命令?
linux服务器常用命令?,工作,系统,地址,信息,命令,目录,管理,标准,设备,功能,重启服务器的linux命令1、首先我首要把linux开机, 命令 rebot 这个linux筛选服务命令?
linux筛选服务命令?,服务,系统,状态,软件,环境,主体,技术,号码,发行,名称,查看linux开启了哪些服务查看客户机IP,看到已经是DHCP 服务器里面设linux服务器保存命令?
linux服务器保存命令?,时间,状态,档案,电脑,命令,信息,位置,编辑,文件,模式,Linux的vi编辑后如何保存?1、按ESC键回到命令模式,输入:w保存即可,或linux服务器扫盘命令?
linux服务器扫盘命令?,地址,工作,命令,目录,数据,单位,名称,系统,管理,信息,Linux常用命令有哪些1、linux常用命令如下:查看内核版本:uname-a。linux命令切换服务器?
linux命令切换服务器?,地址,名称,系统,环境,实时,命令,服务器,脚本,路径,版本,如何远程管理Linux服务器?1、主控端Windows在控制窗口内点击“