Jac*_*cob 5 .net wcf refactoring soap
我有一个复杂的RIA客户端,它与WCF SOAP Web服务通信,第二个是操作词.这导致了一个可怕的神类,到目前为止包含131 [OperationContract]方法,甚至还有更多的私有方法.
就个人而言,我对此没有任何问题; 我使用Visual Studio的搜索和导航功能很容易找到我在课堂上的方式.然而,其他开发商正因此受苦.他们是慢慢滚动寻找事物的种类(看起来很烦人).我把这个班级区分成几个部分,但我是唯一一个似乎享受这个好处的人(他们是看似更常见的#region-hating camp).
所以,为了对其他程序员很好,也许享受一些我不知道的好处,我想重构怪物.这是我看到的选项:
我不喜欢这个是它会打破我的客户端代码.我必须重写它以使用新的代理类.另外,我还需要维护更多的WCF配置(哎呀!).此外,可能存在共享私有方法应属于何处的监护权争夺战.
这个想法似乎对我很有吸引力.我用这种方法做的是让每个源文件(不是太多)代表Web服务的功能划分.例如:
MyService.svc.cs
MyService.AccountManagement.svc.cs
MyService.Preferences.svc.cs
MyService.MediaManagement.svc.cs
Run Code Online (Sandbox Code Playgroud)
我担心这种方法,因为在一家前公司,当我提出这种可能性时,一位开发人员说这是一个坏主意,因为一些模糊的"部分类有问题"的原因.我从来没有比这更好的解释,但我接受了他的话.
我认为复杂的Web服务创建诸如此类的神类并不罕见,因此必须有一些我不知道的良好实践方法.您使用哪些技术使您的Web服务类更容易在眼睛上?
谢谢各位的意见.我希望我能接受不止一个答案.
我已经阅读了你的答案,与开发团队讨论过,现在,我们只是将服务重组为部分类.我将对其他建议发表评论,以解释为什么我不采取这些方法,至少目前是这样.你们都给了我一些有价值的东西来考虑未来的发展.
如果您可以将服务重构为单独的部分类文件,每个文件都封装了一定数量的相关功能,您也可以将服务重构为封装此功能的单独类.您的服务将成为这些课程及其功能的简单外观.
有时候这是不可行的,并且会使事情进一步复杂化,但是你知道你的代码库是你在这里打电话的人.在这种情况下(在与分析师开发人员进行良好的头脑风暴会议之后),部分类文件仍然是更好的选择.
有一件事是肯定的.您的服务必须重构.(编辑:代码不仅仅用于执行,也用于维护.如果很难找到解决办法,那肯定是无法维护的.)
关于那个部分阶级问题.我不认为这是一个有价值的评论,直到它被一些真实的事实支持,为什么它们是一个问题.
关于重构
将您的服务视为Web应用程序用户界面.就像Web应用程序使用BLL类一样,它们的封装功能与整个解决方案的单个问题/方面有关,因此应该是您的Web服务.它应该是一个也使用BLL类及其原子功能的接口.它不是可视化界面,而是API.
归档时间: |
|
查看次数: |
715 次 |
最近记录: |