在阅读了一些内容并观看了一些关于可能(微软)技术的介绍性视频后,我发现我似乎有(至少)三种选择:
1)Windows Communication Foundation(WCF)
2)ASP.NET Web服务
3)ADO.NET数据服务
因为我不熟悉这三种技术中的任何一种,我必须深入学习(希望只有)其中一种技术 – 问题是:哪一种?
或者更确切地说:哪一个用于以下任务?
需要将数据从客户端上载到服务器/数据库,并且还需要下载一些其他数据.在客户端,这不会由在浏览器中工作的用户以交互方式发生,而是作为客户端上的自动进程定期运行(例如每2小时).
a)在Web服务器端,将有:
> sql Server数据库
> .NET Framework 3.5 SP1
>表示数据库结构并使用ADO.NET Entity Framework建模的类库
>(一个ASP.NET Web应用程序,它将在浏览器中显示数据库中的数据:我把它放在括号中,因为这个Web应用程序并不重要,因为提到的数据上传/下载不会通过浏览器触发GUI).
b)客户方不太清楚,必须更灵活.在这里,我必须区分两个要求:
i)优先级一(根据我可用于开发的时间):
>客户端在我的控制之下,这意味着:我在客户端上有任何Windows操作系统,我可以安装.NET Framework,我可以决定开发Windows服务,控制台应用程序,Windows窗体应用程序等等.我对上面提到的类库有所了解和访问.
ii)优先级较低,但必须是未来选项:
>我需要公开任何类型的接口描述,允许其他开发人员构建自己的应用程序来上传/下载数据.
>其他人将开发的客户可以使用任何类型的操作系统(Windows,UNIX,MacOS等)进行操作.他们也应尽可能自由地选择自己喜欢的编程语言.
由于最后一点迫使开发人员在客户端使用.NET Framework不是一种选择.客户端的通信必须是可从各种平台和语言访问的任何“标准”技术.在我的小研究中,我正在阅读“SOAP”,“REST”或“AtomPub”等术语,这些似乎是一种标准协议或通信技术(不是微软的专有发明).但我不确定也不知道哪种技术是“最新的”,具有“最佳未来”,是最常见和众所周知的,是最强大的还是最容易使用的(从其他可能的角度来看)开发人员!问题是我必须支持哪些让大多数客户端开发人员满意.
最后一点:安全很重要!上传/下载数据必须限于专职人员.没有适当的凭证,就不可能使用或探索界面.
什么技术现在最好用? (1),(2)或(3)?你为什么推荐它?
非常感谢您的任何建议!
解决方法
所以这留下了选项1(直接WCF)和3(ADO.NET数据服务 – 最近重命名为WCF数据服务).
两者都使用WCF作为他们的基本技术 – 因此在这两种情况下都必须学习和了解WCF.
使用直接WCF(选项1),您可以选择更多选项 – 您可以自行托管,在IIS中托管服务,使用不同的协议和绑定等等.但随着选择变得复杂 – 你需要学习和了解所有这些 – 至少在某种程度上.您的客户需要能够与您交谈 – 几乎任何语言(当然,.NET,Java,Ruby,PHP – 您的名字)都可以用这种或那种方式谈论SOAP.
如果您最感兴趣的是将数据从数据库公开到外部客户端,我认为WCF数据服务确实是一个不错的选择.它基于REST,因此您可以使用浏览器访问WCF数据服务,看看会发生什么.它非常强大,甚至提供LINQ客户端支持 – 您可以制定LINQ查询,并将其转换为对数据服务的相应REST调用.
使用WCF数据服务,您的客户端只需要一个HTTP堆栈 – 甚至iPhone也有:-)但是使用.NET客户端,事情当然更好,更舒适,更高效.
我会先说一下WCF Data Service,然后看看它是否能满足你的需求 – 如果没有,那就深入了解WCF.另请参阅WCF Data Service at a glance的介绍.
更新:
Marc,do I understand you correctly
that WCF on the server fulfils this
requirement? And ADO.NET (WCF) Data
services too?
绝对.服务器端的WCF(普通或数据服务)不以任何方式,形状或形式指示客户端.如果您真的喜欢它,您可以将iPhone连接到WCF数据服务:-) WCF从一开始就设计为非常可互操作 – 实际上,它是实现最多WS- *行业的一个平台跨平台通信标准.