Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

What language/technology ..?

Options
  • 22-04-2012 4:34pm
    #1
    Registered Users Posts: 1,645 ✭✭✭


    Hi everyone, I'v got a bit of a project I'm going to be attempting during the summer.It's quite a bit more complex than anything I have attempted so far, hopefully it will be a good learning experience but rather than start off on the wrong foot I was thinking that maybe I could pick the brains of some of the more experienced developers here.

    What I'm trying to figure out is what language/technology would be best to use for my scenario, and also maybe a little bit about the design so I don't have a lot of unmanageable useless code at the end.

    A good way of describing what I'm trying to do would be to describe a banking scenario, lets say I have a database collecting data on users transactions and storing records. What I would like to do is set up a system to monitor these records and if a certain value is met within these records I would like the system to report the data to the administrators.

    I would also like to have a front end that admin could review, analyze and generate reports from he data. If possible I would also like to have some sort of web front end that users could access to view their own records/data.

    What I was wondering is what technology would be best to use if I wanted to do this. Also in reality how complex a system is this.? It seems to me like something that would regularly be done, how manageable is it to implement.?

    Also if I was developing this it would not be on a huge scale, but what way should I be approaching this in regard to design. Would I be trying to develop it in modules e.g database interface with separate front end modules.

    One more thing, (as was mentioned in the Java thread) Spring Framework and the concept of decoupling etc. This is pretty new to me but I think I'm getting my head around the concept. What scale of project should you be using these frameworks.? Would it make sense to utilize a framework like this on a project like this.?

    As you can see, I'm a bit out of my depth here. I think I could code this ok but maybe designing this might be tricky part and where my inexperience would be very evident. Any input or advice would be appreciated.


Comments

  • Registered Users Posts: 2,781 ✭✭✭amen


    For the analysis you would prob need a database (MS SQL or Oracle) and the relevant Business Intelligence moduel (BI). Loads of them out their.

    If you are doing BI you may need a hefty machine.

    Now you could write the project in any modern language but unless you are looking at a small data set I wouldn't recommend it.


  • Registered Users Posts: 11,979 ✭✭✭✭Giblet


    There are tons of choices. I'd say either Java or C# would be your best bets. Something like Spring would be beneficial for a project like this. Don't think of the size of your project, but what you are accomplishing with it. It's one of the tools of the trade. Decoupling when using a framework like this tends to mean using an Inversion of Control container and Dependency Injection. Both of these concepts are closely related and can be implemented without Spring. I would recommend looking at something like AutoFac for .NET which is very easy to use, and very powerful. There are also design patterns you should look at such as the Repository Pattern and Unit Of Work. Both help abstract and simplify business transactions in the system.


  • Registered Users Posts: 1,645 ✭✭✭k.p.h


    OK so I'v been doing some research based on what was suggested.

    amen, I think the level of analysis I would be looking to implement initially would be a little bit over kill for a BI module, it was interesting to read up on how's it's done all the same. The idea of a data warehouse/BI module was very interesting.

    I think the scale of the database worth mentioning, it would probably be a MySQL DB with a maximum of a couple of thousand records. I reckon that would be pretty small when thought of in an enterprise level context.? The bulk of a record would be static values e.g name/id/contact with one or two live regularly updated values. My side of the system would not be handling the input or updating of these values. I would be looking after the monitoring of the values to check if the fall within certain ranges, and also the UI for admin and users to review the data.

    Giblet, between Java & C# which lends itself to having a web based UI and a regular application UI best.? Really what I'm asking is which is the most straight forward to design the application level with. Then would one be better at handling the logic side of things .?

    Monitoring the values within a DB, is it just a case of having a script that that runs a query on the DB and then having the code to handle what to do it query returns values within range.?


  • Registered Users Posts: 11,979 ✭✭✭✭Giblet


    I think ASP MVC3 is probably your best bet for front end, and with the new WebAPI in MVC4, it's easy to attach any UI you want to it. So yeah, C# with MVC 3


  • Registered Users Posts: 1,645 ✭✭✭k.p.h


    Giblet wrote: »
    I think ASP MVC3 is probably your best bet for front end, and with the new WebAPI in MVC4, it's easy to attach any UI you want to it. So yeah, C# with MVC 3

    Thanks, I think that's the first of the "what" questions answered anyway, it looks like it has exactly what I'm looking for. I'm still pretty clueless but maybe what I'l do is download it and start doing some exploring see how it go's. Guess I'm saying goodbye to Linux for while anyway :(

    One more question, learning curve ..? How well should my bit of Java experience translate over .?


  • Advertisement
  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    k.p.h wrote: »
    Guess I'm saying goodbye to Linux for while anyway :(

    One more question, learning curve ..? How well should my bit of Java experience translate over .?

    I think considering you are on Linux* and have Java experience sticking with Java would be your best bet even if your Java experience would port over to C# quite well.

    * Ye Mono is always an option.


  • Registered Users Posts: 11,979 ✭✭✭✭Giblet


    Should translate reasonably well. You'd have as much of a learning course or more with Java + Spring.


  • Registered Users Posts: 1,645 ✭✭✭k.p.h


    I think considering you are on Linux* and have Java experience sticking with Java would be your best bet even if your Java experience would port over to C# quite well.

    * Ye Mono is always an option.

    Mono..! So many different ways to do the same thing. Is there ever going to be a stage where standards kick in and all the different technology's converge.? Instead of having options for different platforms you just have options for different techniques. It's pretty confusing when you are just getting into it.

    I actually think I'l go with the c# and all the associated bits. For one it's a learning experience so might be best to give something I haven't used much a go. It fit's the job well too.

    Thanks for the help.I'm sure I'l be back with some more questions at a later date.


  • Registered Users Posts: 2,022 ✭✭✭Colonel Panic


    It was supposed to be Java!

    Heads up about Mono. Last time I checked, it didn't support newer versions of ASP.Net MVC.

    My two cents on technology... ASP.Net MVC 3 (and 2) are the best web frameworks I've ever had to deal with and C# is ace!


  • Registered Users Posts: 2,494 ✭✭✭kayos


    k.p.h wrote: »
    Is there ever going to be a stage where standards kick in and all the different technology's converge.? Instead of having options for different platforms you just have options for different techniques. It's pretty confusing when you are just getting into it.

    hahahahaha chance would be a fine thing.

    With Java they tried to be exactly that. You could say the same about Mono they try to bring .NET to linux. But in the end something gets lost in translation.

    So the next best thing? Let get all the systems talking to each other easily and in an open manner. Tada SOAP and Web Services. Oh hold on depending on the vendor they support/don't support/completely disregard certain bits. From experience Axis 1.3 Web Services and .NET Clients can throw a few interesting spanners in the works. I stand to be corrected but a java async web service with a .NET client is not something a mere mortal wishes to undertake :).

    In the end choice is good. We have lots of choice on multiple levels OS, Java vs .NET vs C++ etc. In .NET you only really have one choice but many different ways of exercising that choice such as c#, vb, f#, managed c++ and all the other ports to the .NET Framework. In Java one syntax but you have many, many, many other choices to make. Want a framework for web services? Take your pick there's lots. And that's why I like .NET its pretty much all there, if your working on windows that is.

    But one question you did ask earlier which is easier to design for. They are the same. Design Patterns are portable and so should good design. You should be able to design the system and implement with any of the tech stacks. Of course sometimes there are restrictions depending on the environment. But a well designed system should be able to serve any form of front end with the minimal of overhead.


  • Advertisement
  • Registered Users Posts: 2,426 ✭✭✭ressem


    With regard to simple projects they're currently fairly consolidated around

    1) Client web interface.. jQuery + Json + HTML (with libraries like knockoutjs to make complex jQuery a bit easier.)

    2) Communicating to your server using RESTful web services (i.e. your server application presents its services and data requests in a form that can be manipulated in a way resembling http. GET, PUT, POST, DELETE actions on a URL ). So (with or without authentication) your project can present the data to a client that makes a request like http://www.myserver.ie/records/device5?username=john.
    And that client UI can be anything in any language that can talk JSON (pretty much all of them)
    The MVC and MVVM frameworks make this easier.

    3) Persistent data storage, rather than talking in odbc and jdbc etc, it uses [nHibernate or MS entity framework 4 for .NET] or [Hibernate / JPA 2 for Java]. to avoid huge amounts of repetitive database code.

    4) Dependency Injection, various object factories. You write your code to remove dependencies on concrete classes. A simple element of this is you writing interfaces to create a contract for classes to follow. Then write your classes to implement these interfaces. These can be wired up at runtime based on a configuration file / database / code.
    [nInject, Castle Windsor / Autofac / MS Unity ] or [AspectJ / Spring AOP]



    I'd disagree with Giblet on switching to c# if you are just getting started. Part of the hardship of learning is getting analysis paralysis from researching all the various possibilities (and Microsoft tech is worse than most for this).

    You might want to consider writing your first version of this application in the plain old java / c# that you'll find in any decent Deitel book (as new as possible. Unlike C, this stuff rots like compost).

    Then try the version from Apress Pro ASP.Net framework MVC 3 (c#) / Spring in action 3rd edition (java).

    I would suggest sticking with Java and then moving to Spring. Once you have a project under your belt with these, then experiment with others, knowing that you have a fallback.


Advertisement