Я унаследовал приложение, которое логически разделено на 4 уровня, но физически находится на двух уровнях. 4 логических уровня:
- сайт asp.net
- бизнес-логика в сборке C # .Net (ссылка на веб-сайте)
- доступ к данным сборка c # - классы, сгенерированные инструментом Cossmith (на основании бизнес-логики)
- база данных sql сервера
Пример того, как веб-сайт взаимодействует с бизнес-уровнем:
Booking b = new Booking();
b.property1 = x;
b.property2 = y;
result = b.method();
т. он устанавливает данные об открытых свойствах класса biz, затем выполняет метод, который, в свою очередь, читает из свойств.
К сожалению, существует множество свойств, и некоторые из них не являются базовыми типами, они являются другими объектами, например, объект Booking содержит коллекцию объектов Vouchers
Мне нужно сделать уровни 2-4 доступными для нового пользовательского интерфейса (совсем другой веб-сайт, который будет обслуживать киоски в магазине).
Я бы хотел раскрыть бизнес-уровень через WCF. Я создал интерфейс IBooking, определил сигнатуры методов и декортировал их с помощью [OperationContract] и т. Д. Я застрял в том, как управлять данными. Я понимаю, что мог бы определить контракт данных, чтобы соответствовать различным общедоступным свойствам объекта Booking, но тогда мне нужно было бы внести существенные изменения в существующий веб-сайт - вместо того, чтобы устанавливать свойства и вызывать метод без параметров, которые необходимо будет заполнить экземпляр контракта данных и передача его в качестве параметра для каждого вызова метода.
Может кто-нибудь посоветовать, как лучше подойти к этому, пожалуйста. Я могу внести изменения в существующий веб-сайт, но я хотел бы свести их к минимуму.
Большое спасибо,
Rob.