我为一个落后于时代的大型州政府机构工作。我们的技能已经过时,预算冻结阻止了任何培训或雇用新员工/顾问(解雇人员也是不可能的)。设计业务对象,实现设计模式,建立代码库和服务,单元测试,源代码控制等都是你在这里找不到的东西。我们可能会得到Joel Test的0分。好消息是我们只能从这里上升!
我们开发直接通过ODBC连接访问Oracle数据库的桌面CRUD应用程序(使用C ++,C#或Java)。我们基本上有GUI充斥着SQL语句和拼凑代码。我们被告知要转向面向服务的n层体系结构,以防止直接访问数据库并消除用户计算机上的Oracle客户端需求。
WCF是我们应该走的路吗?我们已经完成了一些n层应用程序演练(例如this one)并且它们看起来很容易实现,但是我们只是不知道我们是否正在考虑使用正确的技术。利用.NET生成的类型化DataSet似乎是一个很好的权宜之计,可以节省我们一个月/几年的工作量(而不是从很多项目开始创建新的业务对象)。这种罐装方法是否可行第一步?
答案 0 :(得分:4)
我最近开始在某些Web应用程序中为我的数据层使用WCF服务,我必须说,它在开始时(第一周左右)令人沮丧,但是一旦代码部署完全值得。
您应首先尝试使用现有的小应用程序,或者可能是概念验证,以确保它符合您的需求。
根据您所处环境的描述,我相信您几乎可以立即意识到这一点。
答案 1 :(得分:2)
我工作的最后一家公司选择WCF几乎就是您在上面描述的确切原因。 WCF有很多很好的文档和书籍,它相对容易上手,WCF支持很多配置选项。
当您开始尝试弯曲WCF以不是专门设计的方式工作时,可能会有一些令人头疼的问题。这些通常是配置问题。但是像这样的网站或IDesign可以帮助您完成这些工作。
答案 2 :(得分:2)
首先,我肯定不(对不起重点)担心使用键入的DataSet
与创建自己的业务对象相比节省的时间。这通常不是您花费大部分开发时间的地方。我更喜欢自己使用业务对象。
在你的情况下,我想首先实现一个概念验证。一个解决您可能遇到的所有问题。这个概念验证应该实现一个完整的用例,从客户端开始,从数据库中检索数据并将其返回给客户端。在继续之前,您应对自己的实施情况充满信心。
然后关于技术的选择。对于客户端应用程序和服务层之间的通信,WCF绝对是一个很好的选择。我想您的客户和服务层都将成为C#应用程序?这使得事情变得更加容易,因为不同平台之间的互操作性(例如Java / C#)仍然不是微不足道的,尽管它在大多数情况下都可以工作。
答案 3 :(得分:2)
与.NET 3.5 SP1一起查看Entity Framework(因为已经有几个Oracle提供商已经可以使用它),它支持EF生成的类的内置WCF序列化。
这是一个很好的博客:http://blogs.msdn.com/dsimmons
答案 4 :(得分:2)
CSLA可能非常适合您的N-Tier桌面应用。它支持WCF,具有大型开发社区,并且有很好的文档记录。它非常面向对象。