2012-06-11 38 views
5

Công ty chúng tôi có mọi người trong mọi sự kiện thảm khốc ở Hoa Kỳ và các bộ phận của Canada. Một ví dụ là chúng khá phổ biến ở Katrina ngay sau sự kiện này.Phương pháp tiếp cận để phát triển ứng dụng bị ngắt kết nối

Chúng tôi đang xây dựng một ứng dụng để cải thiện công việc của họ trong lĩnh vực mà có thể là ASP.NET hoặc WPF, và yêu cầu ngắt kết nối làm cho chúng tôi tin rằng nó sẽ là một ứng dụng WPF. Nhân viên của chúng tôi cần có khả năng tạo công việc của họ, cung cấp tất cả dữ liệu về bảo hiểm và đo lường, và lưu nó như thể trong cơ sở dữ liệu cho dù internet có khả dụng hay không.

Vấn đề mà chúng tôi đang cố gắng thực hiện là khi xảy ra sự kiện thảm khốc, người dùng của chúng tôi cần có thể sử dụng ứng dụng mới của chúng tôi ngay cả khi không có internet. (Họ đã ngoại tuyến trong 3 ngày ở Katrina)

Có ai khác phải giải quyết các yêu cầu như thế này và gợi ý về cách họ tiếp cận hoạt động trên các thiết bị chân nhỏ trong khi lưu dữ liệu như thể chúng vẫn được kết nối với dịch vụ phụ trợ và cơ sở dữ liệu ? Chúng tôi cũng phải kết hợp bảo mật vào điều này là tốt, và làm điều đó đủ tốt mà dữ liệu nhập của họ tải vào cơ sở dữ liệu được kết nối mà không có vấn đề.

Mục tiêu lâu dài của chúng tôi là cung cấp ứng dụng này cho các thiết bị Android và iPad cũng như máy tính xách tay. Mong muốn ban đầu của chúng tôi cho ASP.NET là nó đã cho chúng tôi một ứng dụng ngay lập tức cho môi trường máy tính bảng. Trong ứng dụng cũ họ có, họ chạy một máy chủ địa phương, chạy các kết nối từ xa trên máy tính bảng và chạy ứng dụng thông qua máy chủ đầu cuối. Không đẹp. Không đẹp.

Tôi cảm thấy đây là một câu hỏi nghiêm trọng không phải là chủ quan vì vậy hy vọng điều này sẽ không bị xóa.

Kiến trúc hiện tại của chúng tôi ở phía máy chủ là Khuôn khổ thực thể với mẫu lưu trữ, dịch vụ WCF để đáp ứng yêu cầu CRUD trả về các đối tượng truyền dữ liệu tổng hợp và proxy để khách hàng sử dụng.

Tôi muốn nghe ý kiến ​​của các nhà phát triển khác và câu đố thiết kế này.

bổ sung Thông tin bổ sung vào thảo luận

Rất nhiều thông tin hữu ích được cung cấp !!! Tôi sẽ phải xem xét Microsoft Sync chắc chắn. Đối với cơ sở dữ liệu bị ngắt kết nối, tôi sẽ chỉ đặt các bảng danh sách (liệt kê) trong cơ sở dữ liệu ban đầu. Việc làm và, nếu cần thiết, một mục chúng tôi gọi là sách khô, sẽ được thêm vào cho từng khách hàng mà chúng tôi đang trợ giúp. (mặc dù tôi hy vọng internet trở lại vào thời điểm chúng tôi đang làm sạch và sấy khô nhà) Đây là những bảng mà sau đó sẽ cư trú trở lại máy chủ khi chúng tôi có một liên kết ổn định. Trong trường hợp của Katrina chúng tôi cũng bị mất kết nối internet trong văn phòng của chúng tôi có nghĩa là văn phòng cung cấp không có thông tin liên lạc cứu trợ trong ngày là tốt.

Đêm qua tôi nhận ra rằng proxy của khách hàng là chìa khóa cho mọi thứ hoạt động! Khách hàng vẫn không biết thực tế là nó trực tuyến hoặc ngoại tuyến và rời khỏi quá trình đồng bộ hóa trong thư viện đó. Chúng tôi đang khám phá số lượng dữ liệu mà chúng tôi đang nói đến hôm nay. Tôi cũng muốn làm cho nó rõ ràng rằng ASP.NET là một giống như-to-có nhưng một khách hàng dày (thực sự WPF với XAML) có thể kết thúc được trạng thái kết thúc của chúng tôi.

Hiện tại - để có nhiều cập nhật. Các công việc bị ngắt kết nối sẽ được đi đến nhà riêng lẻ bởi một nhượng quyền thương mại duy nhất. Trong thực tế, văn phòng nhà của chúng tôi gửi các thương hiệu cụ thể đến các sự kiện cụ thể. Vì vậy, chúng tôi có một khả năng giảm (nếu có) của vấn đề của nhiều người đang cập nhật một bản ghi. Lý do là họ đang tạo hồ sơ cho mỗi công việc (nhà/văn phòng/doanh nghiệp của người đó) và chỉ có một thương hiệu đó sẽ đối phó với nó.Tất nhiên điều này cũng có nghĩa là nếu chúng bị ngắt kết nối trong nhiều ngày mà thiết bị tạo ra công việc (hồ sơ của ai, ở đâu, điều kiện, công ty bảo hiểm, vv) cũng là thiết bị duy nhất biết về công việc. Nhưng điều đó có thể được sống với. Trong thực tế, chúng tôi có thể có một cơ sở để đồng bộ hóa các thiết bị nhượng quyền thương mại trên một trung tâm.

Tôi mong muốn được nghe thêm các câu chuyện về cách bạn đã triển khai môi trường bị ngắt kết nối của mình.

Xin cảm ơn !!!

Nhìn vào công nghệ mới từ Microsoft

tôi được đạo diễn nhìn vào một đoạn video từ TechEd 2012 và nghĩ rằng tôi có thể có một câu trả lời. Cuộc nói chuyện đã được sử dụng ASP.NET và MVC4 cùng với 2 thư viện cho hành vi bị ngắt kết nối. Lúc đầu, tôi nghĩ rằng nó sẽ là tuyệt vời nhưng sau đó vì nó tiếp tục nó lo lắng cho tôi khá một chút.

Đầu tiên việc sử dụng chương trình phụ trợ javascript để hỗ trợ I/O bị ngắt kết nối không tạo ra sự tự tin. Là một anh chàng biên dịch (và một người đã viết hai ngôn ngữ diễn giải), tôi thực sự không thích có một mô hình kinh doanh quan trọng phụ thuộc vào javascript diễn giải. Và kịch bản ở đó! Nó có thể là tôi nhưng nó chỉ làm tôi rùng mình.

Sau đó, họ hiển thị mô hình lập trình "tuyệt vời" (???) của họ khi ViewModel của bạn tồn tại dưới dạng javascript. Tôi không quan tâm đến một ứng dụng (asp.net và javascript) có thể được, và cũng có thể được (vì thiếu intellisense) được viết trong notepad.

Không có hành vi phạm tội đối với bất kỳ người yêu thích asp nào, nhưng chương trình C# được viết bằng văn bản và kiểm tra kiểu cho phép tôi tự tin hơn về phần mềm so với nội dung được viết với hy vọng và lời cầu nguyện rằng không gian tên lớp đã được nhập đúng cách mà không có bất kỳ phương tiện nào kiểm tra chéo. Tôi đã nhìn thấy quá nhiều giờ gỡ lỗi tìm kiếm một lỗi đã kết thúc trong một không gian tên khổng lồ với transposed tức là trong tên của nó. Tôi chạy suy nghĩ của tôi qua các nhà phát triển cao cấp khác trong nhóm của tôi và tất cả chúng tôi đều đồng thuận về công nghệ này.

Nhưng chúng tôi tiếp tục xem xét. (Tôi cảm thấy điều này ngày càng trở nên một cuốn nhật ký hơn là một câu hỏi) :)

+0

Có lý do nào phải là ứng dụng asp.net chứ không phải độc lập có thể thăm dò định kỳ hoạt động và làm đồng bộ hóa lười biếng với tập dữ liệu chính ở đâu đó? – devshorts

+0

Chìa khóa cho điều này sẽ là sử dụng một cái gì đó giống như một dịch vụ web. Bạn sẽ sử dụng nhiều công nghệ khác nhau để hỗ trợ nhiều thiết bị mà bạn có thể phải chạy ứng dụng này, nhưng một điều là không đổi, một cổng giao tiếp giữa thiết bị và máy chủ sẽ là dịch vụ web của bạn. Mỗi khách hàng có thể có một cơ sở dữ liệu cục bộ như sql lite. Ứng dụng sẽ thăm dò ý kiến ​​các thay đổi bằng cách sử dụng một số kỹ thuật đồng bộ hóa tiêu chuẩn. Tuy nhiên, mỗi thiết bị sẽ lấy các thay đổi 'mới nhất' từ dịch vụ web kể từ ngày đồng bộ cuối cùng của họ và thay đổi hoặc thêm các thay đổi có liên quan bằng các phương pháp web khác nhau trong dịch vụ web của bạn – Jeremy

+1

Làm cách nào để lưu trữ dữ liệu của bạn. Sql Server? –

Trả lời

2

Trông giống như một ví dụ hoàn hảo cho Microsoft Sync Framework

http://msdn.microsoft.com/en-us/sync/bb736753.aspx

Một nền tảng đồng bộ hóa toàn diện cho phép cộng tác và truy cập ngoại tuyến cho các ứng dụng, dịch vụ và thiết bị có hỗ trợ cho bất kỳ loại dữ liệu nào, bất kỳ lưu trữ dữ liệu nào, bất kỳ giao thức truyền nào và bất kỳ cấu trúc liên kết mạng nào.

+0

Tôi đã đọc tài liệu cơ bản. Synch là thông qua một máy chủ web và bạn không cần phải mở cổng 1433? – Paparazzi

+0

Bạn có thể sử dụng cổng SQL Server 1433 hoặc WCF (80, 443 hoặc bất kỳ thứ gì bạn chỉ định trong cấu hình WCF). Sync Framework thực sự là không thuyết phục từ môi trường truyền tải. –

1

Tôi thường thấy rằng việc xây dựng một khung trọng lượng nhẹ để phù hợp với nhu cầu cụ thể của tôi sẽ mang lại lợi ích cho tôi nhiều hơn so với sử dụng hiện có. Tuy nhiên, luôn luôn nhìn vào những gì có sẵn và cân nhắc những thuận và chống trước khi đưa ra quyết định đó.

Tôi chưa sử dụng Microsoft Sync Framework, nhưng có vẻ như đó là cách tốt nhất để nghiên cứu trước. Nếu bạn có Sql Server Standard (hoặc một số phiên bản khác không phải là phiên bản Express) thì sao chép cũng có thể là một tùy chọn.

Nếu bạn muốn phát triển giải pháp tự trồng của riêng mình, hãy đảm bảo đặt trường lastupdated và dateadded trên bất kỳ bảng nào cần đồng bộ hóa. Nó không 'âm thanh' như kịch bản của bạn sẽ được gánh nặng bởi các vấn đề tương tranh (tức là nếu người A và B đều sửa đổi một trường cùng một lúc, ai sẽ thắng?).Nếu đó là trường hợp sau đó phát triển giải pháp nhẹ của riêng bạn sẽ khá đơn giản.

Như Jeremy đã chỉ ra, bạn sẽ cần một cách để có được những thay đổi. Ngoài việc sử dụng dịch vụ web, bạn cũng có thể sử dụng WCF tương tự như dịch vụ web theo một số cách. Nhưng sự thiên vị cá nhân của tôi sẽ hướng tới việc truy cập máy chủ SQL từ xa qua internet. Nhược điểm của giải pháp đó được thêm vào mối quan tâm về bảo mật, trong khi phía trên là giảm chi phí phát triển (tức là phát triển nhanh hơn/dễ dàng hơn và ít bảo trì hơn theo thời gian). Ngoài ra, giải pháp SQL trực tiếp cũng giả định rằng đây là ứng dụng nội bộ ... bạn chịu trách nhiệm về mọi phát triển và không làm việc với các bên thứ ba cần quyền truy cập vào dữ liệu của bạn và sẽ không được phép truy cập dữ liệu theo cách này .

1

Không thực sự là câu trả lời đầy đủ nhưng quá nhiều cho nhận xét.

Tôi có hai ứng dụng đồng bộ hóa một chiều và hai cách khác.

Tôi thực hiện một cách đồng bộ hóa với ứng dụng khách để ngắt kết nối. Tại máy chủ SQL Server đầy đủ và tại máy khách Compact Edition. TimeStamp là một quận trưởng để tìm bất kỳ hàng nào cần được đồng bộ hóa. Tôi cũng không sao chép toàn bộ cơ sở dữ liệu vì một số bảng lớn nhất là không cần thiết. Việc sử dụng phổ biến là người dùng đánh dấu các bản ghi được xác định mà họ muốn đồng bộ hóa.

Nếu đồng bộ thực hiện những gì bạn cần tuyệt vời +1 cho Jakub. Đối với tôi, tôi không có tùy chọn để đồng bộ toàn bộ MSSQL cả dựa trên kích thước và bảo mật.

Có một ứng dụng nhỏ hơn đồng bộ theo hai cách nhưng trong trường hợp này nó có các vùng và cập nhật chỉ trong vùng. Vì vậy, một vùng chỉ đồng bộ dữ liệu của chúng và trong chế độ ngắt kết nối, chúng chỉ có thể thêm các bản ghi mới. Cập nhật cho một bản ghi hiện có phải được thực hiện trong chế độ kết nối. Điều đó thật dễ thương. Trong trường hợp đó MSSQL cho chủ và sử dụng XML cho khách hàng.

Không có tin tức cho bạn nhưng phần cứng của đồng bộ hóa thô là hai bên có thể đã thêm hoặc sửa đổi cùng một bản ghi.

+1

Microsoft Sync Framework không đồng bộ hóa chỉ toàn bộ cơ sở dữ liệu. Bạn chỉ có thể đồng bộ hóa các bảng nhất định và các bản ghi nhất định từ các bảng. Nó cũng giúp bạn quản lý xung đột. –

+0

@JakubKonecki Tôi sẽ xem xét lại Khung công tác đồng bộ hóa. Tôi đã đưa cho bạn một +1. – Paparazzi

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