2010-01-31 31 views
5

Tôi đang tìm một số đầu vào về kiến ​​trúc dự án hiện tại của mình. Có ba thành phần: Máy chủ, Máy tính để bàn và Thiết bị di động.Trợ giúp thiết kế kiến ​​trúc

tôi có 2 mục tiêu:.

1) Gửi dữ liệu (Khoảng không quá 100 KB của văn bản) từ máy tính để bàn (đa nền tảng ứng dụng client chạy trên Windows XP/Vista/7, và Mac OS X) đến một máy chủ (Windows Server 2008, IIS 7, WCF dịch vụ RESTful) để lưu trong cơ sở dữ liệu (Sql Server). Các dịch vụ cần phải có khả năng mở rộng vì số lượng thiết bị máy tính để bàn và tần suất họ gửi dữ liệu chưa được biết.

2) Dịch vụ truy xuất dữ liệu từ cơ sở dữ liệu (Sql Server) và gửi tới thiết bị di động (ứng dụng Iphone và Android. Kích thước tin nhắn không quá 100 KB văn bản). Dịch vụ cần phải có thể mở rộng vì số lượng thiết bị di động và tần suất mà chúng kết nối không xác định.

giải pháp đề xuất của tôi:

Server Side (Sql Server và Windows Server 2008): Tôi đang nhìn vào một WCF dịch vụ JSON RESTful để giao tiếp với máy tính để bàn App (s) và Mobile App (s) . Tôi thích WCF vì tôi thành thạo C#, có một số kinh nghiệm thực hiện WCF, sau khi thực hiện một số nghiên cứu, tất cả các công nghệ được sử dụng cho các nền tảng (Windows XP/Vista/7 và Mac OS X) có thể dễ dàng giao tiếp với dịch vụ WCF RESTful.

  • Bất kỳ vấn đề cơ bản cấp cao nào với dịch vụ WCF trong trường hợp này?
  • Tôi chỉ triển khai WCF trên máy Windows Server 2003 với ~ 800 thiết bị kết nối sau mỗi 15 phút. Máy chủ là máy chủ vật lý trong nhà chạy trên mạng riêng. Tôi cần giải pháp này để được lưu trữ và có thể mở rộng. Bất kỳ khuyến nghị nào để lưu trữ Windows Server 2008? Có công nghệ nào tốt hơn để lưu trữ dịch vụ không? (Tôi không quen với cách thức hoạt động của đám mây)

Dịch vụ sẽ lưu và truy xuất dữ liệu từ máy chủ SQL. Tôi muốn sử dụng LINQ to SQL làm lớp truy cập dữ liệu của mình. Đó là sự hiểu biết của tôi có lệ phí cấp phép lớn gắn liền với máy chủ SQL vì vậy tôi có thể cần phải đi với SQL Server Express cho bây giờ.

  • Tôi muốn giữ các dịch vụ WCF và cơ sở dữ liệu được lưu trữ riêng biệt (2 máy khác nhau). Bất kỳ khuyến nghị để lưu trữ máy chủ sql (hoặc thể hiện)? Có dịch vụ lưu trữ nào có thể mở rộng tốt hơn cho cơ sở dữ liệu của tôi không? Nó có ý nghĩa để giữ chúng trên 2 máy khác nhau không?

Desktop (Client Side) Tôi cần thiết để phát triển cho Windows XP/Vista/7 và Mac OS X. tôi dự định viết một ứng dụng Net để chạy trên máy windows (s). Tôi "vẫn còn trong không khí nếu tôi sẽ viết (và tìm hiểu: P) XCode hoặc thử mono. Bất kỳ ý tưởng nền tảng nào?

  • Tôi có thể gặp phải bất kỳ vấn đề cơ bản nào khi tải ứng dụng dành cho máy tính để bàn để nói chuyện với các dịch vụ RESTful WCF của tôi?

Mobile Applicaitons tôi cần thiết để phát triển cho iPhone và Android. có rất nhiều ví dụ về làm dịch vụ RESTful WCF cuộc gọi sử dụng Objective C và Android SDK. tôi' m xem xét việc thử một nền tảng chéo (ví dụ: Appcelerator).Từ một mức độ cao, nó xuất hiện những nền tảng di động chéo này đã xây dựng một lớp kịch bản Java hoạt động với cả iPhone và Android!

  • Bất kỳ suy nghĩ nào về việc sử dụng công nghệ nền tảng để viết MỘT ứng dụng di động chạy trên iPhone và Android?

  • Bất kỳ vấn đề cơ bản nào gọi dịch vụ WCF RESTful trong javascript?

Xin lỗi vì bài đăng hơi dài. Tôi chưa bao giờ thiết kế một giải pháp có kích thước này. Tất cả phản hồi đều được đánh giá cao.

Cảm ơn bạn!

+0

[Làm thế nào để suy nghĩ một thiết kế thống nhất cho kiến ​​trúc đa thiết bị?] (Http://izlooite.blogspot.com/2011/07/how-to-think-unified-design-for-multi.html) –

Trả lời

2

Vì bạn rõ ràng muốn sử dụng các công nghệ của Microsoft - các đề xuất về Mono có thể có ý nghĩa với bạn và chắc chắn sẽ làm mọi thứ dễ dàng hơn. Tuy nhiên, tôi nghĩ bạn có thể thấy rằng bạn thỏa hiệp các yếu tố của trải nghiệm người dùng cho người dùng Mac và iPhone, điều này không lý tưởng vì những người dùng này có xu hướng có những kỳ vọng cao nhất cho trải nghiệm người dùng tuyệt vời.

Tôi hiểu rằng chúng ta không sống trong một thế giới lý tưởng, nhưng nếu chúng tôi làm bạn sẽ phát triển một khách hàng riêng biệt cho mỗi nền tảng - được tối ưu hóa theo nhu cầu của từng nền tảng. Trừ khi ứng dụng của bạn đang thực hiện rất nhiều thao tác dữ liệu, lớp dữ liệu giờ đây được trừu tượng hóa với máy chủ viw giao diện JSON của bạn, do đó bạn sẽ không thu được nhiều lợi ích từ việc chia sẻ các đối tượng dữ liệu trên các triển khai.

Có vẻ như bạn đang triển khai dự án trong một nhóm nhỏ (chính bạn?) Thì tôi khuyên bạn nên xem xét triển khai giải pháp web với javascript HTML giao tiếp với máy chủ qua JSON.

Tùy chọn khác là bạn sử dụng máy khách flex/không khí trên windows và mac và flash trên giải pháp android và Adobe để biên dịch flex/không khí thành mã iPhone.

Chúc may mắn.

0

Đối với phía khách hàng của bạn, bạn có thể xem xét sử dụng Appclerator vì nó sẽ chạy trên tất cả các nền tảng mà bạn cần với ít hoặc không có mã thêm, và nó được thiết kế để được sử dụng cho các ứng dụng loại ứng dụng web

0

Bạn nên xem xét MonoTouch cho iphone. Bạn sẽ có thể chia sẻ nhiều mã máy tính để bàn. Tôi sẽ sử dụng Mono trên máy Mac vì lý do tương tự. Android là người đàn ông kỳ quặc. Cuối cùng, ai đó có thể tạo ra một cái gì đó như MonoTouch cho Android nhưng không sớm đủ để giúp bạn ra ngoài.

Các vấn đề liên quan