none
What service architecture Do you suggest? RRS feed

  • Question

  • I’m looking for a stable architecture for Commercial Projects like Accounting based on Network,

    Database: SQL Server

    Platform: .Net and C# Programming language

    Technology: Windows Form

    So it's Contain at about 200 tables and Several hundred thousand Records, this software will be produced in two versions :

    Intra organizational version (Desktop):

    It’s possible that one of the Branches has been located more far from other, needs to use that and it has valid IP. In Final version for big companies, there are concurrent insert for several Warehousing and some users (10 to 15) possibility.

    Web based version:

    It is for extra organizational reports which these challenges are more in desktop version. There is no doubt that I need customize models in my architecture, but I've selected Entity Framework as mediator Model.

    So my Question: Do I use Service Based architecture for Desktop version? Does it need? Or I don't need it due to all database information are read and are moved to down and SQL is base on network-based services?

    If I need service oriented (I selected WCF for service oriented),The codes like authenticate and transactions must be place up? What about Selects, Deletes and Updates?

    Well, now the problem is, in service oriented architecture; first we have to create a Data Contract Class for Each class and we have to cast classes together. And with consider transaction methods, we have at least 2000 methods and their management will be difficult.

    What’s your suggest? What about data services like Odata? Does it support existing needs? Does it suitable for Intra organizational based on network from speed and stability point of view?

    I have no problem with service and data services and know all of them, but my problem is choice the architecture for project. Connect to database using MVC Model and Controller classes OR select the service.

    If WCF service, well handling the code will be difficult (due to have one class). Now we have Data Service, but I’m not sure about speed and stability in desktop version. Can anyone help me and share his experience to me?

    Excuse me for my bad English.

    Thanks in advance.


    Sunday, April 7, 2013 8:32 PM

All replies

  • Lots of questions, I'll concentrate on the 'desktop' version first. How old can the data be? What happens if the services are unavailable?


    http://pauliom.wordpress.com

    Saturday, April 13, 2013 11:34 AM
  • OK.. this is a good question.. here is what I would recommend to you go with -

    If your strategy is go for both desktop and web based application servcies then write a middle tier hosted in WCF services. This layer will host all business logic / entity framework and will talk to database layer. This service will be used by both you desktop and web based application, the difference will lie in how these cleint talk to your service.

    The web based app can use the http protocol (httpBinding) so that other organization can call methods on your servcies. (you achived portability here)

    The desktop version can use the NetTCP protocol (nettcp binding) so that you intranet app can be faster because of compact binding being used (You achived performance here)

    So I am suggesting you create a single service, host it on your server as wCF service , create TWO endpoint one for web and onefor desktop


    Pravin Chandankhede

    Sunday, April 14, 2013 6:44 AM
  • I think part of the answer depends on what your "web based version" will be doing.

    I'm not clear if the answer is just reports.

    If the answer is just reports and using the data warehouse then there is presumably little to no overlap between the desktop and web users.

    So any web services wouldn't really be shared and no entity framework for reporting.

    Is this really only 10 to 15 concurrent users?  Total?

    That doesn't seem very many for  a "big" system.

    And why winforms?

    XAML would seem a lot more appropriate for a new application. 

    To pull an example out the air.

    Has Silverlight been considered?

    Not WPF?

    Silverlight makes developers use asynchronous service calls so a future port to Win 8 ( or later ) would be a lot more practical.

    Monday, April 15, 2013 1:13 PM
  • thank's for answer but i've a problem with WCF Service ! in wcf you must create data contract for each model class and you must create one service for each work ! for example if you want programming code for 200 tables & 4 module,you must define 200 Data Contract & 400 method for convert model to data contract & revers ! and you write all code just in one Service class that your line class is about more than 1000 lines code !! so you don't handle this class ! do you have a solution for this problem ? can i have more one class in the service ? or can i have different type of service that support my model similar odata(my problem with odata is data service limited to support linq syntax and performance in desktop platform) ? 
    • Edited by Sam Saman Sunday, May 12, 2013 6:48 AM
    Sunday, May 12, 2013 5:32 AM
  • I think part of the answer depends on what your "web based version" will be doing.

    I'm not clear if the answer is just reports.

    If the answer is just reports and using the data warehouse then there is presumably little to no overlap between the desktop and web users.

    So any web services wouldn't really be shared and no entity framework for reporting.

    Is this really only 10 to 15 concurrent users?  Total?

    That doesn't seem very many for  a "big" system.

    And why winforms?

    XAML would seem a lot more appropriate for a new application. 

    To pull an example out the air.

    Has Silverlight been considered?

    Not WPF?

    Silverlight makes developers use asynchronous service calls so a future port to Win 8 ( or later ) would be a lot more practical.

    This discussion isn't about the win-form or wpf ! and isn't about the between web or desktop ! he asked about the Service ! what service can support shared big data ! in fact,he asked, whether we need to service for this project with this property ? whether correct ,we connect to directly with entity frame work to data base for this project ? whether correct,in client side , we used code layer ! whether has a got problem about the performance and other things ? 
    Monday, May 13, 2013 5:50 AM
  • IMO it is important to understand the requirements. If the project is being driven from the client channels you need, then that can (and should) influence your server strategy.

    http://pauliom.wordpress.com

    Saturday, May 18, 2013 2:22 PM