|
Praveen Raghuvanshi wrote: I am thinking of having each type of car as a Module
I would call it an adapter but yes that is it.
Praveen Raghuvanshi wrote: 2- How can we bring modularity
By using adapters.
Praveen Raghuvanshi wrote: 4- How does the interaction between different objects take place in a loosely
coupled manner?
Huh? Which "objects" do you think are interacting?
Praveen Raghuvanshi wrote: 5- I'll be using Microsft Ribbon. How can we have interaction between different
buttons in the Ribbon and modules or screens?
That isn't really a architecture question. And obviously if you want to look at that the first step would be to look at the API and figure out how it works and THEN attempt to answer your question.
Praveen Raghuvanshi wrote: Please let me know if any other information is required
Figuring out exactly how and what you are going to persistence is going to be a significant problem.
|
|
|
|
|
|
Questions:
1- What could be the best way to architect such an application?
Don't know particularly but whatever method you use do it thoughly
Consider your hardware being on a broadcast bus
2- How can we bring modularity?
First define what you mean by a module, h/w and s/w engineers have different ideas of what a module is I asked this on one project and the best answer I got was 'lego-like' - because it was on a project poster.
Once this was defined things started happening.
3- How can we bring extensiblity?
Again define it: work through a use case as to how you would extend the system. does a maintenance technician
take a new module and just plug it in? does it then need new software installed to accept new hardware or will the hardware deliver it or say where to get it etc
4- How does the interaction between different objects take place in a loosely coupled manner?
One possibility: Set up a message passing mechanism between objects and use a setup phase:
i.e. Tell Module A to do Task1 when it gets Message 1 and then send out Message 2 (but not till it's told to)
Tell Module B to do Task2 when it gets message 2 and then send out Message 3
and an execution phase:
Send Message 1 to Module A and wait for Message 2 from Module 2 to show completion.
5- I'll be using Microsft Ribbon. How can we have interaction between different buttons in the Ribbon and modules or screens?
Don't know offhand
6- Any nice article/case study/link to understand the architecure.
Look at http://en.wikipedia.org/wiki/CAN_Kingdom[^] described in more detail http://www.kvaser.com/images/Papers/ck301p.pdf[^]. The principles here allowed me to take a non-functioning 'modular' system and make it modular, extendable and above all work.
|
|
|
|
|
Appreciate your inputs!
I'll check on them.
Praveen Raghuvanshi
Software Developer
|
|
|
|
|
Guys, I am a software developer and want to improve my design skills.
Anybody suggest me some good books on Software Design and Architecture?
Thanks
MSR
|
|
|
|
|
|
|
Right now I'm facing an issue I had faced much times, but now I decided go deep in it. (for our purpose, let's consider PHP with MySQL)
What's the most convenient method to get a collection of records from a database?
A) Query a collection of records and populate an array of objects through a loop, or
B) Execute a loop on an array where each object is initialized through his own method (with, of course, one query for each record)
A pros: less connections or data traffic.
A cons: duplicated code to retrieve same data, increasing maintenance.
B pros: a standar method to get data, minimizing maintenance.
B cons: most connections or data traffic.
I known that each option can be applied for each context, but I bring this question to a context where we have no idea of the future implications.
Please, give your opinion or suggestions, or tell me where I can find a publication specifically about this issue.
Thanks
|
|
|
|
|
I do not know the oddities of PHP. I'd go for getting all data from the database in one query, and then create the objects from those data: the communication overhead between the application sending the queries and the database is not zero, and with a database running on a different machine things may slow down terribly.
I do not understand why that should cause duplicated code - but that might be a php issue. In C#, methods can be written such that there is no duplicated code required.
|
|
|
|
|
That's the way I'm going on for a while: one query for all.
The duplicate code occurs cause you need one query to retrieve a collection and another query inside the class to retrieve data of a specific record. Both queries retrieve same fields, and if, for some reason, you need to change fields, you must change both queries.
|
|
|
|
|
Use a constant.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
hmmm.. It can be an option.
|
|
|
|
|
Next time, you can post in the PHP forum.
It might get more people to answer your question.
|
|
|
|
|
I was doubted about the right place to post. This question is not specifically about PHP. I know how to do it. PHP is given just as an example. My doubt is about the best method, whatever language we could use.
|
|
|
|
|
Paulo S X Soares wrote: A cons: duplicated code to retrieve same data
Whatever you mean by that it isn't happening unless you are doing something wrong.
|
|
|
|
|
Let's see an example.
I already have the class clsUser. The class has the GetData method, used to retrieve data and fill an $User instance.
$User=new clsUser;
$Result=$User->GetData($ID);
In GetData method there is a query like "select ID,Name,Type,etc... from Users where ID=".$ID.
In other point of the application, I need a list ou users for some purpose. I use a query like "select ID,Name,Type,etc... from Users where <whatever>". See that the fields list is the same in both queries. That's what I call duplicated code.
|
|
|
|
|
Paulo S X Soares wrote: n other point of the application, ...That's what I call duplicated code.
The you should be using a database layer with appropriate idioms - which would avoid that.
|
|
|
|
|
Hi,
I have good development experience, have been in developing projects more than 8 years. But I had been asked to design complete end to end software for a project. It involves designing DB, WCF Server, communication protocols(like xml formats, schema ..etc) . As I am new to design the software, need help on quickly learning on designing the product like DB design and system design. Please help me to learn those aspects quickly to do build software. Please suggest me how to start with , like good books/links/tutorials. Especially on designing DB and web service protocols and communications. I don't have much time to learn though. So your suggestions/guidance will be great help.
Thanks in advance.
|
|
|
|
|
DavJes wrote: Please help me to learn those aspects quickly
It depends on what you mean by "quickly" but in general that isn't going to happen.
If the project is smaller then it probably isn't going to matter but a larger multi-application system isn't going to be designed quickly even if you already knew how to do it.
Myself I used Visio and Word to create my design documents. Visio for diagrams and Word for the actual design.
DavJes wrote: Especially on designing DB
Depends on the data. If you know what the data is and have some experience with database tables then all you need to do for the design is document each table and the values that go in each. You don't need to specify column sizes in the design unless there are requirements that specifically indicate sizes. A diagram with some comments following on each table is sufficient.
DavJes wrote: web service protocols and communications.
This is either trivial or very difficult depending on what the system does and what the methods are supposed to do. But in general you can specify each method is pseudo code and document input and output values. Documenting every method and variation probably isn't needed.
|
|
|
|
|
For database-design, I'll always recommend Normalizing upto BCNF. For webservices, I'd recommend the book "SOA patterns" from Manning. As the title says, it focuses on (design) patterns; using predefined code-structures that can be easily communicated about makes 'architecting' a bit easier. http://www.joelonsoftware.com/[^] has some nice reads touching the topic.
DavJes wrote: I don't have much time to learn though Learn a bit each day; no project starts with a 'perfect' architecture.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
hey thanks for the info. Please just guide me to learn how to do DB design and webservice architecture, I appreciate your help. Any good books, or links which can help. I understand it can't be learnt overnight, but at-least i will make it a point to learn faster.
thanks
|
|
|
|
|
DavJes wrote: Please just guide me to learn how to do DB design and webservice architecture Can't give more pointers on webservices than the book I mentioned. I've listed some resources on database-normalization, which would be the preferred design IMHO.- MSDN[^], explains up to rule #6
- MSDN[^], tips
- Wikipedia[^], with examples and explanation. (Links halfway details on every step)
- SqlMag[^] has a nice introduction on the topic, as well as a link that explains when normalization should be skipped.
Personally, I don't go all the way, just upto BCNF. It's boring and tedious stuff to learn and apply, but I wouldn't recommend it if the advantages don't outweigh the disadvantages; the result will be more confidence in the model used, fewer design-errors, and within a few tables you'll be normalizing your structures without effort.
The reason I recommended Mannings' SOA patterns[^] is because it focuses on the most-used patterns; a pattern is a proven and reusable solution, and that's always a nice thing to have in any architecture. I also recommend it because I read and enjoyed it myself
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Server A hosts the MSMQ queues and is in a DMZ.
Server B is within the corporate network and hosts the workflow services that monitor the MSMQ queues on Server A.
For transactional message processing DTC is used and the article http://support.microsoft.com/kb/918331 says that ports 135 and the dynamic port allocation need to be opened in both ways on the firewall to allow this process to work.
Does this mean that both inbound and outbound requests need to be allowed through the firewall i.e. an inbound request can be made from Server A to Server B that was not initiated from Server B? The Infrastructure team are not keen on allowing inbound access to the corporate network containing Server B from the DMZ. In an ideal world an outbound request would be initiated from Server B and the traffic could flow in both directions once this connection was made but any inbound requests initiated from Server A to Server B would not be allowed.
Sorry my knowledge of firewalls and how the traffic works between machines and the firewall is not too hot so the explanation might be a bit off or if this is the wrong place for the question.
Thanks
John
|
|
|
|
|
John Padgett wrote: Server A hosts the MSMQ queues and is in a DMZ.
You are in for a world of hurt. Traffic flow MSMQ to MSMQ is very complex and thus very hard to figure out even when one tracks down the documentation.
John Padgett wrote: an inbound request can be made from Server A to Server B that was not initiated
from Server B?
Of course not.
John Padgett wrote: Does this mean that both inbound and outbound requests need to be allowed
through the firewall
I supect you would need to test it. I wouldn't suppose that a post from A to B would require outbound but certainly a post that originates on B would.
|
|
|
|
|
Hi,
I have been given the task of exposing our internal software to the outside world.
the software was written in a proprietory language in the early 80s. The software has a hook that you can use to
instantiate forms in the program just as if you were
a real user typing into them.
This hook is abstracted to the point that it offers
1 class to instantiate any of the available forms(300+)
1 function to perform any type of search on the form (it takes one function parameter, an array of objects)
1 function to perform any type of action on the form (it takes one function parameter, an array of objects)
etc...
So I have several concerns (I have been reading a lot, but have little practical experience)
1. Does anyone know of a good resource that would help me out on designing the interface/choosing how to expose?
2. The above hook is simple, however, it would be a nightmare to consume as is. I feel that I have to remove some of the abstraction.
The forms are a 1:1 with database tables,
would I create a 1:1 class:form ?
OR suggestions...?
3. There is no security/authentication built in to this hook, Can someone point me towards a resource on this as well.
|
|
|
|